diff --git a/addons/gdUnit4/GdUnitRunner.cfg b/addons/gdUnit4/GdUnitRunner.cfg new file mode 100644 index 0000000..b91a3d7 --- /dev/null +++ b/addons/gdUnit4/GdUnitRunner.cfg @@ -0,0 +1 @@ +{"included":{"res://tests/scenes/game_tests.gd":["test_save_game"]},"server_port":31002,"skipped":{},"version":"1.0"} \ No newline at end of file diff --git a/addons/gdUnit4/LICENSE b/addons/gdUnit4/LICENSE new file mode 100644 index 0000000..8c60d13 --- /dev/null +++ b/addons/gdUnit4/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Mike Schulze + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/addons/gdUnit4/bin/GdUnitBuildTool.gd b/addons/gdUnit4/bin/GdUnitBuildTool.gd new file mode 100644 index 0000000..c4ef66c --- /dev/null +++ b/addons/gdUnit4/bin/GdUnitBuildTool.gd @@ -0,0 +1,111 @@ +#!/usr/bin/env -S godot -s +extends SceneTree + +enum { + INIT, + PROCESSING, + EXIT +} + +const RETURN_SUCCESS = 0 +const RETURN_ERROR = 100 +const RETURN_WARNING = 101 + +var _console := CmdConsole.new() +var _cmd_options: = CmdOptions.new([ + CmdOption.new( + "-scp, --src_class_path", + "-scp ", + "The full class path of the source file.", + TYPE_STRING + ), + CmdOption.new( + "-scl, --src_class_line", + "-scl ", + "The selected line number to generate test case.", + TYPE_INT + ) +]) + +var _status := INIT +var _source_file :String = "" +var _source_line :int = -1 + + +func _init() -> void: + var cmd_parser := CmdArgumentParser.new(_cmd_options, "GdUnitBuildTool.gd") + var result := cmd_parser.parse(OS.get_cmdline_args()) + if result.is_error(): + show_options() + exit(RETURN_ERROR, result.error_message()); + return + + var cmd_options :Array[CmdCommand] = result.value() + for cmd in cmd_options: + if cmd.name() == '-scp': + _source_file = cmd.arguments()[0] + _source_file = ProjectSettings.localize_path(ProjectSettings.localize_path(_source_file)) + if cmd.name() == '-scl': + _source_line = int(cmd.arguments()[0]) + # verify required arguments + if _source_file == "": + exit(RETURN_ERROR, "missing required argument -scp ") + return + if _source_line == -1: + exit(RETURN_ERROR, "missing required argument -scl ") + return + _status = PROCESSING + + +func _idle(_delta :float) -> void: + if _status == PROCESSING: + var script := ResourceLoader.load(_source_file) as Script + if script == null: + exit(RETURN_ERROR, "Can't load source file %s!" % _source_file) + var result := GdUnitTestSuiteBuilder.create(script, _source_line) + if result.is_error(): + print_json_error(result.error_message()) + exit(RETURN_ERROR, result.error_message()) + return + _console.prints_color("Added testcase: %s" % result.value(), Color.CORNFLOWER_BLUE) + print_json_result(result.value()) + exit(RETURN_SUCCESS) + + +func exit(code :int, message :String = "") -> void: + _status = EXIT + if code == RETURN_ERROR: + if not message.is_empty(): + _console.prints_error(message) + _console.prints_error("Abnormal exit with %d" % code) + else: + _console.prints_color("Exit code: %d" % RETURN_SUCCESS, Color.DARK_SALMON) + quit(code) + + +func print_json_result(result :Dictionary) -> void: + # convert back to system path + var path := ProjectSettings.globalize_path(result["path"]); + var json := 'JSON_RESULT:{"TestCases" : [{"line":%d, "path": "%s"}]}' % [result["line"], path] + prints(json) + + +func print_json_error(error :String) -> void: + prints('JSON_RESULT:{"Error" : "%s"}' % error) + + +func show_options() -> void: + _console.prints_color(" Usage:", Color.DARK_SALMON) + _console.prints_color(" build -scp -scl ", Color.DARK_SALMON) + _console.prints_color("-- Options ---------------------------------------------------------------------------------------", + Color.DARK_SALMON).new_line() + for option in _cmd_options.default_options(): + descripe_option(option) + + +func descripe_option(cmd_option :CmdOption) -> void: + _console.print_color(" %-40s" % str(cmd_option.commands()), Color.CORNFLOWER_BLUE) + _console.prints_color(cmd_option.description(), Color.LIGHT_GREEN) + if not cmd_option.help().is_empty(): + _console.prints_color("%-4s %s" % ["", cmd_option.help()], Color.DARK_TURQUOISE) + _console.new_line() diff --git a/addons/gdUnit4/bin/GdUnitCmdTool.gd b/addons/gdUnit4/bin/GdUnitCmdTool.gd new file mode 100644 index 0000000..0919520 --- /dev/null +++ b/addons/gdUnit4/bin/GdUnitCmdTool.gd @@ -0,0 +1,622 @@ +#!/usr/bin/env -S godot -s +extends SceneTree + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + + +#warning-ignore-all:return_value_discarded +class CLIRunner: + extends Node + + enum { + READY, + INIT, + RUN, + STOP, + EXIT + } + + const DEFAULT_REPORT_COUNT = 20 + const RETURN_SUCCESS = 0 + const RETURN_ERROR = 100 + const RETURN_ERROR_HEADLESS_NOT_SUPPORTED = 103 + const RETURN_ERROR_GODOT_VERSION_NOT_SUPPORTED = 104 + const RETURN_WARNING = 101 + + var _state := READY + var _test_suites_to_process: Array + var _executor :Variant + var _cs_executor :Variant + var _report: GdUnitHtmlReport + var _report_dir: String + var _report_max: int = DEFAULT_REPORT_COUNT + var _headless_mode_ignore := false + var _runner_config := GdUnitRunnerConfig.new() + var _runner_config_file := "" + var _console := CmdConsole.new() + var _cmd_options := CmdOptions.new([ + CmdOption.new( + "-a, --add", + "-a ", + "Adds the given test suite or directory to the execution pipeline.", + TYPE_STRING + ), + CmdOption.new( + "-i, --ignore", + "-i ", + "Adds the given test suite or test case to the ignore list.", + TYPE_STRING + ), + CmdOption.new( + "-c, --continue", + "", + """By default GdUnit will abort checked first test failure to be fail fast, + instead of stop after first failure you can use this option to run the complete test set.""".dedent() + ), + CmdOption.new( + "-conf, --config", + "-conf [testconfiguration.cfg]", + "Run all tests by given test configuration. Default is 'GdUnitRunner.cfg'", + TYPE_STRING, + true + ), + CmdOption.new( + "-help", "", + "Shows this help message." + ), + CmdOption.new("--help-advanced", "", + "Shows advanced options." + ) + ], + [ + # advanced options + CmdOption.new( + "-rd, --report-directory", + "-rd ", + "Specifies the output directory in which the reports are to be written. The default is res://reports/.", + TYPE_STRING, + true + ), + CmdOption.new( + "-rc, --report-count", + "-rc ", + "Specifies how many reports are saved before they are deleted. The default is %s." % str(DEFAULT_REPORT_COUNT), + TYPE_INT, + true + ), + #CmdOption.new("--list-suites", "--list-suites [directory]", "Lists all test suites located in the given directory.", TYPE_STRING), + #CmdOption.new("--describe-suite", "--describe-suite ", "Shows the description of selected test suite.", TYPE_STRING), + CmdOption.new( + "--info", "", + "Shows the GdUnit version info" + ), + CmdOption.new( + "--selftest", "", + "Runs the GdUnit self test" + ), + CmdOption.new( + "--ignoreHeadlessMode", + "--ignoreHeadlessMode", + "By default, running GdUnit4 in headless mode is not allowed. You can switch off the headless mode check by set this property." + ), + ]) + + + func _ready() -> void: + _state = INIT + _report_dir = GdUnitFileAccess.current_dir() + "reports" + _executor = load("res://addons/gdUnit4/src/core/execution/GdUnitTestSuiteExecutor.gd").new() + # stop checked first test failure to fail fast + _executor.fail_fast(true) + if GdUnit4CSharpApiLoader.is_mono_supported(): + prints("GdUnit4Net version '%s' loaded." % GdUnit4CSharpApiLoader.version()) + _cs_executor = GdUnit4CSharpApiLoader.create_executor(self) + var err := GdUnitSignals.instance().gdunit_event.connect(_on_gdunit_event) + if err != OK: + prints("gdUnitSignals failed") + push_error("Error checked startup, can't connect executor for 'send_event'") + quit(RETURN_ERROR) + + + func _notification(what: int) -> void: + if what == NOTIFICATION_PREDELETE: + prints("Finallize .. done") + + + func _process(_delta :float) -> void: + match _state: + INIT: + init_gd_unit() + _state = RUN + RUN: + # all test suites executed + if _test_suites_to_process.is_empty(): + _state = STOP + else: + set_process(false) + # process next test suite + var test_suite := _test_suites_to_process.pop_front() as Node + if _cs_executor != null and _cs_executor.IsExecutable(test_suite): + _cs_executor.Execute(test_suite) + await _cs_executor.ExecutionCompleted + else: + await _executor.execute(test_suite) + set_process(true) + STOP: + _state = EXIT + _on_gdunit_event(GdUnitStop.new()) + quit(report_exit_code(_report)) + + + func quit(code: int) -> void: + _cs_executor = null + GdUnitTools.dispose_all() + await GdUnitMemoryObserver.gc_on_guarded_instances() + await get_tree().physics_frame + get_tree().quit(code) + + + func set_report_dir(path: String) -> void: + _report_dir = ProjectSettings.globalize_path(GdUnitFileAccess.make_qualified_path(path)) + _console.prints_color( + "Set write reports to %s" % _report_dir, + Color.DEEP_SKY_BLUE + ) + + + func set_report_count(count: String) -> void: + var report_count := count.to_int() + if report_count < 1: + _console.prints_error( + "Invalid report history count '%s' set back to default %d" + % [count, DEFAULT_REPORT_COUNT] + ) + _report_max = DEFAULT_REPORT_COUNT + else: + _console.prints_color( + "Set report history count to %s" % count, + Color.DEEP_SKY_BLUE + ) + _report_max = report_count + + + func disable_fail_fast() -> void: + _console.prints_color( + "Disabled fail fast!", + Color.DEEP_SKY_BLUE + ) + _executor.fail_fast(false) + + + func run_self_test() -> void: + _console.prints_color( + "Run GdUnit4 self tests.", + Color.DEEP_SKY_BLUE + ) + disable_fail_fast() + _runner_config.self_test() + + + func show_version() -> void: + _console.prints_color( + "Godot %s" % Engine.get_version_info().get("string"), + Color.DARK_SALMON + ) + var config := ConfigFile.new() + config.load("addons/gdUnit4/plugin.cfg") + _console.prints_color( + "GdUnit4 %s" % config.get_value("plugin", "version"), + Color.DARK_SALMON + ) + quit(RETURN_SUCCESS) + + + func check_headless_mode() -> void: + _headless_mode_ignore = true + + + func show_options(show_advanced: bool = false) -> void: + _console.prints_color( + """ + Usage: + runtest -a + runtest -a -i + """.dedent(), + Color.DARK_SALMON + ).prints_color( + "-- Options ---------------------------------------------------------------------------------------", + Color.DARK_SALMON + ).new_line() + for option in _cmd_options.default_options(): + descripe_option(option) + if show_advanced: + _console.prints_color( + "-- Advanced options --------------------------------------------------------------------------", + Color.DARK_SALMON + ).new_line() + for option in _cmd_options.advanced_options(): + descripe_option(option) + + + func descripe_option(cmd_option: CmdOption) -> void: + _console.print_color( + " %-40s" % str(cmd_option.commands()), + Color.CORNFLOWER_BLUE + ) + _console.prints_color( + cmd_option.description(), + Color.LIGHT_GREEN + ) + if not cmd_option.help().is_empty(): + _console.prints_color( + "%-4s %s" % ["", cmd_option.help()], + Color.DARK_TURQUOISE + ) + _console.new_line() + + + func load_test_config(path := GdUnitRunnerConfig.CONFIG_FILE) -> void: + _console.print_color( + "Loading test configuration %s\n" % path, + Color.CORNFLOWER_BLUE + ) + _runner_config_file = path + _runner_config.load_config(path) + + + func show_help() -> void: + show_options() + quit(RETURN_SUCCESS) + + + func show_advanced_help() -> void: + show_options(true) + quit(RETURN_SUCCESS) + + + func init_gd_unit() -> void: + _console.prints_color( + """ + -------------------------------------------------------------------------------------------------- + GdUnit4 Comandline Tool + --------------------------------------------------------------------------------------------------""".dedent(), + Color.DARK_SALMON + ).new_line() + + var cmd_parser := CmdArgumentParser.new(_cmd_options, "GdUnitCmdTool.gd") + var result := cmd_parser.parse(OS.get_cmdline_args()) + if result.is_error(): + show_options() + _console.prints_error(result.error_message()) + _console.prints_error("Abnormal exit with %d" % RETURN_ERROR) + _state = STOP + quit(RETURN_ERROR) + return + if result.is_empty(): + show_help() + return + # build runner config by given commands + var commands :Array[CmdCommand] = [] + commands.append_array(result.value()) + result = ( + CmdCommandHandler.new(_cmd_options) + .register_cb("-help", Callable(self, "show_help")) + .register_cb("--help-advanced", Callable(self, "show_advanced_help")) + .register_cb("-a", Callable(_runner_config, "add_test_suite")) + .register_cbv("-a", Callable(_runner_config, "add_test_suites")) + .register_cb("-i", Callable(_runner_config, "skip_test_suite")) + .register_cbv("-i", Callable(_runner_config, "skip_test_suites")) + .register_cb("-rd", set_report_dir) + .register_cb("-rc", set_report_count) + .register_cb("--selftest", run_self_test) + .register_cb("-c", disable_fail_fast) + .register_cb("-conf", load_test_config) + .register_cb("--info", show_version) + .register_cb("--ignoreHeadlessMode", check_headless_mode) + .execute(commands) + ) + if result.is_error(): + _console.prints_error(result.error_message()) + _state = STOP + quit(RETURN_ERROR) + + if DisplayServer.get_name() == "headless": + if _headless_mode_ignore: + _console.prints_warning(""" + Headless mode is ignored by option '--ignoreHeadlessMode'" + + Please note that tests that use UI interaction do not work correctly in headless mode. + Godot 'InputEvents' are not transported by the Godot engine in headless mode and therefore + have no effect in the test! + """.dedent() + ).new_line() + else: + _console.prints_error(""" + Headless mode is not supported! + + Please note that tests that use UI interaction do not work correctly in headless mode. + Godot 'InputEvents' are not transported by the Godot engine in headless mode and therefore + have no effect in the test! + + You can run with '--ignoreHeadlessMode' to swtich off this check. + """.dedent() + ).prints_error( + "Abnormal exit with %d" % RETURN_ERROR_HEADLESS_NOT_SUPPORTED + ) + quit(RETURN_ERROR_HEADLESS_NOT_SUPPORTED) + return + + _test_suites_to_process = load_testsuites(_runner_config) + if _test_suites_to_process.is_empty(): + _console.prints_warning("No test suites found, abort test run!") + _console.prints_color("Exit code: %d" % RETURN_SUCCESS, Color.DARK_SALMON) + _state = STOP + quit(RETURN_SUCCESS) + var total_test_count := _collect_test_case_count(_test_suites_to_process) + _on_gdunit_event(GdUnitInit.new(_test_suites_to_process.size(), total_test_count)) + + + func load_testsuites(config: GdUnitRunnerConfig) -> Array[Node]: + var test_suites_to_process: Array[Node] = [] + # Dictionary[String, Dictionary[String, PackedStringArray]] + var to_execute := config.to_execute() + # scan for the requested test suites + var ts_scanner := GdUnitTestSuiteScanner.new() + for as_resource_path in to_execute.keys() as Array[String]: + var selected_tests: PackedStringArray = to_execute.get(as_resource_path) + var scaned_suites := ts_scanner.scan(as_resource_path) + skip_test_case(scaned_suites, selected_tests) + test_suites_to_process.append_array(scaned_suites) + skip_suites(test_suites_to_process, config) + return test_suites_to_process + + + func skip_test_case(test_suites: Array[Node], test_case_names: Array[String]) -> void: + if test_case_names.is_empty(): + return + for test_suite in test_suites: + for test_case in test_suite.get_children(): + if not test_case_names.has(test_case.get_name()): + test_suite.remove_child(test_case) + test_case.free() + + + func skip_suites(test_suites: Array[Node], config: GdUnitRunnerConfig) -> void: + var skipped := config.skipped() + if skipped.is_empty(): + return + _console.prints_warning("Found excluded test suite's configured at '%s'" % _runner_config_file) + for test_suite in test_suites: + # skipp c# testsuites for now + if test_suite.get_script() == null: + continue + skip_suite(test_suite, skipped) + + + # Dictionary[String, PackedStringArray] + func skip_suite(test_suite: Node, skipped: Dictionary) -> void: + var skipped_suites :Array[String] = skipped.keys() + var suite_name := test_suite.get_name() + var test_suite_path: String = ( + test_suite.get_meta("ResourcePath") if test_suite.get_script() == null + else test_suite.get_script().resource_path + ) + for suite_to_skip in skipped_suites: + # if suite skipped by path or name + if ( + suite_to_skip == test_suite_path + or (suite_to_skip.is_valid_filename() and suite_to_skip == suite_name) + ): + var skipped_tests: Array[String] = skipped.get(suite_to_skip) + var skip_reason := "Excluded by config '%s'" % _runner_config_file + # if no tests skipped test the complete suite is skipped + if skipped_tests.is_empty(): + _console.prints_warning("Mark test suite '%s' as skipped!" % suite_to_skip) + test_suite.__is_skipped = true + test_suite.__skip_reason = skip_reason + else: + # skip tests + for test_to_skip in skipped_tests: + var test_case: _TestCase = test_suite.find_child(test_to_skip, true, false) + if test_case: + test_case.skip(true, skip_reason) + _console.prints_warning("Mark test case '%s':%s as skipped" % [suite_to_skip, test_to_skip]) + else: + _console.prints_error( + "Can't skip test '%s' checked test suite '%s', no test with given name exists!" + % [test_to_skip, suite_to_skip] + ) + + + func _collect_test_case_count(test_suites: Array[Node]) -> int: + var total: int = 0 + for test_suite in test_suites: + total += test_suite.get_child_count() + return total + + + # gdlint: disable=function-name + func PublishEvent(data: Dictionary) -> void: + _on_gdunit_event(GdUnitEvent.new().deserialize(data)) + + + func _on_gdunit_event(event: GdUnitEvent) -> void: + match event.type(): + GdUnitEvent.INIT: + _report = GdUnitHtmlReport.new(_report_dir) + GdUnitEvent.STOP: + if _report == null: + _report = GdUnitHtmlReport.new(_report_dir) + var report_path := _report.write() + _report.delete_history(_report_max) + JUnitXmlReport.new(_report._report_path, _report.iteration()).write(_report) + _console.prints_color( + build_executed_test_suite_msg(_report.suite_executed_count(), _report.suite_count()), + Color.DARK_SALMON + ).prints_color( + build_executed_test_case_msg(_report.test_executed_count(), _report.test_count()), + Color.DARK_SALMON + ).prints_color( + "Total time: %s" % LocalTime.elapsed(_report.duration()), + Color.DARK_SALMON + ).prints_color( + "Open Report at: file://%s" % report_path, + Color.CORNFLOWER_BLUE + ) + GdUnitEvent.TESTSUITE_BEFORE: + _report.add_testsuite_report( + GdUnitTestSuiteReport.new(event.resource_path(), event.suite_name(), event.total_count()) + ) + GdUnitEvent.TESTSUITE_AFTER: + _report.update_test_suite_report( + event.resource_path(), + event.elapsed_time(), + event.is_error(), + event.is_failed(), + event.is_warning(), + event.is_skipped(), + event.skipped_count(), + event.failed_count(), + event.orphan_nodes(), + event.reports() + ) + GdUnitEvent.TESTCASE_BEFORE: + _report.add_testcase_report( + event.resource_path(), + GdUnitTestCaseReport.new( + event.resource_path(), + event.suite_name(), + event.test_name() + ) + ) + GdUnitEvent.TESTCASE_AFTER: + var test_report := GdUnitTestCaseReport.new( + event.resource_path(), + event.suite_name(), + event.test_name(), + event.is_error(), + event.is_failed(), + event.failed_count(), + event.orphan_nodes(), + event.is_skipped(), + event.reports(), + event.elapsed_time() + ) + _report.update_testcase_report(event.resource_path(), test_report) + print_status(event) + + + func build_executed_test_suite_msg(executed_count :int, total_count :int) -> String: + if executed_count == total_count: + return "Executed test suites: (%d/%d)" % [executed_count, total_count] + return "Executed test suites: (%d/%d), %d skipped" % [executed_count, total_count, (total_count - executed_count)] + + + func build_executed_test_case_msg(executed_count :int, total_count :int) -> String: + if executed_count == total_count: + return "Executed test cases: (%d/%d)" % [executed_count, total_count] + return "Executed test cases: (%d/%d), %d skipped" % [executed_count, total_count, (total_count - executed_count)] + + + func report_exit_code(report: GdUnitHtmlReport) -> int: + if report.error_count() + report.failure_count() > 0: + _console.prints_color("Exit code: %d" % RETURN_ERROR, Color.FIREBRICK) + return RETURN_ERROR + if report.orphan_count() > 0: + _console.prints_color("Exit code: %d" % RETURN_WARNING, Color.GOLDENROD) + return RETURN_WARNING + _console.prints_color("Exit code: %d" % RETURN_SUCCESS, Color.DARK_SALMON) + return RETURN_SUCCESS + + + func print_status(event: GdUnitEvent) -> void: + match event.type(): + GdUnitEvent.TESTSUITE_BEFORE: + _console.prints_color( + "Run Test Suite %s " % event.resource_path(), + Color.ANTIQUE_WHITE + ) + GdUnitEvent.TESTCASE_BEFORE: + _console.print_color( + " Run Test: %s > %s :" % [event.resource_path(), event.test_name()], + Color.ANTIQUE_WHITE + ).prints_color( + "STARTED", + Color.FOREST_GREEN + ).save_cursor() + GdUnitEvent.TESTCASE_AFTER: + #_console.restore_cursor() + _console.print_color( + " Run Test: %s > %s :" % [event.resource_path(), event.test_name()], + Color.ANTIQUE_WHITE + ) + _print_status(event) + _print_failure_report(event.reports()) + GdUnitEvent.TESTSUITE_AFTER: + _print_failure_report(event.reports()) + _print_status(event) + _console.prints_color( + "Statistics: | %d tests cases | %d error | %d failed | %d skipped | %d orphans |\n" + % [ + _report.test_count(), + _report.error_count(), + _report.failure_count(), + _report.skipped_count(), + _report.orphan_count() + ], + Color.ANTIQUE_WHITE + ) + + + func _print_failure_report(reports: Array[GdUnitReport]) -> void: + for report in reports: + if ( + report.is_failure() + or report.is_error() + or report.is_warning() + or report.is_skipped() + ): + _console.prints_color( + " Report:", + Color.DARK_TURQUOISE, CmdConsole.BOLD | CmdConsole.UNDERLINE + ) + var text := GdUnitTools.richtext_normalize(str(report)) + for line in text.split("\n"): + _console.prints_color(" %s" % line, Color.DARK_TURQUOISE) + _console.new_line() + + + func _print_status(event: GdUnitEvent) -> void: + if event.is_skipped(): + _console.print_color("SKIPPED", Color.GOLDENROD, CmdConsole.BOLD | CmdConsole.ITALIC) + elif event.is_failed() or event.is_error(): + _console.print_color("FAILED", Color.FIREBRICK, CmdConsole.BOLD) + elif event.orphan_nodes() > 0: + _console.print_color("PASSED", Color.GOLDENROD, CmdConsole.BOLD | CmdConsole.UNDERLINE) + else: + _console.print_color("PASSED", Color.FOREST_GREEN, CmdConsole.BOLD) + _console.prints_color( + " %s" % LocalTime.elapsed(event.elapsed_time()), Color.CORNFLOWER_BLUE + ) + + +var _cli_runner :CLIRunner + + +func _initialize() -> void: + if Engine.get_version_info().hex < 0x40200: + prints("GdUnit4 requires a minimum of Godot 4.2.x Version!") + quit(CLIRunner.RETURN_ERROR_GODOT_VERSION_NOT_SUPPORTED) + return + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MINIMIZED) + _cli_runner = CLIRunner.new() + root.add_child(_cli_runner) + + +# do not use print statements on _finalize it results in random crashes +func _finalize() -> void: + if OS.is_stdout_verbose(): + prints("Finallize ..") + prints("-Orphan nodes report-----------------------") + Window.print_orphan_nodes() + prints("Finallize .. done") diff --git a/addons/gdUnit4/bin/GdUnitCopyLog.gd b/addons/gdUnit4/bin/GdUnitCopyLog.gd new file mode 100644 index 0000000..2e037a6 --- /dev/null +++ b/addons/gdUnit4/bin/GdUnitCopyLog.gd @@ -0,0 +1,141 @@ +#!/usr/bin/env -S godot -s +extends MainLoop + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +# gdlint: disable=max-line-length +const NO_LOG_TEMPLATE = """ + + + + + + Logging + + + +
+

No logging available!

+
+

For logging to occur, you must check Enable File Logging in Project Settings.

+

You can enable Logging Project Settings > Logging > File Logging > Enable File Logging in the Project Settings.

+
+ +""" + +#warning-ignore-all:return_value_discarded +var _cmd_options := CmdOptions.new([ + CmdOption.new( + "-rd, --report-directory", + "-rd ", + "Specifies the output directory in which the reports are to be written. The default is res://reports/.", + TYPE_STRING, + true + ) + ]) + +var _report_root_path: String + + +func _init() -> void: + _report_root_path = GdUnitFileAccess.current_dir() + "reports" + + +func _process(_delta :float) -> bool: + # check if reports exists + if not reports_available(): + prints("no reports found") + return true + # scan for latest report path + var iteration := GdUnitFileAccess.find_last_path_index( + _report_root_path, GdUnitHtmlReport.REPORT_DIR_PREFIX + ) + var report_path := "%s/%s%d" % [_report_root_path, GdUnitHtmlReport.REPORT_DIR_PREFIX, iteration] + # only process if godot logging is enabled + if not GdUnitSettings.is_log_enabled(): + _patch_report(report_path, "") + return true + # parse possible custom report path, + var cmd_parser := CmdArgumentParser.new(_cmd_options, "GdUnitCmdTool.gd") + # ignore erros and exit quitly + if cmd_parser.parse(OS.get_cmdline_args(), true).is_error(): + return true + CmdCommandHandler.new(_cmd_options).register_cb("-rd", set_report_directory) + # scan for latest godot log and copy to report + var godot_log := _scan_latest_godot_log() + var result := _copy_and_pach(godot_log, report_path) + if result.is_error(): + push_error(result.error_message()) + return true + _patch_report(report_path, godot_log) + return true + + +func set_report_directory(path: String) -> void: + _report_root_path = path + + +func _scan_latest_godot_log() -> String: + var path := GdUnitSettings.get_log_path().get_base_dir() + var files_sorted := Array() + for file in GdUnitFileAccess.scan_dir(path): + var file_name := "%s/%s" % [path, file] + files_sorted.append(file_name) + # sort by name, the name contains the timestamp so we sort at the end by timestamp + files_sorted.sort() + return files_sorted[-1] + + +func _patch_report(report_path: String, godot_log: String) -> void: + var index_file := FileAccess.open("%s/index.html" % report_path, FileAccess.READ_WRITE) + if index_file == null: + push_error( + "Can't add log path to index.html. Error: %s" + % error_string(FileAccess.get_open_error()) + ) + return + # if no log file available than add a information howto enable it + if godot_log.is_empty(): + FileAccess.open( + "%s/logging_not_available.html" % report_path, + FileAccess.WRITE).store_string(NO_LOG_TEMPLATE) + var log_file := "logging_not_available.html" if godot_log.is_empty() else godot_log.get_file() + var content := index_file.get_as_text().replace("${log_file}", log_file) + # overide it + index_file.seek(0) + index_file.store_string(content) + + +func _copy_and_pach(from_file: String, to_dir: String) -> GdUnitResult: + var result := GdUnitFileAccess.copy_file(from_file, to_dir) + if result.is_error(): + return result + var file := FileAccess.open(from_file, FileAccess.READ) + if file == null: + return GdUnitResult.error( + "Can't find file '%s'. Error: %s" + % [from_file, error_string(FileAccess.get_open_error())] + ) + var content := file.get_as_text() + # patch out console format codes + for color_index in range(0, 256): + var to_replace := "[38;5;%dm" % color_index + content = content.replace(to_replace, "") + content = content\ + .replace("", "")\ + .replace(CmdConsole.CSI_BOLD, "")\ + .replace(CmdConsole.CSI_ITALIC, "")\ + .replace(CmdConsole.CSI_UNDERLINE, "") + var to_file := to_dir + "/" + from_file.get_file() + file = FileAccess.open(to_file, FileAccess.WRITE) + if file == null: + return GdUnitResult.error( + "Can't open to write '%s'. Error: %s" + % [to_file, error_string(FileAccess.get_open_error())] + ) + file.store_string(content) + return GdUnitResult.empty() + + +func reports_available() -> bool: + return DirAccess.dir_exists_absolute(_report_root_path) diff --git a/addons/gdUnit4/bin/ProjectScanner.gd b/addons/gdUnit4/bin/ProjectScanner.gd new file mode 100644 index 0000000..93c40de --- /dev/null +++ b/addons/gdUnit4/bin/ProjectScanner.gd @@ -0,0 +1,99 @@ +#!/usr/bin/env -S godot -s +@tool +extends SceneTree + +const CmdConsole = preload("res://addons/gdUnit4/src/cmd/CmdConsole.gd") + + +func _initialize() -> void: + set_auto_accept_quit(false) + var scanner := SourceScanner.new(self) + root.add_child(scanner) + + +# gdlint: disable=trailing-whitespace +class SourceScanner extends Node: + + enum { + INIT, + STARTUP, + SCAN, + QUIT, + DONE + } + + var _state := INIT + var _console := CmdConsole.new() + var _elapsed_time := 0.0 + var _plugin: EditorPlugin + var _fs: EditorFileSystem + var _scene: SceneTree + + + func _init(scene :SceneTree) -> void: + _scene = scene + _console.prints_color(""" + ======================================================================== + Running project scan:""".dedent(), + Color.CORNFLOWER_BLUE + ) + _state = INIT + + + func _process(delta :float) -> void: + _elapsed_time += delta + set_process(false) + await_inital_scan() + await scan_project() + set_process(true) + + + # !! don't use any await in this phase otherwise the editor will be instable !! + func await_inital_scan() -> void: + if _state == INIT: + _console.prints_color("Wait initial scanning ...", Color.DARK_GREEN) + _plugin = EditorPlugin.new() + _fs = _plugin.get_editor_interface().get_resource_filesystem() + _plugin.get_editor_interface().set_plugin_enabled("gdUnit4", false) + _state = STARTUP + + if _state == STARTUP: + if _fs.is_scanning(): + _console.progressBar(_fs.get_scanning_progress() * 100 as int) + # we wait 10s in addition to be on the save site the scanning is done + if _elapsed_time > 10.0: + _console.progressBar(100) + _console.new_line() + _console.prints_color("initial scanning ... done", Color.DARK_GREEN) + _state = SCAN + + + func scan_project() -> void: + if _state != SCAN: + return + _console.prints_color("Scan project: ", Color.SANDY_BROWN) + await get_tree().process_frame + _fs.scan_sources() + await get_tree().create_timer(5).timeout + _console.prints_color("Scan: ", Color.SANDY_BROWN) + _console.progressBar(0) + await get_tree().process_frame + _fs.scan() + while _fs.is_scanning(): + await get_tree().process_frame + _console.progressBar(_fs.get_scanning_progress() * 100 as int) + await get_tree().create_timer(10).timeout + _console.progressBar(100) + _console.new_line() + _plugin.free() + _console.prints_color(""" + Scan project done. + ========================================================================""".dedent(), + Color.CORNFLOWER_BLUE + ) + await get_tree().process_frame + await get_tree().physics_frame + queue_free() + # force quit editor + _state = DONE + _scene.quit(0) diff --git a/addons/gdUnit4/plugin.cfg b/addons/gdUnit4/plugin.cfg new file mode 100644 index 0000000..11f9d21 --- /dev/null +++ b/addons/gdUnit4/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="gdUnit4" +description="Unit Testing Framework for Godot Scripts" +author="Mike Schulze" +version="4.3.1" +script="plugin.gd" diff --git a/addons/gdUnit4/plugin.gd b/addons/gdUnit4/plugin.gd new file mode 100644 index 0000000..c17fdc9 --- /dev/null +++ b/addons/gdUnit4/plugin.gd @@ -0,0 +1,54 @@ +@tool +extends EditorPlugin + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") +const GdUnitTestDiscoverGuard := preload("res://addons/gdUnit4/src/core/discovery/GdUnitTestDiscoverGuard.gd") + + +var _gd_inspector :Node +var _server_node :Node +var _gd_console :Node +var _guard: GdUnitTestDiscoverGuard + + +func _enter_tree() -> void: + if Engine.get_version_info().hex < 0x40200: + prints("GdUnit4 plugin requires a minimum of Godot 4.2.x Version!") + return + GdUnitSettings.setup() + # install the GdUnit inspector + _gd_inspector = load("res://addons/gdUnit4/src/ui/GdUnitInspector.tscn").instantiate() + add_control_to_dock(EditorPlugin.DOCK_SLOT_LEFT_UR, _gd_inspector) + # install the GdUnit Console + _gd_console = load("res://addons/gdUnit4/src/ui/GdUnitConsole.tscn").instantiate() + add_control_to_bottom_panel(_gd_console, "gdUnitConsole") + _server_node = load("res://addons/gdUnit4/src/network/GdUnitServer.tscn").instantiate() + Engine.get_main_loop().root.add_child.call_deferred(_server_node) + prints("Loading GdUnit4 Plugin success") + if GdUnitSettings.is_update_notification_enabled(): + var update_tool :Node = load("res://addons/gdUnit4/src/update/GdUnitUpdateNotify.tscn").instantiate() + Engine.get_main_loop().root.add_child.call_deferred(update_tool) + if GdUnit4CSharpApiLoader.is_mono_supported(): + prints("GdUnit4Net version '%s' loaded." % GdUnit4CSharpApiLoader.version()) + # connect to be notified for script changes to be able to discover new tests + _guard = GdUnitTestDiscoverGuard.new() + resource_saved.connect(_on_resource_saved) + + +func _exit_tree() -> void: + if is_instance_valid(_gd_inspector): + remove_control_from_docks(_gd_inspector) + GodotVersionFixures.free_fix(_gd_inspector) + if is_instance_valid(_gd_console): + remove_control_from_bottom_panel(_gd_console) + _gd_console.free() + if is_instance_valid(_server_node): + Engine.get_main_loop().root.remove_child.call_deferred(_server_node) + _server_node.queue_free() + GdUnitTools.dispose_all.call_deferred() + prints("Unload GdUnit4 Plugin success") + + +func _on_resource_saved(resource :Resource) -> void: + if resource is Script: + _guard.discover(resource) diff --git a/addons/gdUnit4/runtest.cmd b/addons/gdUnit4/runtest.cmd new file mode 100644 index 0000000..0c8fbc5 --- /dev/null +++ b/addons/gdUnit4/runtest.cmd @@ -0,0 +1,25 @@ +@ECHO OFF +CLS + +IF NOT DEFINED GODOT_BIN ( + ECHO "GODOT_BIN is not set." + ECHO "Please set the environment variable 'setx GODOT_BIN '" + EXIT /b -1 +) + +REM scan if Godot mono used and compile c# classes +for /f "tokens=5 delims=. " %%i in ('%GODOT_BIN% --version') do set GODOT_TYPE=%%i +IF "%GODOT_TYPE%" == "mono" ( + ECHO "Godot mono detected" + ECHO Compiling c# classes ... Please Wait + dotnet build --debug + ECHO done %errorlevel% +) + +%GODOT_BIN% -s -d res://addons/gdUnit4/bin/GdUnitCmdTool.gd %* +SET exit_code=%errorlevel% +%GODOT_BIN% --headless --quiet -s -d res://addons/gdUnit4/bin/GdUnitCopyLog.gd %* + +ECHO %exit_code% + +EXIT /B %exit_code% diff --git a/addons/gdUnit4/runtest.sh b/addons/gdUnit4/runtest.sh new file mode 100644 index 0000000..17ecb0d --- /dev/null +++ b/addons/gdUnit4/runtest.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +if [ -z "$GODOT_BIN" ]; then + echo "'GODOT_BIN' is not set." + echo "Please set the environment variable 'export GODOT_BIN=/Applications/Godot.app/Contents/MacOS/Godot'" + exit 1 +fi + +"$GODOT_BIN" --path . -s -d res://addons/gdUnit4/bin/GdUnitCmdTool.gd $* +exit_code=$? +echo "Run tests ends with $exit_code" + +"$GODOT_BIN" --headless --path . --quiet -s -d res://addons/gdUnit4/bin/GdUnitCopyLog.gd $* > /dev/null +exit_code2=$? +exit $exit_code diff --git a/addons/gdUnit4/src/Comparator.gd b/addons/gdUnit4/src/Comparator.gd new file mode 100644 index 0000000..096088a --- /dev/null +++ b/addons/gdUnit4/src/Comparator.gd @@ -0,0 +1,12 @@ +class_name Comparator +extends Resource + +enum { + EQUAL, + LESS_THAN, + LESS_EQUAL, + GREATER_THAN, + GREATER_EQUAL, + BETWEEN_EQUAL, + NOT_BETWEEN_EQUAL, +} diff --git a/addons/gdUnit4/src/Fuzzers.gd b/addons/gdUnit4/src/Fuzzers.gd new file mode 100644 index 0000000..f61ba6e --- /dev/null +++ b/addons/gdUnit4/src/Fuzzers.gd @@ -0,0 +1,34 @@ +## A fuzzer implementation to provide default implementation +class_name Fuzzers +extends Resource + + +## Generates an random string with min/max length and given charset +static func rand_str(min_length: int, max_length :int, charset := StringFuzzer.DEFAULT_CHARSET) -> Fuzzer: + return StringFuzzer.new(min_length, max_length, charset) + + +## Generates an random integer in a range form to +static func rangei(from: int, to: int) -> Fuzzer: + return IntFuzzer.new(from, to) + +## Generates a randon float within in a given range +static func rangef(from: float, to: float) -> Fuzzer: + return FloatFuzzer.new(from, to) + +## Generates an random Vector2 in a range form to +static func rangev2(from: Vector2, to: Vector2) -> Fuzzer: + return Vector2Fuzzer.new(from, to) + + +## Generates an random Vector3 in a range form to +static func rangev3(from: Vector3, to: Vector3) -> Fuzzer: + return Vector3Fuzzer.new(from, to) + +## Generates an integer in a range form to that can be divided exactly by 2 +static func eveni(from: int, to: int) -> Fuzzer: + return IntFuzzer.new(from, to, IntFuzzer.EVEN) + +## Generates an integer in a range form to that cannot be divided exactly by 2 +static func oddi(from: int, to: int) -> Fuzzer: + return IntFuzzer.new(from, to, IntFuzzer.ODD) diff --git a/addons/gdUnit4/src/GdUnitArrayAssert.gd b/addons/gdUnit4/src/GdUnitArrayAssert.gd new file mode 100644 index 0000000..3fdaaca --- /dev/null +++ b/addons/gdUnit4/src/GdUnitArrayAssert.gd @@ -0,0 +1,160 @@ +## An Assertion Tool to verify array values +class_name GdUnitArrayAssert +extends GdUnitAssert + + +## Verifies that the current value is null. +func is_null() -> GdUnitArrayAssert: + return self + + +## Verifies that the current value is not null. +func is_not_null() -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array is equal to the given one. +@warning_ignore("unused_parameter") +func is_equal(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array is equal to the given one, ignoring case considerations. +@warning_ignore("unused_parameter") +func is_equal_ignoring_case(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array is not equal to the given one. +@warning_ignore("unused_parameter") +func is_not_equal(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array is not equal to the given one, ignoring case considerations. +@warning_ignore("unused_parameter") +func is_not_equal_ignoring_case(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array is empty, it has a size of 0. +func is_empty() -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array is not empty, it has a size of minimum 1. +func is_not_empty() -> GdUnitArrayAssert: + return self + +## Verifies that the current Array is the same. [br] +## Compares the current by object reference equals +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_same(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array is NOT the same. [br] +## Compares the current by object reference equals +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_not_same(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array has a size of given value. +@warning_ignore("unused_parameter") +func has_size(expectd: int) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array contains the given values, in any order.[br] +## The values are compared by deep parameter comparision, for object reference compare you have to use [method contains_same] +@warning_ignore("unused_parameter") +func contains(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array contains exactly only the given values and nothing else, in same order.[br] +## The values are compared by deep parameter comparision, for object reference compare you have to use [method contains_same_exactly] +@warning_ignore("unused_parameter") +func contains_exactly(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array contains exactly only the given values and nothing else, in any order.[br] +## The values are compared by deep parameter comparision, for object reference compare you have to use [method contains_same_exactly_in_any_order] +@warning_ignore("unused_parameter") +func contains_exactly_in_any_order(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array contains the given values, in any order.[br] +## The values are compared by object reference, for deep parameter comparision use [method contains] +@warning_ignore("unused_parameter") +func contains_same(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array contains exactly only the given values and nothing else, in same order.[br] +## The values are compared by object reference, for deep parameter comparision use [method contains_exactly] +@warning_ignore("unused_parameter") +func contains_same_exactly(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array contains exactly only the given values and nothing else, in any order.[br] +## The values are compared by object reference, for deep parameter comparision use [method contains_exactly_in_any_order] +@warning_ignore("unused_parameter") +func contains_same_exactly_in_any_order(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array do NOT contains the given values, in any order.[br] +## The values are compared by deep parameter comparision, for object reference compare you have to use [method not_contains_same] +## [b]Example:[/b] +## [codeblock] +## # will succeed +## assert_array([1, 2, 3, 4, 5]).not_contains([6]) +## # will fail +## assert_array([1, 2, 3, 4, 5]).not_contains([2, 6]) +## [/codeblock] +@warning_ignore("unused_parameter") +func not_contains(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Verifies that the current Array do NOT contains the given values, in any order.[br] +## The values are compared by object reference, for deep parameter comparision use [method not_contains] +## [b]Example:[/b] +## [codeblock] +## # will succeed +## assert_array([1, 2, 3, 4, 5]).not_contains([6]) +## # will fail +## assert_array([1, 2, 3, 4, 5]).not_contains([2, 6]) +## [/codeblock] +@warning_ignore("unused_parameter") +func not_contains_same(expected :Variant) -> GdUnitArrayAssert: + return self + + +## Extracts all values by given function name and optional arguments into a new ArrayAssert. +## If the elements not accessible by `func_name` the value is converted to `"n.a"`, expecting null values +@warning_ignore("unused_parameter") +func extract(func_name: String, args := Array()) -> GdUnitArrayAssert: + return self + + +## Extracts all values by given extractor's into a new ArrayAssert. +## If the elements not extractable than the value is converted to `"n.a"`, expecting null values +@warning_ignore("unused_parameter") +func extractv( + extractor0 :GdUnitValueExtractor, + extractor1 :GdUnitValueExtractor = null, + extractor2 :GdUnitValueExtractor = null, + extractor3 :GdUnitValueExtractor = null, + extractor4 :GdUnitValueExtractor = null, + extractor5 :GdUnitValueExtractor = null, + extractor6 :GdUnitValueExtractor = null, + extractor7 :GdUnitValueExtractor = null, + extractor8 :GdUnitValueExtractor = null, + extractor9 :GdUnitValueExtractor = null) -> GdUnitArrayAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitAssert.gd b/addons/gdUnit4/src/GdUnitAssert.gd new file mode 100644 index 0000000..d2a5fd0 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitAssert.gd @@ -0,0 +1,41 @@ +## Base interface of all GdUnit asserts +class_name GdUnitAssert +extends RefCounted + + +## Verifies that the current value is null. +@warning_ignore("untyped_declaration") +func is_null(): + return self + + +## Verifies that the current value is not null. +@warning_ignore("untyped_declaration") +func is_not_null(): + return self + + +## Verifies that the current value is equal to expected one. +@warning_ignore("unused_parameter") +@warning_ignore("untyped_declaration") +func is_equal(expected): + return self + + +## Verifies that the current value is not equal to expected one. +@warning_ignore("unused_parameter") +@warning_ignore("untyped_declaration") +func is_not_equal(expected): + return self + + +@warning_ignore("untyped_declaration") +func test_fail(): + return self + + +## Overrides the default failure message by given custom message. +@warning_ignore("unused_parameter") +@warning_ignore("untyped_declaration") +func override_failure_message(message :String): + return self diff --git a/addons/gdUnit4/src/GdUnitAwaiter.gd b/addons/gdUnit4/src/GdUnitAwaiter.gd new file mode 100644 index 0000000..fc2e487 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitAwaiter.gd @@ -0,0 +1,69 @@ +class_name GdUnitAwaiter +extends RefCounted + +const GdUnitAssertImpl = preload("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd") + + +# Waits for a specified signal in an interval of 50ms sent from the , and terminates with an error after the specified timeout has elapsed. +# source: the object from which the signal is emitted +# signal_name: signal name +# args: the expected signal arguments as an array +# timeout: the timeout in ms, default is set to 2000ms +func await_signal_on(source :Object, signal_name :String, args :Array = [], timeout_millis :int = 2000) -> Variant: + # fail fast if the given source instance invalid + var assert_that := GdUnitAssertImpl.new(signal_name) + var line_number := GdUnitAssertions.get_line_number() + if not is_instance_valid(source): + assert_that.report_error(GdAssertMessages.error_await_signal_on_invalid_instance(source, signal_name, args), line_number) + return await Engine.get_main_loop().process_frame + # fail fast if the given source instance invalid + if not is_instance_valid(source): + assert_that.report_error(GdAssertMessages.error_await_signal_on_invalid_instance(source, signal_name, args), line_number) + return await await_idle_frame() + var awaiter := GdUnitSignalAwaiter.new(timeout_millis) + var value :Variant = await awaiter.on_signal(source, signal_name, args) + if awaiter.is_interrupted(): + var failure := "await_signal_on(%s, %s) timed out after %sms" % [signal_name, args, timeout_millis] + assert_that.report_error(failure, line_number) + return value + + +# Waits for a specified signal sent from the between idle frames and aborts with an error after the specified timeout has elapsed +# source: the object from which the signal is emitted +# signal_name: signal name +# args: the expected signal arguments as an array +# timeout: the timeout in ms, default is set to 2000ms +func await_signal_idle_frames(source :Object, signal_name :String, args :Array = [], timeout_millis :int = 2000) -> Variant: + var line_number := GdUnitAssertions.get_line_number() + # fail fast if the given source instance invalid + if not is_instance_valid(source): + GdUnitAssertImpl.new(signal_name)\ + .report_error(GdAssertMessages.error_await_signal_on_invalid_instance(source, signal_name, args), line_number) + return await await_idle_frame() + var awaiter := GdUnitSignalAwaiter.new(timeout_millis, true) + var value :Variant = await awaiter.on_signal(source, signal_name, args) + if awaiter.is_interrupted(): + var failure := "await_signal_idle_frames(%s, %s) timed out after %sms" % [signal_name, args, timeout_millis] + GdUnitAssertImpl.new(signal_name).report_error(failure, line_number) + return value + + +# Waits for for a given amount of milliseconds +# example: +# # waits for 100ms +# await GdUnitAwaiter.await_millis(myNode, 100).completed +# use this waiter and not `await get_tree().create_timer().timeout to prevent errors when a test case is timed out +func await_millis(milliSec :int) -> void: + var timer :Timer = Timer.new() + timer.set_name("gdunit_await_millis_timer_%d" % timer.get_instance_id()) + Engine.get_main_loop().root.add_child(timer) + timer.add_to_group("GdUnitTimers") + timer.set_one_shot(true) + timer.start(milliSec / 1000.0) + await timer.timeout + timer.queue_free() + + +# Waits until the next idle frame +func await_idle_frame() -> void: + await Engine.get_main_loop().process_frame diff --git a/addons/gdUnit4/src/GdUnitBoolAssert.gd b/addons/gdUnit4/src/GdUnitBoolAssert.gd new file mode 100644 index 0000000..de67a94 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitBoolAssert.gd @@ -0,0 +1,41 @@ +## An Assertion Tool to verify boolean values +class_name GdUnitBoolAssert +extends GdUnitAssert + + +## Verifies that the current value is null. +func is_null() -> GdUnitBoolAssert: + return self + + +## Verifies that the current value is not null. +func is_not_null() -> GdUnitBoolAssert: + return self + + +## Verifies that the current value is equal to the given one. +@warning_ignore("unused_parameter") +func is_equal(expected :Variant) -> GdUnitBoolAssert: + return self + + +## Verifies that the current value is not equal to the given one. +@warning_ignore("unused_parameter") +func is_not_equal(expected :Variant) -> GdUnitBoolAssert: + return self + + +## Verifies that the current value is true. +func is_true() -> GdUnitBoolAssert: + return self + + +## Verifies that the current value is false. +func is_false() -> GdUnitBoolAssert: + return self + + +## Overrides the default failure message by given custom message. +@warning_ignore("unused_parameter") +func override_failure_message(message :String) -> GdUnitBoolAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitConstants.gd b/addons/gdUnit4/src/GdUnitConstants.gd new file mode 100644 index 0000000..0445894 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitConstants.gd @@ -0,0 +1,6 @@ +class_name GdUnitConstants +extends RefCounted + +const NO_ARG :Variant = "<--null-->" + +const EXPECT_ASSERT_REPORT_FAILURES := "expect_assert_report_failures" diff --git a/addons/gdUnit4/src/GdUnitDictionaryAssert.gd b/addons/gdUnit4/src/GdUnitDictionaryAssert.gd new file mode 100644 index 0000000..49dd305 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitDictionaryAssert.gd @@ -0,0 +1,105 @@ +## An Assertion Tool to verify dictionary +class_name GdUnitDictionaryAssert +extends GdUnitAssert + + +## Verifies that the current value is null. +func is_null() -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current value is not null. +func is_not_null() -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary is equal to the given one, ignoring order. +@warning_ignore("unused_parameter") +func is_equal(expected :Variant) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary is not equal to the given one, ignoring order. +@warning_ignore("unused_parameter") +func is_not_equal(expected :Variant) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary is empty, it has a size of 0. +func is_empty() -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary is not empty, it has a size of minimum 1. +func is_not_empty() -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary is the same. [br] +## Compares the current by object reference equals +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_same(expected :Variant) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary is NOT the same. [br] +## Compares the current by object reference equals +@warning_ignore("unused_parameter") +func is_not_same(expected :Variant) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary has a size of given value. +@warning_ignore("unused_parameter") +func has_size(expected: int) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary contains the given key(s).[br] +## The keys are compared by deep parameter comparision, for object reference compare you have to use [method contains_same_keys] +@warning_ignore("unused_parameter") +func contains_keys(expected :Array) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary contains the given key and value.[br] +## The key and value are compared by deep parameter comparision, for object reference compare you have to use [method contains_same_key_value] +@warning_ignore("unused_parameter") +func contains_key_value(key :Variant, value :Variant) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary not contains the given key(s).[br] +## This function is [b]deprecated[/b] you have to use [method not_contains_keys] instead +@warning_ignore("unused_parameter") +func contains_not_keys(expected :Array) -> GdUnitDictionaryAssert: + push_warning("Deprecated: 'contains_not_keys' is deprectated and will be removed soon, use `not_contains_keys` instead!") + return not_contains_keys(expected) + + +## Verifies that the current dictionary not contains the given key(s).[br] +## The keys are compared by deep parameter comparision, for object reference compare you have to use [method not_contains_same_keys] +@warning_ignore("unused_parameter") +func not_contains_keys(expected :Array) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary contains the given key(s).[br] +## The keys are compared by object reference, for deep parameter comparision use [method contains_keys] +@warning_ignore("unused_parameter") +func contains_same_keys(expected :Array) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary contains the given key and value.[br] +## The key and value are compared by object reference, for deep parameter comparision use [method contains_key_value] +@warning_ignore("unused_parameter") +func contains_same_key_value(key :Variant, value :Variant) -> GdUnitDictionaryAssert: + return self + + +## Verifies that the current dictionary not contains the given key(s). +## The keys are compared by object reference, for deep parameter comparision use [method not_contains_keys] +@warning_ignore("unused_parameter") +func not_contains_same_keys(expected :Array) -> GdUnitDictionaryAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitFailureAssert.gd b/addons/gdUnit4/src/GdUnitFailureAssert.gd new file mode 100644 index 0000000..64ff965 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitFailureAssert.gd @@ -0,0 +1,31 @@ +## An assertion tool to verify GDUnit asserts. +## This assert is for internal use only, to verify that failed asserts work as expected. +class_name GdUnitFailureAssert +extends GdUnitAssert + + +## Verifies if the executed assert was successful +func is_success() -> GdUnitFailureAssert: + return self + +## Verifies if the executed assert has failed +func is_failed() -> GdUnitFailureAssert: + return self + + +## Verifies the failure line is equal to expected one. +@warning_ignore("unused_parameter") +func has_line(expected :int) -> GdUnitFailureAssert: + return self + + +## Verifies the failure message is equal to expected one. +@warning_ignore("unused_parameter") +func has_message(expected: String) -> GdUnitFailureAssert: + return self + + +## Verifies that the failure message starts with the expected message. +@warning_ignore("unused_parameter") +func starts_with_message(expected: String) -> GdUnitFailureAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitFileAssert.gd b/addons/gdUnit4/src/GdUnitFileAssert.gd new file mode 100644 index 0000000..21bf21a --- /dev/null +++ b/addons/gdUnit4/src/GdUnitFileAssert.gd @@ -0,0 +1,19 @@ +class_name GdUnitFileAssert +extends GdUnitAssert + + +func is_file() -> GdUnitFileAssert: + return self + + +func exists() -> GdUnitFileAssert: + return self + + +func is_script() -> GdUnitFileAssert: + return self + + +@warning_ignore("unused_parameter") +func contains_exactly(expected_rows :Array) -> GdUnitFileAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitFloatAssert.gd b/addons/gdUnit4/src/GdUnitFloatAssert.gd new file mode 100644 index 0000000..8f24f56 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitFloatAssert.gd @@ -0,0 +1,83 @@ +## An Assertion Tool to verify float values +class_name GdUnitFloatAssert +extends GdUnitAssert + + +## Verifies that the current value is equal to expected one. +@warning_ignore("unused_parameter") +func is_equal(expected :float) -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is not equal to expected one. +@warning_ignore("unused_parameter") +func is_not_equal(expected :float) -> GdUnitFloatAssert: + return self + + +## Verifies that the current and expected value are approximately equal. +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_equal_approx(expected :float, approx :float) -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is less than the given one. +@warning_ignore("unused_parameter") +func is_less(expected :float) -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is less than or equal the given one. +@warning_ignore("unused_parameter") +func is_less_equal(expected :float) -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is greater than the given one. +@warning_ignore("unused_parameter") +func is_greater(expected :float) -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is greater than or equal the given one. +@warning_ignore("unused_parameter") +func is_greater_equal(expected :float) -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is negative. +func is_negative() -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is not negative. +func is_not_negative() -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is equal to zero. +func is_zero() -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is not equal to zero. +func is_not_zero() -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is in the given set of values. +@warning_ignore("unused_parameter") +func is_in(expected :Array) -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is not in the given set of values. +@warning_ignore("unused_parameter") +func is_not_in(expected :Array) -> GdUnitFloatAssert: + return self + + +## Verifies that the current value is between the given boundaries (inclusive). +@warning_ignore("unused_parameter") +func is_between(from :float, to :float) -> GdUnitFloatAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitFuncAssert.gd b/addons/gdUnit4/src/GdUnitFuncAssert.gd new file mode 100644 index 0000000..c5e0e5f --- /dev/null +++ b/addons/gdUnit4/src/GdUnitFuncAssert.gd @@ -0,0 +1,56 @@ +## An Assertion Tool to verify function callback values +class_name GdUnitFuncAssert +extends GdUnitAssert + + +## Verifies that the current value is null. +func is_null() -> GdUnitFuncAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies that the current value is not null. +func is_not_null() -> GdUnitFuncAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies that the current value is equal to the given one. +@warning_ignore("unused_parameter") +func is_equal(expected :Variant) -> GdUnitFuncAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies that the current value is not equal to the given one. +@warning_ignore("unused_parameter") +func is_not_equal(expected :Variant) -> GdUnitFuncAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies that the current value is true. +func is_true() -> GdUnitFuncAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies that the current value is false. +func is_false() -> GdUnitFuncAssert: + await Engine.get_main_loop().process_frame + return self + + +## Overrides the default failure message by given custom message. +@warning_ignore("unused_parameter") +func override_failure_message(message :String) -> GdUnitFuncAssert: + return self + + +## Sets the timeout in ms to wait the function returnd the expected value, if the time over a failure is emitted.[br] +## e.g.[br] +## do wait until 5s the function `is_state` is returns 10 [br] +## [code]assert_func(instance, "is_state").wait_until(5000).is_equal(10)[/code] +@warning_ignore("unused_parameter") +func wait_until(timeout :int) -> GdUnitFuncAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitGodotErrorAssert.gd b/addons/gdUnit4/src/GdUnitGodotErrorAssert.gd new file mode 100644 index 0000000..d689625 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitGodotErrorAssert.gd @@ -0,0 +1,46 @@ +## An assertion tool to verify for Godot runtime errors like assert() and push notifications like push_error(). +class_name GdUnitGodotErrorAssert +extends GdUnitAssert + + +## Verifies if the executed code runs without any runtime errors +## Usage: +## [codeblock] +## await assert_error().is_success() +## [/codeblock] +func is_success() -> GdUnitGodotErrorAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies if the executed code runs into a runtime error +## Usage: +## [codeblock] +## await assert_error().is_runtime_error() +## [/codeblock] +@warning_ignore("unused_parameter") +func is_runtime_error(expected_error :String) -> GdUnitGodotErrorAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies if the executed code has a push_warning() used +## Usage: +## [codeblock] +## await assert_error().is_push_warning() +## [/codeblock] +@warning_ignore("unused_parameter") +func is_push_warning(expected_warning :String) -> GdUnitGodotErrorAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies if the executed code has a push_error() used +## Usage: +## [codeblock] +## await assert_error().is_push_error() +## [/codeblock] +@warning_ignore("unused_parameter") +func is_push_error(expected_error :String) -> GdUnitGodotErrorAssert: + await Engine.get_main_loop().process_frame + return self diff --git a/addons/gdUnit4/src/GdUnitIntAssert.gd b/addons/gdUnit4/src/GdUnitIntAssert.gd new file mode 100644 index 0000000..584788f --- /dev/null +++ b/addons/gdUnit4/src/GdUnitIntAssert.gd @@ -0,0 +1,87 @@ +## An Assertion Tool to verify integer values +class_name GdUnitIntAssert +extends GdUnitAssert + + +## Verifies that the current value is equal to expected one. +@warning_ignore("unused_parameter") +func is_equal(expected :int) -> GdUnitIntAssert: + return self + + +## Verifies that the current value is not equal to expected one. +@warning_ignore("unused_parameter") +func is_not_equal(expected :int) -> GdUnitIntAssert: + return self + + +## Verifies that the current value is less than the given one. +@warning_ignore("unused_parameter") +func is_less(expected :int) -> GdUnitIntAssert: + return self + + +## Verifies that the current value is less than or equal the given one. +@warning_ignore("unused_parameter") +func is_less_equal(expected :int) -> GdUnitIntAssert: + return self + + +## Verifies that the current value is greater than the given one. +@warning_ignore("unused_parameter") +func is_greater(expected :int) -> GdUnitIntAssert: + return self + + +## Verifies that the current value is greater than or equal the given one. +@warning_ignore("unused_parameter") +func is_greater_equal(expected :int) -> GdUnitIntAssert: + return self + + +## Verifies that the current value is even. +func is_even() -> GdUnitIntAssert: + return self + + +## Verifies that the current value is odd. +func is_odd() -> GdUnitIntAssert: + return self + + +## Verifies that the current value is negative. +func is_negative() -> GdUnitIntAssert: + return self + + +## Verifies that the current value is not negative. +func is_not_negative() -> GdUnitIntAssert: + return self + + +## Verifies that the current value is equal to zero. +func is_zero() -> GdUnitIntAssert: + return self + + +## Verifies that the current value is not equal to zero. +func is_not_zero() -> GdUnitIntAssert: + return self + + +## Verifies that the current value is in the given set of values. +@warning_ignore("unused_parameter") +func is_in(expected :Array) -> GdUnitIntAssert: + return self + + +## Verifies that the current value is not in the given set of values. +@warning_ignore("unused_parameter") +func is_not_in(expected :Array) -> GdUnitIntAssert: + return self + + +## Verifies that the current value is between the given boundaries (inclusive). +@warning_ignore("unused_parameter") +func is_between(from :int, to :int) -> GdUnitIntAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitObjectAssert.gd b/addons/gdUnit4/src/GdUnitObjectAssert.gd new file mode 100644 index 0000000..f2068e5 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitObjectAssert.gd @@ -0,0 +1,49 @@ +## An Assertion Tool to verify Object values +class_name GdUnitObjectAssert +extends GdUnitAssert + + +## Verifies that the current value is equal to expected one. +@warning_ignore("unused_parameter") +func is_equal(expected :Variant) -> GdUnitObjectAssert: + return self + + +## Verifies that the current value is not equal to expected one. +@warning_ignore("unused_parameter") +func is_not_equal(expected :Variant) -> GdUnitObjectAssert: + return self + + +## Verifies that the current value is null. +func is_null() -> GdUnitObjectAssert: + return self + + +## Verifies that the current value is not null. +func is_not_null() -> GdUnitObjectAssert: + return self + + +## Verifies that the current value is the same as the given one. +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_same(expected :Variant) -> GdUnitObjectAssert: + return self + + +## Verifies that the current value is not the same as the given one. +@warning_ignore("unused_parameter") +func is_not_same(expected :Variant) -> GdUnitObjectAssert: + return self + + +## Verifies that the current value is an instance of the given type. +@warning_ignore("unused_parameter") +func is_instanceof(expected :Object) -> GdUnitObjectAssert: + return self + + +## Verifies that the current value is not an instance of the given type. +@warning_ignore("unused_parameter") +func is_not_instanceof(expected :Variant) -> GdUnitObjectAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitResultAssert.gd b/addons/gdUnit4/src/GdUnitResultAssert.gd new file mode 100644 index 0000000..347e637 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitResultAssert.gd @@ -0,0 +1,45 @@ +## An Assertion Tool to verify Results +class_name GdUnitResultAssert +extends GdUnitAssert + + +## Verifies that the current value is null. +func is_null() -> GdUnitResultAssert: + return self + + +## Verifies that the current value is not null. +func is_not_null() -> GdUnitResultAssert: + return self + + +## Verifies that the result is ends up with empty +func is_empty() -> GdUnitResultAssert: + return self + + +## Verifies that the result is ends up with success +func is_success() -> GdUnitResultAssert: + return self + + +## Verifies that the result is ends up with warning +func is_warning() -> GdUnitResultAssert: + return self + + +## Verifies that the result is ends up with error +func is_error() -> GdUnitResultAssert: + return self + + +## Verifies that the result contains the given message +@warning_ignore("unused_parameter") +func contains_message(expected :String) -> GdUnitResultAssert: + return self + + +## Verifies that the result contains the given value +@warning_ignore("unused_parameter") +func is_value(expected :Variant) -> GdUnitResultAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitSceneRunner.gd b/addons/gdUnit4/src/GdUnitSceneRunner.gd new file mode 100644 index 0000000..5707a6a --- /dev/null +++ b/addons/gdUnit4/src/GdUnitSceneRunner.gd @@ -0,0 +1,286 @@ +## The scene runner for GdUnit to simmulate scene interactions +class_name GdUnitSceneRunner +extends RefCounted + +const NO_ARG = GdUnitConstants.NO_ARG + + +## Sets the mouse cursor to given position relative to the viewport. +@warning_ignore("unused_parameter") +func set_mouse_pos(pos :Vector2) -> GdUnitSceneRunner: + return self + + +## Gets the current mouse position of the current viewport +func get_mouse_position() -> Vector2: + return Vector2.ZERO + + +## Gets the current global mouse position of the current window +func get_global_mouse_position() -> Vector2: + return Vector2.ZERO + + +## Simulates that an action has been pressed.[br] +## [member action] : the action e.g. [code]"ui_up"[/code][br] +@warning_ignore("unused_parameter") +func simulate_action_pressed(action :String) -> GdUnitSceneRunner: + return self + + +## Simulates that an action is pressed.[br] +## [member action] : the action e.g. [code]"ui_up"[/code][br] +@warning_ignore("unused_parameter") +func simulate_action_press(action :String) -> GdUnitSceneRunner: + return self + + +## Simulates that an action has been released.[br] +## [member action] : the action e.g. [code]"ui_up"[/code][br] +@warning_ignore("unused_parameter") +func simulate_action_release(action :String) -> GdUnitSceneRunner: + return self + + +## Simulates that a key has been pressed.[br] +## [member key_code] : the key code e.g. [constant KEY_ENTER][br] +## [member shift_pressed] : false by default set to true if simmulate shift is press[br] +## [member ctrl_pressed] : false by default set to true if simmulate control is press[br] +@warning_ignore("unused_parameter") +func simulate_key_pressed(key_code :int, shift_pressed := false, ctrl_pressed := false) -> GdUnitSceneRunner: + return self + + +## Simulates that a key is pressed.[br] +## [member key_code] : the key code e.g. [constant KEY_ENTER][br] +## [member shift_pressed] : false by default set to true if simmulate shift is press[br] +## [member ctrl_pressed] : false by default set to true if simmulate control is press[br] +@warning_ignore("unused_parameter") +func simulate_key_press(key_code :int, shift_pressed := false, ctrl_pressed := false) -> GdUnitSceneRunner: + return self + + +## Simulates that a key has been released.[br] +## [member key_code] : the key code e.g. [constant KEY_ENTER][br] +## [member shift_pressed] : false by default set to true if simmulate shift is press[br] +## [member ctrl_pressed] : false by default set to true if simmulate control is press[br] +@warning_ignore("unused_parameter") +func simulate_key_release(key_code :int, shift_pressed := false, ctrl_pressed := false) -> GdUnitSceneRunner: + return self + + +## Simulates a mouse moved to final position.[br] +## [member pos] : The final mouse position +@warning_ignore("unused_parameter") +func simulate_mouse_move(pos :Vector2) -> GdUnitSceneRunner: + return self + + +## Simulates a mouse move to the relative coordinates (offset).[br] +## [color=yellow]You must use [b]await[/b] to wait until the simulated mouse movement is complete.[/color][br] +## [br] +## [member relative] : The relative position, indicating the mouse position offset.[br] +## [member time] : The time to move the mouse by the relative position in seconds (default is 1 second).[br] +## [member trans_type] : Sets the type of transition used (default is TRANS_LINEAR).[br] +## [codeblock] +## func test_move_mouse(): +## var runner = scene_runner("res://scenes/simple_scene.tscn") +## await runner.simulate_mouse_move_relative(Vector2(100,100)) +## [/codeblock] +@warning_ignore("unused_parameter") +func simulate_mouse_move_relative(relative: Vector2, time: float = 1.0, trans_type: Tween.TransitionType = Tween.TRANS_LINEAR) -> GdUnitSceneRunner: + await Engine.get_main_loop().process_frame + return self + + +## Simulates a mouse move to the absolute coordinates.[br] +## [color=yellow]You must use [b]await[/b] to wait until the simulated mouse movement is complete.[/color][br] +## [br] +## [member position] : The final position of the mouse.[br] +## [member time] : The time to move the mouse to the final position in seconds (default is 1 second).[br] +## [member trans_type] : Sets the type of transition used (default is TRANS_LINEAR).[br] +## [codeblock] +## func test_move_mouse(): +## var runner = scene_runner("res://scenes/simple_scene.tscn") +## await runner.simulate_mouse_move_absolute(Vector2(100,100)) +## [/codeblock] +@warning_ignore("unused_parameter") +func simulate_mouse_move_absolute(position: Vector2, time: float = 1.0, trans_type: Tween.TransitionType = Tween.TRANS_LINEAR) -> GdUnitSceneRunner: + await Engine.get_main_loop().process_frame + return self + + +## Simulates a mouse button pressed.[br] +## [member buttonIndex] : The mouse button identifier, one of the [enum MouseButton] or button wheel constants. +@warning_ignore("unused_parameter") +func simulate_mouse_button_pressed(buttonIndex :MouseButton, double_click := false) -> GdUnitSceneRunner: + return self + + +## Simulates a mouse button press (holding)[br] +## [member buttonIndex] : The mouse button identifier, one of the [enum MouseButton] or button wheel constants. +@warning_ignore("unused_parameter") +func simulate_mouse_button_press(buttonIndex :MouseButton, double_click := false) -> GdUnitSceneRunner: + return self + + +## Simulates a mouse button released.[br] +## [member buttonIndex] : The mouse button identifier, one of the [enum MouseButton] or button wheel constants. +@warning_ignore("unused_parameter") +func simulate_mouse_button_release(buttonIndex :MouseButton) -> GdUnitSceneRunner: + return self + + +## Sets how fast or slow the scene simulation is processed (clock ticks versus the real).[br] +## It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, +## whilst a value of 0.5 means the game moves at half the regular speed. +@warning_ignore("unused_parameter") +func set_time_factor(time_factor := 1.0) -> GdUnitSceneRunner: + return self + + +## Simulates scene processing for a certain number of frames.[br] +## [member frames] : amount of frames to process[br] +## [member delta_milli] : the time delta between a frame in milliseconds +@warning_ignore("unused_parameter") +func simulate_frames(frames: int, delta_milli :int = -1) -> GdUnitSceneRunner: + await Engine.get_main_loop().process_frame + return self + + +## Simulates scene processing until the given signal is emitted by the scene.[br] +## [member signal_name] : the signal to stop the simulation[br] +## [member args] : optional signal arguments to be matched for stop[br] +@warning_ignore("unused_parameter") +func simulate_until_signal( + signal_name :String, + arg0 :Variant = NO_ARG, + arg1 :Variant = NO_ARG, + arg2 :Variant = NO_ARG, + arg3 :Variant = NO_ARG, + arg4 :Variant = NO_ARG, + arg5 :Variant = NO_ARG, + arg6 :Variant = NO_ARG, + arg7 :Variant = NO_ARG, + arg8 :Variant = NO_ARG, + arg9 :Variant = NO_ARG) -> GdUnitSceneRunner: + await Engine.get_main_loop().process_frame + return self + + +## Simulates scene processing until the given signal is emitted by the given object.[br] +## [member source] : the object that should emit the signal[br] +## [member signal_name] : the signal to stop the simulation[br] +## [member args] : optional signal arguments to be matched for stop +@warning_ignore("unused_parameter") +func simulate_until_object_signal( + source :Object, + signal_name :String, + arg0 :Variant = NO_ARG, + arg1 :Variant = NO_ARG, + arg2 :Variant = NO_ARG, + arg3 :Variant = NO_ARG, + arg4 :Variant = NO_ARG, + arg5 :Variant = NO_ARG, + arg6 :Variant = NO_ARG, + arg7 :Variant = NO_ARG, + arg8 :Variant = NO_ARG, + arg9 :Variant = NO_ARG) -> GdUnitSceneRunner: + await Engine.get_main_loop().process_frame + return self + + +### Waits for all input events are processed +func await_input_processed() -> void: + await Engine.get_main_loop().process_frame + await Engine.get_main_loop().physics_frame + + +## Waits for the function return value until specified timeout or fails.[br] +## [member args] : optional function arguments +@warning_ignore("unused_parameter") +func await_func(func_name :String, args := []) -> GdUnitFuncAssert: + return null + + +## Waits for the function return value of specified source until specified timeout or fails.[br] +## [member source : the object where implements the function[br] +## [member args] : optional function arguments +@warning_ignore("unused_parameter") +func await_func_on(source :Object, func_name :String, args := []) -> GdUnitFuncAssert: + return null + + +## Waits for given signal is emited by the scene until a specified timeout to fail.[br] +## [member signal_name] : signal name[br] +## [member args] : the expected signal arguments as an array[br] +## [member timeout] : the timeout in ms, default is set to 2000ms +@warning_ignore("unused_parameter") +func await_signal(signal_name :String, args := [], timeout := 2000 ) -> void: + await Engine.get_main_loop().process_frame + pass + + +## Waits for given signal is emited by the until a specified timeout to fail.[br] +## [member source] : the object from which the signal is emitted[br] +## [member signal_name] : signal name[br] +## [member args] : the expected signal arguments as an array[br] +## [member timeout] : the timeout in ms, default is set to 2000ms +@warning_ignore("unused_parameter") +func await_signal_on(source :Object, signal_name :String, args := [], timeout := 2000 ) -> void: + pass + + +## maximizes the window to bring the scene visible +func maximize_view() -> GdUnitSceneRunner: + return self + + +## Return the current value of the property with the name .[br] +## [member name] : name of property[br] +## [member return] : the value of the property +@warning_ignore("unused_parameter") +func get_property(name :String) -> Variant: + return null + +## Set the value of the property with the name .[br] +## [member name] : name of property[br] +## [member value] : value of property[br] +## [member return] : true|false depending on valid property name. +@warning_ignore("unused_parameter") +func set_property(name :String, value :Variant) -> bool: + return false + + +## executes the function specified by in the scene and returns the result.[br] +## [member name] : the name of the function to execute[br] +## [member args] : optional function arguments[br] +## [member return] : the function result +@warning_ignore("unused_parameter") +func invoke( + name :String, + arg0 :Variant = NO_ARG, + arg1 :Variant = NO_ARG, + arg2 :Variant = NO_ARG, + arg3 :Variant = NO_ARG, + arg4 :Variant = NO_ARG, + arg5 :Variant = NO_ARG, + arg6 :Variant = NO_ARG, + arg7 :Variant = NO_ARG, + arg8 :Variant = NO_ARG, + arg9 :Variant = NO_ARG) -> Variant: + return null + + +## Searches for the specified node with the name in the current scene and returns it, otherwise null.[br] +## [member name] : the name of the node to find[br] +## [member recursive] : enables/disables seraching recursive[br] +## [member return] : the node if find otherwise null +@warning_ignore("unused_parameter") +func find_child(name :String, recursive :bool = true, owned :bool = false) -> Node: + return null + + +## Access to current running scene +func scene() -> Node: + return null diff --git a/addons/gdUnit4/src/GdUnitSignalAssert.gd b/addons/gdUnit4/src/GdUnitSignalAssert.gd new file mode 100644 index 0000000..8150df2 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitSignalAssert.gd @@ -0,0 +1,38 @@ +## An Assertion Tool to verify for emitted signals until a waiting time +class_name GdUnitSignalAssert +extends GdUnitAssert + + +## Verifies that given signal is emitted until waiting time +@warning_ignore("unused_parameter") +func is_emitted(name :String, args := []) -> GdUnitSignalAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies that given signal is NOT emitted until waiting time +@warning_ignore("unused_parameter") +func is_not_emitted(name :String, args := []) -> GdUnitSignalAssert: + await Engine.get_main_loop().process_frame + return self + + +## Verifies the signal exists checked the emitter +@warning_ignore("unused_parameter") +func is_signal_exists(name :String) -> GdUnitSignalAssert: + return self + + +## Overrides the default failure message by given custom message. +@warning_ignore("unused_parameter") +func override_failure_message(message :String) -> GdUnitSignalAssert: + return self + + +## Sets the assert signal timeout in ms, if the time over a failure is reported.[br] +## e.g.[br] +## do wait until 5s the instance has emitted the signal `signal_a`[br] +## [code]assert_signal(instance).wait_until(5000).is_emitted("signal_a")[/code] +@warning_ignore("unused_parameter") +func wait_until(timeout :int) -> GdUnitSignalAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitStringAssert.gd b/addons/gdUnit4/src/GdUnitStringAssert.gd new file mode 100644 index 0000000..5b4a6a1 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitStringAssert.gd @@ -0,0 +1,79 @@ +## An Assertion Tool to verify String values +class_name GdUnitStringAssert +extends GdUnitAssert + + +## Verifies that the current String is equal to the given one. +@warning_ignore("unused_parameter") +func is_equal(expected :Variant) -> GdUnitStringAssert: + return self + + +## Verifies that the current String is equal to the given one, ignoring case considerations. +@warning_ignore("unused_parameter") +func is_equal_ignoring_case(expected :Variant) -> GdUnitStringAssert: + return self + + +## Verifies that the current String is not equal to the given one. +@warning_ignore("unused_parameter") +func is_not_equal(expected :Variant) -> GdUnitStringAssert: + return self + + +## Verifies that the current String is not equal to the given one, ignoring case considerations. +@warning_ignore("unused_parameter") +func is_not_equal_ignoring_case(expected :Variant) -> GdUnitStringAssert: + return self + + +## Verifies that the current String is empty, it has a length of 0. +func is_empty() -> GdUnitStringAssert: + return self + + +## Verifies that the current String is not empty, it has a length of minimum 1. +func is_not_empty() -> GdUnitStringAssert: + return self + + +## Verifies that the current String contains the given String. +@warning_ignore("unused_parameter") +func contains(expected: String) -> GdUnitStringAssert: + return self + + +## Verifies that the current String does not contain the given String. +@warning_ignore("unused_parameter") +func not_contains(expected: String) -> GdUnitStringAssert: + return self + + +## Verifies that the current String does not contain the given String, ignoring case considerations. +@warning_ignore("unused_parameter") +func contains_ignoring_case(expected: String) -> GdUnitStringAssert: + return self + + +## Verifies that the current String does not contain the given String, ignoring case considerations. +@warning_ignore("unused_parameter") +func not_contains_ignoring_case(expected: String) -> GdUnitStringAssert: + return self + + +## Verifies that the current String starts with the given prefix. +@warning_ignore("unused_parameter") +func starts_with(expected: String) -> GdUnitStringAssert: + return self + + +## Verifies that the current String ends with the given suffix. +@warning_ignore("unused_parameter") +func ends_with(expected: String) -> GdUnitStringAssert: + return self + + +## Verifies that the current String has the expected length by used comparator. +@warning_ignore("unused_parameter") +func has_length(length: int, comparator: int = Comparator.EQUAL) -> GdUnitStringAssert: + return self diff --git a/addons/gdUnit4/src/GdUnitTestSuite.gd b/addons/gdUnit4/src/GdUnitTestSuite.gd new file mode 100644 index 0000000..7d689f6 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitTestSuite.gd @@ -0,0 +1,620 @@ +## The main class for all GdUnit test suites[br] +## This class is the main class to implement your unit tests[br] +## You have to extend and implement your test cases as described[br] +## e.g MyTests.gd [br] +## [codeblock] +## extends GdUnitTestSuite +## # testcase +## func test_case_a(): +## assert_that("value").is_equal("value") +## [/codeblock] +## @tutorial: https://mikeschulze.github.io/gdUnit4/faq/test-suite/ + +@icon("res://addons/gdUnit4/src/ui/assets/TestSuite.svg") +class_name GdUnitTestSuite +extends Node + +const NO_ARG :Variant = GdUnitConstants.NO_ARG + +### internal runtime variables that must not be overwritten!!! +@warning_ignore("unused_private_class_variable") +var __is_skipped := false +@warning_ignore("unused_private_class_variable") +var __skip_reason :String = "Unknow." +var __active_test_case :String +var __awaiter := __gdunit_awaiter() +# holds the actual execution context +var __execution_context :RefCounted + + +### We now load all used asserts and tool scripts into the cache according to the principle of "lazy loading" +### in order to noticeably reduce the loading time of the test suite. +# We go this hard way to increase the loading performance to avoid reparsing all the used scripts +# for more detailed info -> https://github.com/godotengine/godot/issues/67400 +func __lazy_load(script_path :String) -> GDScript: + return GdUnitAssertions.__lazy_load(script_path) + + +func __gdunit_assert() -> GDScript: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd") + + +func __gdunit_tools() -> GDScript: + return __lazy_load("res://addons/gdUnit4/src/core/GdUnitTools.gd") + + +func __gdunit_file_access() -> GDScript: + return __lazy_load("res://addons/gdUnit4/src/core/GdUnitFileAccess.gd") + + +func __gdunit_awaiter() -> Object: + return __lazy_load("res://addons/gdUnit4/src/GdUnitAwaiter.gd").new() + + +func __gdunit_argument_matchers() -> GDScript: + return __lazy_load("res://addons/gdUnit4/src/matchers/GdUnitArgumentMatchers.gd") + + +func __gdunit_object_interactions() -> GDScript: + return __lazy_load("res://addons/gdUnit4/src/core/GdUnitObjectInteractions.gd") + + +## This function is called before a test suite starts[br] +## You can overwrite to prepare test data or initalizize necessary variables +func before() -> void: + pass + + +## This function is called at least when a test suite is finished[br] +## You can overwrite to cleanup data created during test running +func after() -> void: + pass + + +## This function is called before a test case starts[br] +## You can overwrite to prepare test case specific data +func before_test() -> void: + pass + + +## This function is called after the test case is finished[br] +## You can overwrite to cleanup your test case specific data +func after_test() -> void: + pass + + +func is_failure(_expected_failure :String = NO_ARG) -> bool: + return Engine.get_meta("GD_TEST_FAILURE") if Engine.has_meta("GD_TEST_FAILURE") else false + + +func set_active_test_case(test_case :String) -> void: + __active_test_case = test_case + + +# === Tools ==================================================================== +# Mapps Godot error number to a readable error message. See at ERROR +# https://docs.godotengine.org/de/stable/classes/class_@globalscope.html#enum-globalscope-error +func error_as_string(error_number :int) -> String: + return error_string(error_number) + + +## A litle helper to auto freeing your created objects after test execution +func auto_free(obj :Variant) -> Variant: + if __execution_context != null: + return __execution_context.register_auto_free(obj) + else: + if is_instance_valid(obj): + obj.queue_free() + return obj + + +@warning_ignore("native_method_override") +func add_child(node :Node, force_readable_name := false, internal := Node.INTERNAL_MODE_DISABLED) -> void: + super.add_child(node, force_readable_name, internal) + if __execution_context != null: + __execution_context.orphan_monitor_start() + + +## Discard the error message triggered by a timeout (interruption).[br] +## By default, an interrupted test is reported as an error.[br] +## This function allows you to change the message to Success when an interrupted error is reported. +func discard_error_interupted_by_timeout() -> void: + __gdunit_tools().register_expect_interupted_by_timeout(self, __active_test_case) + + +## Creates a new directory under the temporary directory *user://tmp*[br] +## Useful for storing data during test execution. [br] +## The directory is automatically deleted after test suite execution +func create_temp_dir(relative_path :String) -> String: + return __gdunit_file_access().create_temp_dir(relative_path) + + +## Deletes the temporary base directory[br] +## Is called automatically after each execution of the test suite +func clean_temp_dir() -> void: + __gdunit_file_access().clear_tmp() + + +## Creates a new file under the temporary directory *user://tmp* + [br] +## with given name and given file (default = File.WRITE)[br] +## If success the returned File is automatically closed after the execution of the test suite +func create_temp_file(relative_path :String, file_name :String, mode := FileAccess.WRITE) -> FileAccess: + return __gdunit_file_access().create_temp_file(relative_path, file_name, mode) + + +## Reads a resource by given path into a PackedStringArray. +func resource_as_array(resource_path :String) -> PackedStringArray: + return __gdunit_file_access().resource_as_array(resource_path) + + +## Reads a resource by given path and returned the content as String. +func resource_as_string(resource_path :String) -> String: + return __gdunit_file_access().resource_as_string(resource_path) + + +## Reads a resource by given path and return Variand translated by str_to_var +func resource_as_var(resource_path :String) -> Variant: + return str_to_var(__gdunit_file_access().resource_as_string(resource_path)) + + +## clears the debuger error list[br] +## PROTOTYPE!!!! Don't use it for now +func clear_push_errors() -> void: + __gdunit_tools().clear_push_errors() + + +## Waits for given signal is emited by the until a specified timeout to fail[br] +## source: the object from which the signal is emitted[br] +## signal_name: signal name[br] +## args: the expected signal arguments as an array[br] +## timeout: the timeout in ms, default is set to 2000ms +func await_signal_on(source :Object, signal_name :String, args :Array = [], timeout :int = 2000) -> Variant: + return await __awaiter.await_signal_on(source, signal_name, args, timeout) + + +## Waits until the next idle frame +func await_idle_frame() -> void: + await __awaiter.await_idle_frame() + + +## Waits for for a given amount of milliseconds[br] +## example:[br] +## [codeblock] +## # waits for 100ms +## await await_millis(myNode, 100).completed +## [/codeblock][br] +## use this waiter and not `await get_tree().create_timer().timeout to prevent errors when a test case is timed out +func await_millis(timeout :int) -> void: + await __awaiter.await_millis(timeout) + + +## Creates a new scene runner to allow simulate interactions checked a scene.[br] +## The runner will manage the scene instance and release after the runner is released[br] +## example:[br] +## [codeblock] +## # creates a runner by using a instanciated scene +## var scene = load("res://foo/my_scne.tscn").instantiate() +## var runner := scene_runner(scene) +## +## # or simply creates a runner by using the scene resource path +## var runner := scene_runner("res://foo/my_scne.tscn") +## [/codeblock] +func scene_runner(scene :Variant, verbose := false) -> GdUnitSceneRunner: + return auto_free(__lazy_load("res://addons/gdUnit4/src/core/GdUnitSceneRunnerImpl.gd").new(scene, verbose)) + + +# === Mocking & Spy =========================================================== + +## do return a default value for primitive types or null +const RETURN_DEFAULTS = GdUnitMock.RETURN_DEFAULTS +## do call the real implementation +const CALL_REAL_FUNC = GdUnitMock.CALL_REAL_FUNC +## do return a default value for primitive types and a fully mocked value for Object types +## builds full deep mocked object +const RETURN_DEEP_STUB = GdUnitMock.RETURN_DEEP_STUB + + +## Creates a mock for given class name +func mock(clazz :Variant, mock_mode := RETURN_DEFAULTS) -> Variant: + return __lazy_load("res://addons/gdUnit4/src/mocking/GdUnitMockBuilder.gd").build(clazz, mock_mode) + + +## Creates a spy checked given object instance +func spy(instance :Variant) -> Variant: + return __lazy_load("res://addons/gdUnit4/src/spy/GdUnitSpyBuilder.gd").build(instance) + + +## Configures a return value for the specified function and used arguments.[br] +## [b]Example: +## [codeblock] +## # overrides the return value of myMock.is_selected() to false +## do_return(false).on(myMock).is_selected() +## [/codeblock] +func do_return(value :Variant) -> GdUnitMock: + return GdUnitMock.new(value) + + +## Verifies certain behavior happened at least once or exact number of times +func verify(obj :Variant, times := 1) -> Variant: + return __gdunit_object_interactions().verify(obj, times) + + +## Verifies no interactions is happen checked this mock or spy +func verify_no_interactions(obj :Variant) -> GdUnitAssert: + return __gdunit_object_interactions().verify_no_interactions(obj) + + +## Verifies the given mock or spy has any unverified interaction. +func verify_no_more_interactions(obj :Variant) -> GdUnitAssert: + return __gdunit_object_interactions().verify_no_more_interactions(obj) + + +## Resets the saved function call counters checked a mock or spy +func reset(obj :Variant) -> void: + __gdunit_object_interactions().reset(obj) + + +## Starts monitoring the specified source to collect all transmitted signals.[br] +## The collected signals can then be checked with 'assert_signal'.[br] +## By default, the specified source is automatically released when the test ends. +## You can control this behavior by setting auto_free to false if you do not want the source to be automatically freed.[br] +## Usage: +## [codeblock] +## var emitter := monitor_signals(MyEmitter.new()) +## # call the function to send the signal +## emitter.do_it() +## # verify the signial is emitted +## await assert_signal(emitter).is_emitted('my_signal') +## [/codeblock] +func monitor_signals(source :Object, _auto_free := true) -> Object: + __lazy_load("res://addons/gdUnit4/src/core/thread/GdUnitThreadManager.gd")\ + .get_current_context()\ + .get_signal_collector()\ + .register_emitter(source) + return auto_free(source) if _auto_free else source + + +# === Argument matchers ======================================================== +## Argument matcher to match any argument +func any() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().any() + + +## Argument matcher to match any boolean value +func any_bool() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_BOOL) + + +## Argument matcher to match any integer value +func any_int() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_INT) + + +## Argument matcher to match any float value +func any_float() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_FLOAT) + + +## Argument matcher to match any string value +func any_string() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_STRING) + + +## Argument matcher to match any Color value +func any_color() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_COLOR) + + +## Argument matcher to match any Vector typed value +func any_vector() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_types([ + TYPE_VECTOR2, + TYPE_VECTOR2I, + TYPE_VECTOR3, + TYPE_VECTOR3I, + TYPE_VECTOR4, + TYPE_VECTOR4I, + ]) + + +## Argument matcher to match any Vector2 value +func any_vector2() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_VECTOR2) + + +## Argument matcher to match any Vector2i value +func any_vector2i() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_VECTOR2I) + + +## Argument matcher to match any Vector3 value +func any_vector3() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_VECTOR3) + + +## Argument matcher to match any Vector3i value +func any_vector3i() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_VECTOR3I) + + +## Argument matcher to match any Vector4 value +func any_vector4() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_VECTOR4) + + +## Argument matcher to match any Vector3i value +func any_vector4i() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_VECTOR4I) + + +## Argument matcher to match any Rect2 value +func any_rect2() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_RECT2) + + +## Argument matcher to match any Plane value +func any_plane() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PLANE) + + +## Argument matcher to match any Quaternion value +func any_quat() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_QUATERNION) + + +## Argument matcher to match any AABB value +func any_aabb() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_AABB) + + +## Argument matcher to match any Basis value +func any_basis() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_BASIS) + + +## Argument matcher to match any Transform2D value +func any_transform_2d() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_TRANSFORM2D) + + +## Argument matcher to match any Transform3D value +func any_transform_3d() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_TRANSFORM3D) + + +## Argument matcher to match any NodePath value +func any_node_path() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_NODE_PATH) + + +## Argument matcher to match any RID value +func any_rid() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_RID) + + +## Argument matcher to match any Object value +func any_object() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_OBJECT) + + +## Argument matcher to match any Dictionary value +func any_dictionary() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_DICTIONARY) + + +## Argument matcher to match any Array value +func any_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_ARRAY) + + +## Argument matcher to match any PackedByteArray value +func any_packed_byte_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_BYTE_ARRAY) + + +## Argument matcher to match any PackedInt32Array value +func any_packed_int32_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_INT32_ARRAY) + + +## Argument matcher to match any PackedInt64Array value +func any_packed_int64_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_INT64_ARRAY) + + +## Argument matcher to match any PackedFloat32Array value +func any_packed_float32_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_FLOAT32_ARRAY) + + +## Argument matcher to match any PackedFloat64Array value +func any_packed_float64_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_FLOAT64_ARRAY) + + +## Argument matcher to match any PackedStringArray value +func any_packed_string_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_STRING_ARRAY) + + +## Argument matcher to match any PackedVector2Array value +func any_packed_vector2_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_VECTOR2_ARRAY) + + +## Argument matcher to match any PackedVector3Array value +func any_packed_vector3_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_VECTOR3_ARRAY) + + +## Argument matcher to match any PackedColorArray value +func any_packed_color_array() -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().by_type(TYPE_PACKED_COLOR_ARRAY) + + +## Argument matcher to match any instance of given class +func any_class(clazz :Object) -> GdUnitArgumentMatcher: + return __gdunit_argument_matchers().any_class(clazz) + + +# === value extract utils ====================================================== +## Builds an extractor by given function name and optional arguments +func extr(func_name :String, args := Array()) -> GdUnitValueExtractor: + return __lazy_load("res://addons/gdUnit4/src/extractors/GdUnitFuncValueExtractor.gd").new(func_name, args) + + +## Constructs a tuple by given arguments +func tuple(arg0 :Variant, + arg1 :Variant=NO_ARG, + arg2 :Variant=NO_ARG, + arg3 :Variant=NO_ARG, + arg4 :Variant=NO_ARG, + arg5 :Variant=NO_ARG, + arg6 :Variant=NO_ARG, + arg7 :Variant=NO_ARG, + arg8 :Variant=NO_ARG, + arg9 :Variant=NO_ARG) -> GdUnitTuple: + return GdUnitTuple.new(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) + + +# === Asserts ================================================================== + +## The common assertion tool to verify values. +## It checks the given value by type to fit to the best assert +func assert_that(current :Variant) -> GdUnitAssert: + match typeof(current): + TYPE_BOOL: + return assert_bool(current) + TYPE_INT: + return assert_int(current) + TYPE_FLOAT: + return assert_float(current) + TYPE_STRING: + return assert_str(current) + TYPE_VECTOR2, TYPE_VECTOR2I, TYPE_VECTOR3, TYPE_VECTOR3I, TYPE_VECTOR4, TYPE_VECTOR4I: + return assert_vector(current) + TYPE_DICTIONARY: + return assert_dict(current) + TYPE_ARRAY, TYPE_PACKED_BYTE_ARRAY, TYPE_PACKED_INT32_ARRAY, TYPE_PACKED_INT64_ARRAY,\ + TYPE_PACKED_FLOAT32_ARRAY, TYPE_PACKED_FLOAT64_ARRAY, TYPE_PACKED_STRING_ARRAY,\ + TYPE_PACKED_VECTOR2_ARRAY, TYPE_PACKED_VECTOR3_ARRAY, TYPE_PACKED_COLOR_ARRAY: + return assert_array(current) + TYPE_OBJECT, TYPE_NIL: + return assert_object(current) + _: + return __gdunit_assert().new(current) + + +## An assertion tool to verify boolean values. +func assert_bool(current :Variant) -> GdUnitBoolAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitBoolAssertImpl.gd").new(current) + + +## An assertion tool to verify String values. +func assert_str(current :Variant) -> GdUnitStringAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitStringAssertImpl.gd").new(current) + + +## An assertion tool to verify integer values. +func assert_int(current :Variant) -> GdUnitIntAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitIntAssertImpl.gd").new(current) + + +## An assertion tool to verify float values. +func assert_float(current :Variant) -> GdUnitFloatAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFloatAssertImpl.gd").new(current) + + +## An assertion tool to verify Vector values.[br] +## This assertion supports all vector types.[br] +## Usage: +## [codeblock] +## assert_vector(Vector2(1.2, 1.000001)).is_equal(Vector2(1.2, 1.000001)) +## [/codeblock] +func assert_vector(current :Variant) -> GdUnitVectorAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitVectorAssertImpl.gd").new(current) + + +## An assertion tool to verify arrays. +func assert_array(current :Variant) -> GdUnitArrayAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitArrayAssertImpl.gd").new(current) + + +## An assertion tool to verify dictionaries. +func assert_dict(current :Variant) -> GdUnitDictionaryAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitDictionaryAssertImpl.gd").new(current) + + +## An assertion tool to verify FileAccess. +func assert_file(current :Variant) -> GdUnitFileAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFileAssertImpl.gd").new(current) + + +## An assertion tool to verify Objects. +func assert_object(current :Variant) -> GdUnitObjectAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitObjectAssertImpl.gd").new(current) + + +func assert_result(current :Variant) -> GdUnitResultAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitResultAssertImpl.gd").new(current) + + +## An assertion tool that waits until a certain time for an expected function return value +func assert_func(instance :Object, func_name :String, args := Array()) -> GdUnitFuncAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFuncAssertImpl.gd").new(instance, func_name, args) + + +## An Assertion Tool to verify for emitted signals until a certain time. +func assert_signal(instance :Object) -> GdUnitSignalAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitSignalAssertImpl.gd").new(instance) + + +## An assertion tool to test for failing assertions.[br] +## This assert is only designed for internal use to verify failing asserts working as expected.[br] +## Usage: +## [codeblock] +## assert_failure(func(): assert_bool(true).is_not_equal(true)) \ +## .has_message("Expecting:\n 'true'\n not equal to\n 'true'") +## [/codeblock] +func assert_failure(assertion :Callable) -> GdUnitFailureAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFailureAssertImpl.gd").new().execute(assertion) + + +## An assertion tool to test for failing assertions.[br] +## This assert is only designed for internal use to verify failing asserts working as expected.[br] +## Usage: +## [codeblock] +## await assert_failure_await(func(): assert_bool(true).is_not_equal(true)) \ +## .has_message("Expecting:\n 'true'\n not equal to\n 'true'") +## [/codeblock] +func assert_failure_await(assertion :Callable) -> GdUnitFailureAssert: + return await __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFailureAssertImpl.gd").new().execute_and_await(assertion) + + +## An assertion tool to verify for Godot errors.[br] +## You can use to verify for certain Godot erros like failing assertions, push_error, push_warn.[br] +## Usage: +## [codeblock] +## # tests no error was occured during execution the code +## await assert_error(func (): return 0 )\ +## .is_success() +## +## # tests an push_error('test error') was occured during execution the code +## await assert_error(func (): push_error('test error') )\ +## .is_push_error('test error') +## [/codeblock] +func assert_error(current :Callable) -> GdUnitGodotErrorAssert: + return __lazy_load("res://addons/gdUnit4/src/asserts/GdUnitGodotErrorAssertImpl.gd").new(current) + + +func assert_not_yet_implemented() -> void: + __gdunit_assert().new(null).test_fail() + + +func fail(message :String) -> void: + __gdunit_assert().new(null).report_error(message) + + +# --- internal stuff do not override!!! +func ResourcePath() -> String: + return get_script().resource_path diff --git a/addons/gdUnit4/src/GdUnitTuple.gd b/addons/gdUnit4/src/GdUnitTuple.gd new file mode 100644 index 0000000..6c91002 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitTuple.gd @@ -0,0 +1,28 @@ +## A tuple implementation to hold two or many values +class_name GdUnitTuple +extends RefCounted + +const NO_ARG :Variant = GdUnitConstants.NO_ARG + +var __values :Array = Array() + + +func _init(arg0:Variant, + arg1 :Variant=NO_ARG, + arg2 :Variant=NO_ARG, + arg3 :Variant=NO_ARG, + arg4 :Variant=NO_ARG, + arg5 :Variant=NO_ARG, + arg6 :Variant=NO_ARG, + arg7 :Variant=NO_ARG, + arg8 :Variant=NO_ARG, + arg9 :Variant=NO_ARG) -> void: + __values = GdArrayTools.filter_value([arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9], NO_ARG) + + +func values() -> Array: + return __values + + +func _to_string() -> String: + return "tuple(%s)" % str(__values) diff --git a/addons/gdUnit4/src/GdUnitValueExtractor.gd b/addons/gdUnit4/src/GdUnitValueExtractor.gd new file mode 100644 index 0000000..1a34445 --- /dev/null +++ b/addons/gdUnit4/src/GdUnitValueExtractor.gd @@ -0,0 +1,9 @@ +## This is the base interface for value extraction +class_name GdUnitValueExtractor +extends RefCounted + + +## Extracts a value by given implementation +func extract_value(value :Variant) -> Variant: + push_error("Uninplemented func 'extract_value'") + return value diff --git a/addons/gdUnit4/src/GdUnitVectorAssert.gd b/addons/gdUnit4/src/GdUnitVectorAssert.gd new file mode 100644 index 0000000..915fd3b --- /dev/null +++ b/addons/gdUnit4/src/GdUnitVectorAssert.gd @@ -0,0 +1,57 @@ +## An Assertion Tool to verify Vector values +class_name GdUnitVectorAssert +extends GdUnitAssert + + +## Verifies that the current value is equal to expected one. +@warning_ignore("unused_parameter") +func is_equal(expected :Variant) -> GdUnitVectorAssert: + return self + + +## Verifies that the current value is not equal to expected one. +@warning_ignore("unused_parameter") +func is_not_equal(expected :Variant) -> GdUnitVectorAssert: + return self + + +## Verifies that the current and expected value are approximately equal. +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_equal_approx(expected :Variant, approx :Variant) -> GdUnitVectorAssert: + return self + + +## Verifies that the current value is less than the given one. +@warning_ignore("unused_parameter") +func is_less(expected :Variant) -> GdUnitVectorAssert: + return self + + +## Verifies that the current value is less than or equal the given one. +@warning_ignore("unused_parameter") +func is_less_equal(expected :Variant) -> GdUnitVectorAssert: + return self + + +## Verifies that the current value is greater than the given one. +@warning_ignore("unused_parameter") +func is_greater(expected :Variant) -> GdUnitVectorAssert: + return self + + +## Verifies that the current value is greater than or equal the given one. +@warning_ignore("unused_parameter") +func is_greater_equal(expected :Variant) -> GdUnitVectorAssert: + return self + + +## Verifies that the current value is between the given boundaries (inclusive). +@warning_ignore("unused_parameter") +func is_between(from :Variant, to :Variant) -> GdUnitVectorAssert: + return self + + +## Verifies that the current value is not between the given boundaries (inclusive). +@warning_ignore("unused_parameter") +func is_not_between(from :Variant, to :Variant) -> GdUnitVectorAssert: + return self diff --git a/addons/gdUnit4/src/asserts/CallBackValueProvider.gd b/addons/gdUnit4/src/asserts/CallBackValueProvider.gd new file mode 100644 index 0000000..6be4b3e --- /dev/null +++ b/addons/gdUnit4/src/asserts/CallBackValueProvider.gd @@ -0,0 +1,25 @@ +# a value provider unsing a callback to get `next` value from a certain function +class_name CallBackValueProvider +extends ValueProvider + +var _cb :Callable +var _args :Array + + +func _init(instance :Object, func_name :String, args :Array = Array(), force_error := true) -> void: + _cb = Callable(instance, func_name); + _args = args + if force_error and not _cb.is_valid(): + push_error("Can't find function '%s' checked instance %s" % [func_name, instance]) + + +func get_value() -> Variant: + if not _cb.is_valid(): + return null + if _args.is_empty(): + return await _cb.call() + return await _cb.callv(_args) + + +func dispose() -> void: + _cb = Callable() diff --git a/addons/gdUnit4/src/asserts/DefaultValueProvider.gd b/addons/gdUnit4/src/asserts/DefaultValueProvider.gd new file mode 100644 index 0000000..2f828fa --- /dev/null +++ b/addons/gdUnit4/src/asserts/DefaultValueProvider.gd @@ -0,0 +1,13 @@ +# default value provider, simple returns the initial value +class_name DefaultValueProvider +extends ValueProvider + +var _value: Variant + + +func _init(value: Variant) -> void: + _value = value + + +func get_value() -> Variant: + return _value diff --git a/addons/gdUnit4/src/asserts/GdAssertMessages.gd b/addons/gdUnit4/src/asserts/GdAssertMessages.gd new file mode 100644 index 0000000..01402ff --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdAssertMessages.gd @@ -0,0 +1,615 @@ +class_name GdAssertMessages +extends Resource + +const WARN_COLOR = "#EFF883" +const ERROR_COLOR = "#CD5C5C" +const VALUE_COLOR = "#1E90FF" +const SUB_COLOR := Color(1, 0, 0, .3) +const ADD_COLOR := Color(0, 1, 0, .3) + + +static func format_dict(value :Dictionary) -> String: + if value.is_empty(): + return "{ }" + var as_rows := var_to_str(value).split("\n") + for index in range( 1, as_rows.size()-1): + as_rows[index] = " " + as_rows[index] + as_rows[-1] = " " + as_rows[-1] + return "\n".join(as_rows) + + +# improved version of InputEvent as text +static func input_event_as_text(event :InputEvent) -> String: + var text := "" + if event is InputEventKey: + text += "InputEventKey : key='%s', pressed=%s, keycode=%d, physical_keycode=%s" % [ + event.as_text(), event.pressed, event.keycode, event.physical_keycode] + else: + text += event.as_text() + if event is InputEventMouse: + text += ", global_position %s" % event.global_position + if event is InputEventWithModifiers: + text += ", shift=%s, alt=%s, control=%s, meta=%s, command=%s" % [ + event.shift_pressed, event.alt_pressed, event.ctrl_pressed, event.meta_pressed, event.command_or_control_autoremap] + return text + + +static func _colored_string_div(characters :String) -> String: + return colored_array_div(characters.to_utf8_buffer()) + + +static func colored_array_div(characters :PackedByteArray) -> String: + if characters.is_empty(): + return "" + var result := PackedByteArray() + var index := 0 + var missing_chars := PackedByteArray() + var additional_chars := PackedByteArray() + + while index < characters.size(): + var character := characters[index] + match character: + GdDiffTool.DIV_ADD: + index += 1 + additional_chars.append(characters[index]) + GdDiffTool.DIV_SUB: + index += 1 + missing_chars.append(characters[index]) + _: + if not missing_chars.is_empty(): + result.append_array(format_chars(missing_chars, SUB_COLOR)) + missing_chars = PackedByteArray() + if not additional_chars.is_empty(): + result.append_array(format_chars(additional_chars, ADD_COLOR)) + additional_chars = PackedByteArray() + result.append(character) + index += 1 + + result.append_array(format_chars(missing_chars, SUB_COLOR)) + result.append_array(format_chars(additional_chars, ADD_COLOR)) + return result.get_string_from_utf8() + + +static func _typed_value(value :Variant) -> String: + return GdDefaultValueDecoder.decode(value) + + +static func _warning(error :String) -> String: + return "[color=%s]%s[/color]" % [WARN_COLOR, error] + + +static func _error(error :String) -> String: + return "[color=%s]%s[/color]" % [ERROR_COLOR, error] + + +static func _nerror(number :Variant) -> String: + match typeof(number): + TYPE_INT: + return "[color=%s]%d[/color]" % [ERROR_COLOR, number] + TYPE_FLOAT: + return "[color=%s]%f[/color]" % [ERROR_COLOR, number] + _: + return "[color=%s]%s[/color]" % [ERROR_COLOR, str(number)] + + +static func _colored_value(value :Variant) -> String: + match typeof(value): + TYPE_STRING, TYPE_STRING_NAME: + return "'[color=%s]%s[/color]'" % [VALUE_COLOR, _colored_string_div(value)] + TYPE_INT: + return "'[color=%s]%d[/color]'" % [VALUE_COLOR, value] + TYPE_FLOAT: + return "'[color=%s]%s[/color]'" % [VALUE_COLOR, _typed_value(value)] + TYPE_COLOR: + return "'[color=%s]%s[/color]'" % [VALUE_COLOR, _typed_value(value)] + TYPE_OBJECT: + if value == null: + return "'[color=%s][/color]'" % [VALUE_COLOR] + if value is InputEvent: + return "[color=%s]<%s>[/color]" % [VALUE_COLOR, input_event_as_text(value)] + if value.has_method("_to_string"): + return "[color=%s]<%s>[/color]" % [VALUE_COLOR, str(value)] + return "[color=%s]<%s>[/color]" % [VALUE_COLOR, value.get_class()] + TYPE_DICTIONARY: + return "'[color=%s]%s[/color]'" % [VALUE_COLOR, format_dict(value)] + _: + if GdArrayTools.is_array_type(value): + return "'[color=%s]%s[/color]'" % [VALUE_COLOR, _typed_value(value)] + return "'[color=%s]%s[/color]'" % [VALUE_COLOR, value] + + + +static func _index_report_as_table(index_reports :Array) -> String: + var table := "[table=3]$cells[/table]" + var header := "[cell][right][b]$text[/b][/right]\t[/cell]" + var cell := "[cell][right]$text[/right]\t[/cell]" + var cells := header.replace("$text", "Index") + header.replace("$text", "Current") + header.replace("$text", "Expected") + for report :Variant in index_reports: + var index :String = str(report["index"]) + var current :String = str(report["current"]) + var expected :String = str(report["expected"]) + cells += cell.replace("$text", index) + cell.replace("$text", current) + cell.replace("$text", expected) + return table.replace("$cells", cells) + + +static func orphan_detected_on_suite_setup(count :int) -> String: + return "%s\n Detected <%d> orphan nodes during test suite setup stage! [b]Check before() and after()![/b]" % [ + _warning("WARNING:"), count] + + +static func orphan_detected_on_test_setup(count :int) -> String: + return "%s\n Detected <%d> orphan nodes during test setup! [b]Check before_test() and after_test()![/b]" % [ + _warning("WARNING:"), count] + + +static func orphan_detected_on_test(count :int) -> String: + return "%s\n Detected <%d> orphan nodes during test execution!" % [ + _warning("WARNING:"), count] + + +static func fuzzer_interuped(iterations: int, error: String) -> String: + return "%s %s %s\n %s" % [ + _error("Found an error after"), + _colored_value(iterations + 1), + _error("test iterations"), + error] + + +static func test_timeout(timeout :int) -> String: + return "%s\n %s" % [_error("Timeout !"), _colored_value("Test timed out after %s" % LocalTime.elapsed(timeout))] + + +# gdlint:disable = mixed-tabs-and-spaces +static func test_suite_skipped(hint :String, skip_count :int) -> String: + return """ + %s + Tests skipped: %s + Reason: %s + """.dedent().trim_prefix("\n")\ + % [_error("Entire test-suite is skipped!"), _colored_value(skip_count), _colored_value(hint)] + + +static func test_skipped(hint :String) -> String: + return """ + %s + Reason: %s + """.dedent().trim_prefix("\n")\ + % [_error("This test is skipped!"), _colored_value(hint)] + + +static func error_not_implemented() -> String: + return _error("Test not implemented!") + + +static func error_is_null(current :Variant) -> String: + return "%s %s but was %s" % [_error("Expecting:"), _colored_value(null), _colored_value(current)] + + +static func error_is_not_null() -> String: + return "%s %s" % [_error("Expecting: not to be"), _colored_value(null)] + + +static func error_equal(current :Variant, expected :Variant, index_reports :Array = []) -> String: + var report := """ + %s + %s + but was + %s""".dedent().trim_prefix("\n") % [_error("Expecting:"), _colored_value(expected), _colored_value(current)] + if not index_reports.is_empty(): + report += "\n\n%s\n%s" % [_error("Differences found:"), _index_report_as_table(index_reports)] + return report + + +static func error_not_equal(current :Variant, expected :Variant) -> String: + return "%s\n %s\n not equal to\n %s" % [_error("Expecting:"), _colored_value(expected), _colored_value(current)] + + +static func error_not_equal_case_insensetiv(current :Variant, expected :Variant) -> String: + return "%s\n %s\n not equal to (case insensitiv)\n %s" % [ + _error("Expecting:"), _colored_value(expected), _colored_value(current)] + + +static func error_is_empty(current :Variant) -> String: + return "%s\n must be empty but was\n %s" % [_error("Expecting:"), _colored_value(current)] + + +static func error_is_not_empty() -> String: + return "%s\n must not be empty" % [_error("Expecting:")] + + +static func error_is_same(current :Variant, expected :Variant) -> String: + return "%s\n %s\n to refer to the same object\n %s" % [_error("Expecting:"), _colored_value(expected), _colored_value(current)] + + +@warning_ignore("unused_parameter") +static func error_not_same(_current :Variant, expected :Variant) -> String: + return "%s\n %s" % [_error("Expecting not same:"), _colored_value(expected)] + + +static func error_not_same_error(current :Variant, expected :Variant) -> String: + return "%s\n %s\n but was\n %s" % [_error("Expecting error message:"), _colored_value(expected), _colored_value(current)] + + +static func error_is_instanceof(current: GdUnitResult, expected :GdUnitResult) -> String: + return "%s\n %s\n But it was %s" % [_error("Expected instance of:"),\ + _colored_value(expected.or_else(null)), _colored_value(current.or_else(null))] + + +# -- Boolean Assert specific messages ----------------------------------------------------- +static func error_is_true(current :Variant) -> String: + return "%s %s but is %s" % [_error("Expecting:"), _colored_value(true), _colored_value(current)] + + +static func error_is_false(current :Variant) -> String: + return "%s %s but is %s" % [_error("Expecting:"), _colored_value(false), _colored_value(current)] + + +# - Integer/Float Assert specific messages ----------------------------------------------------- + +static func error_is_even(current :Variant) -> String: + return "%s\n %s must be even" % [_error("Expecting:"), _colored_value(current)] + + +static func error_is_odd(current :Variant) -> String: + return "%s\n %s must be odd" % [_error("Expecting:"), _colored_value(current)] + + +static func error_is_negative(current :Variant) -> String: + return "%s\n %s be negative" % [_error("Expecting:"), _colored_value(current)] + + +static func error_is_not_negative(current :Variant) -> String: + return "%s\n %s be not negative" % [_error("Expecting:"), _colored_value(current)] + + +static func error_is_zero(current :Variant) -> String: + return "%s\n equal to 0 but is %s" % [_error("Expecting:"), _colored_value(current)] + + +static func error_is_not_zero() -> String: + return "%s\n not equal to 0" % [_error("Expecting:")] + + +static func error_is_wrong_type(current_type :Variant.Type, expected_type :Variant.Type) -> String: + return "%s\n Expecting type %s but is %s" % [ + _error("Unexpected type comparison:"), + _colored_value(GdObjects.type_as_string(current_type)), + _colored_value(GdObjects.type_as_string(expected_type))] + + +static func error_is_value(operation :int, current :Variant, expected :Variant, expected2 :Variant = null) -> String: + match operation: + Comparator.EQUAL: + return "%s\n %s but was '%s'" % [_error("Expecting:"), _colored_value(expected), _nerror(current)] + Comparator.LESS_THAN: + return "%s\n %s but was '%s'" % [_error("Expecting to be less than:"), _colored_value(expected), _nerror(current)] + Comparator.LESS_EQUAL: + return "%s\n %s but was '%s'" % [_error("Expecting to be less than or equal:"), _colored_value(expected), _nerror(current)] + Comparator.GREATER_THAN: + return "%s\n %s but was '%s'" % [_error("Expecting to be greater than:"), _colored_value(expected), _nerror(current)] + Comparator.GREATER_EQUAL: + return "%s\n %s but was '%s'" % [_error("Expecting to be greater than or equal:"), _colored_value(expected), _nerror(current)] + Comparator.BETWEEN_EQUAL: + return "%s\n %s\n in range between\n %s <> %s" % [ + _error("Expecting:"), _colored_value(current), _colored_value(expected), _colored_value(expected2)] + Comparator.NOT_BETWEEN_EQUAL: + return "%s\n %s\n not in range between\n %s <> %s" % [ + _error("Expecting:"), _colored_value(current), _colored_value(expected), _colored_value(expected2)] + return "TODO create expected message" + + +static func error_is_in(current :Variant, expected :Array) -> String: + return "%s\n %s\n is in\n %s" % [_error("Expecting:"), _colored_value(current), _colored_value(str(expected))] + + +static func error_is_not_in(current :Variant, expected :Array) -> String: + return "%s\n %s\n is not in\n %s" % [_error("Expecting:"), _colored_value(current), _colored_value(str(expected))] + + +# - StringAssert --------------------------------------------------------------------------------- +static func error_equal_ignoring_case(current :Variant, expected :Variant) -> String: + return "%s\n %s\n but was\n %s (ignoring case)" % [_error("Expecting:"), _colored_value(expected), _colored_value(current)] + + +static func error_contains(current :Variant, expected :Variant) -> String: + return "%s\n %s\n do contains\n %s" % [_error("Expecting:"), _colored_value(current), _colored_value(expected)] + + +static func error_not_contains(current :Variant, expected :Variant) -> String: + return "%s\n %s\n not do contain\n %s" % [_error("Expecting:"), _colored_value(current), _colored_value(expected)] + + +static func error_contains_ignoring_case(current :Variant, expected :Variant) -> String: + return "%s\n %s\n contains\n %s\n (ignoring case)" % [_error("Expecting:"), _colored_value(current), _colored_value(expected)] + + +static func error_not_contains_ignoring_case(current :Variant, expected :Variant) -> String: + return "%s\n %s\n not do contains\n %s\n (ignoring case)" % [_error("Expecting:"), _colored_value(current), _colored_value(expected)] + + +static func error_starts_with(current :Variant, expected :Variant) -> String: + return "%s\n %s\n to start with\n %s" % [_error("Expecting:"), _colored_value(current), _colored_value(expected)] + + +static func error_ends_with(current :Variant, expected :Variant) -> String: + return "%s\n %s\n to end with\n %s" % [_error("Expecting:"), _colored_value(current), _colored_value(expected)] + + +static func error_has_length(current :Variant, expected: int, compare_operator :int) -> String: + var current_length :Variant = current.length() if current != null else null + match compare_operator: + Comparator.EQUAL: + return "%s\n %s but was '%s' in\n %s" % [ + _error("Expecting size:"), _colored_value(expected), _nerror(current_length), _colored_value(current)] + Comparator.LESS_THAN: + return "%s\n %s but was '%s' in\n %s" % [ + _error("Expecting size to be less than:"), _colored_value(expected), _nerror(current_length), _colored_value(current)] + Comparator.LESS_EQUAL: + return "%s\n %s but was '%s' in\n %s" % [ + _error("Expecting size to be less than or equal:"), _colored_value(expected), + _nerror(current_length), _colored_value(current)] + Comparator.GREATER_THAN: + return "%s\n %s but was '%s' in\n %s" % [ + _error("Expecting size to be greater than:"), _colored_value(expected), + _nerror(current_length), _colored_value(current)] + Comparator.GREATER_EQUAL: + return "%s\n %s but was '%s' in\n %s" % [ + _error("Expecting size to be greater than or equal:"), _colored_value(expected), + _nerror(current_length), _colored_value(current)] + return "TODO create expected message" + + +# - ArrayAssert specific messgaes --------------------------------------------------- + +static func error_arr_contains(current :Variant, expected :Array, not_expect :Array, not_found :Array, by_reference :bool) -> String: + var failure_message := "Expecting contains SAME elements:" if by_reference else "Expecting contains elements:" + var error := "%s\n %s\n do contains (in any order)\n %s" % [ + _error(failure_message), _colored_value(current), _colored_value(expected)] + if not not_expect.is_empty(): + error += "\nbut some elements where not expected:\n %s" % _colored_value(not_expect) + if not not_found.is_empty(): + var prefix := "but" if not_expect.is_empty() else "and" + error += "\n%s could not find elements:\n %s" % [prefix, _colored_value(not_found)] + return error + + +static func error_arr_contains_exactly( + current :Variant, + expected :Variant, + not_expect :Variant, + not_found :Variant, compare_mode :GdObjects.COMPARE_MODE) -> String: + var failure_message := ( + "Expecting contains exactly elements:" if compare_mode == GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST + else "Expecting contains SAME exactly elements:" + ) + if not_expect.is_empty() and not_found.is_empty(): + var diff := _find_first_diff(current, expected) + return "%s\n %s\n do contains (in same order)\n %s\n but has different order %s" % [ + _error(failure_message), _colored_value(current), _colored_value(expected), diff] + + var error := "%s\n %s\n do contains (in same order)\n %s" % [ + _error(failure_message), _colored_value(current), _colored_value(expected)] + if not not_expect.is_empty(): + error += "\nbut some elements where not expected:\n %s" % _colored_value(not_expect) + if not not_found.is_empty(): + var prefix := "but" if not_expect.is_empty() else "and" + error += "\n%s could not find elements:\n %s" % [prefix, _colored_value(not_found)] + return error + + +static func error_arr_contains_exactly_in_any_order( + current :Variant, + expected :Array, + not_expect :Array, + not_found :Array, + compare_mode :GdObjects.COMPARE_MODE) -> String: + + var failure_message := ( + "Expecting contains exactly elements:" if compare_mode == GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST + else "Expecting contains SAME exactly elements:" + ) + var error := "%s\n %s\n do contains exactly (in any order)\n %s" % [ + _error(failure_message), _colored_value(current), _colored_value(expected)] + if not not_expect.is_empty(): + error += "\nbut some elements where not expected:\n %s" % _colored_value(not_expect) + if not not_found.is_empty(): + var prefix := "but" if not_expect.is_empty() else "and" + error += "\n%s could not find elements:\n %s" % [prefix, _colored_value(not_found)] + return error + + +static func error_arr_not_contains(current :Array, expected :Array, found :Array, compare_mode :GdObjects.COMPARE_MODE) -> String: + var failure_message := "Expecting:" if compare_mode == GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST else "Expecting SAME:" + var error := "%s\n %s\n do not contains\n %s" % [ + _error(failure_message), _colored_value(current), _colored_value(expected)] + if not found.is_empty(): + error += "\n but found elements:\n %s" % _colored_value(found) + return error + + +# - DictionaryAssert specific messages ---------------------------------------------- +static func error_contains_keys(current :Array, expected :Array, keys_not_found :Array, compare_mode :GdObjects.COMPARE_MODE) -> String: + var failure := ( + "Expecting contains keys:" if compare_mode == GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST + else "Expecting contains SAME keys:" + ) + return "%s\n %s\n to contains:\n %s\n but can't find key's:\n %s" % [ + _error(failure), _colored_value(current), _colored_value(expected), _colored_value(keys_not_found)] + + +static func error_not_contains_keys(current :Array, expected :Array, keys_not_found :Array, compare_mode :GdObjects.COMPARE_MODE) -> String: + var failure := ( + "Expecting NOT contains keys:" if compare_mode == GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST + else "Expecting NOT contains SAME keys" + ) + return "%s\n %s\n do not contains:\n %s\n but contains key's:\n %s" % [ + _error(failure), _colored_value(current), _colored_value(expected), _colored_value(keys_not_found)] + + +static func error_contains_key_value(key :Variant, value :Variant, current_value :Variant, compare_mode :GdObjects.COMPARE_MODE) -> String: + var failure := ( + "Expecting contains key and value:" if compare_mode == GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST + else "Expecting contains SAME key and value:" + ) + return "%s\n %s : %s\n but contains\n %s : %s" % [ + _error(failure), _colored_value(key), _colored_value(value), _colored_value(key), _colored_value(current_value)] + + +# - ResultAssert specific errors ---------------------------------------------------- +static func error_result_is_empty(current :GdUnitResult) -> String: + return _result_error_message(current, GdUnitResult.EMPTY) + + +static func error_result_is_success(current :GdUnitResult) -> String: + return _result_error_message(current, GdUnitResult.SUCCESS) + + +static func error_result_is_warning(current :GdUnitResult) -> String: + return _result_error_message(current, GdUnitResult.WARN) + + +static func error_result_is_error(current :GdUnitResult) -> String: + return _result_error_message(current, GdUnitResult.ERROR) + + +static func error_result_has_message(current :String, expected :String) -> String: + return "%s\n %s\n but was\n %s." % [_error("Expecting:"), _colored_value(expected), _colored_value(current)] + + +static func error_result_has_message_on_success(expected :String) -> String: + return "%s\n %s\n but the GdUnitResult is a success." % [_error("Expecting:"), _colored_value(expected)] + + +static func error_result_is_value(current :Variant, expected :Variant) -> String: + return "%s\n %s\n but was\n %s." % [_error("Expecting to contain same value:"), _colored_value(expected), _colored_value(current)] + + +static func _result_error_message(current :GdUnitResult, expected_type :int) -> String: + if current == null: + return _error("Expecting the result must be a %s but was ." % result_type(expected_type)) + if current.is_success(): + return _error("Expecting the result must be a %s but was SUCCESS." % result_type(expected_type)) + var error := "Expecting the result must be a %s but was %s:" % [result_type(expected_type), result_type(current._state)] + return "%s\n %s" % [_error(error), _colored_value(result_message(current))] + + +static func error_interrupted(func_name :String, expected :Variant, elapsed :String) -> String: + func_name = humanized(func_name) + if expected == null: + return "%s %s but timed out after %s" % [_error("Expected:"), func_name, elapsed] + return "%s %s %s but timed out after %s" % [_error("Expected:"), func_name, _colored_value(expected), elapsed] + + +static func error_wait_signal(signal_name :String, args :Array, elapsed :String) -> String: + if args.is_empty(): + return "%s %s but timed out after %s" % [ + _error("Expecting emit signal:"), _colored_value(signal_name + "()"), elapsed] + return "%s %s but timed out after %s" % [ + _error("Expecting emit signal:"), _colored_value(signal_name + "(" + str(args) + ")"), elapsed] + + +static func error_signal_emitted(signal_name :String, args :Array, elapsed :String) -> String: + if args.is_empty(): + return "%s %s but is emitted after %s" % [ + _error("Expecting do not emit signal:"), _colored_value(signal_name + "()"), elapsed] + return "%s %s but is emitted after %s" % [ + _error("Expecting do not emit signal:"), _colored_value(signal_name + "(" + str(args) + ")"), elapsed] + + +static func error_await_signal_on_invalid_instance(source :Variant, signal_name :String, args :Array) -> String: + return "%s\n await_signal_on(%s, %s, %s)" % [ + _error("Invalid source! Can't await on signal:"), _colored_value(source), signal_name, args] + + +static func result_type(type :int) -> String: + match type: + GdUnitResult.SUCCESS: return "SUCCESS" + GdUnitResult.WARN: return "WARNING" + GdUnitResult.ERROR: return "ERROR" + GdUnitResult.EMPTY: return "EMPTY" + return "UNKNOWN" + + +static func result_message(result :GdUnitResult) -> String: + match result._state: + GdUnitResult.SUCCESS: return "" + GdUnitResult.WARN: return result.warn_message() + GdUnitResult.ERROR: return result.error_message() + GdUnitResult.EMPTY: return "" + return "UNKNOWN" +# ----------------------------------------------------------------------------------- + +# - Spy|Mock specific errors ---------------------------------------------------- +static func error_no_more_interactions(summary :Dictionary) -> String: + var interactions := PackedStringArray() + for args :Variant in summary.keys(): + var times :int = summary[args] + interactions.append(_format_arguments(args, times)) + return "%s\n%s\n%s" % [_error("Expecting no more interactions!"), _error("But found interactions on:"), "\n".join(interactions)] + + +static func error_validate_interactions(current_interactions :Dictionary, expected_interactions :Dictionary) -> String: + var interactions := PackedStringArray() + for args :Variant in current_interactions.keys(): + var times :int = current_interactions[args] + interactions.append(_format_arguments(args, times)) + var expected_interaction := _format_arguments(expected_interactions.keys()[0], expected_interactions.values()[0]) + return "%s\n%s\n%s\n%s" % [ + _error("Expecting interaction on:"), expected_interaction, _error("But found interactions on:"), "\n".join(interactions)] + + +static func _format_arguments(args :Array, times :int) -> String: + var fname :String = args[0] + var fargs := args.slice(1) as Array + var typed_args := _to_typed_args(fargs) + var fsignature := _colored_value("%s(%s)" % [fname, ", ".join(typed_args)]) + return " %s %d time's" % [fsignature, times] + + +static func _to_typed_args(args :Array) -> PackedStringArray: + var typed := PackedStringArray() + for arg :Variant in args: + typed.append(_format_arg(arg) + " :" + GdObjects.type_as_string(typeof(arg))) + return typed + + +static func _format_arg(arg :Variant) -> String: + if arg is InputEvent: + return input_event_as_text(arg) + return str(arg) + + +static func _find_first_diff(left :Array, right :Array) -> String: + for index in left.size(): + var l :Variant = left[index] + var r :Variant = "" if index >= right.size() else right[index] + if not GdObjects.equals(l, r): + return "at position %s\n '%s' vs '%s'" % [_colored_value(index), _typed_value(l), _typed_value(r)] + return "" + + +static func error_has_size(current :Variant, expected: int) -> String: + var current_size :Variant = null if current == null else current.size() + return "%s\n %s\n but was\n %s" % [_error("Expecting size:"), _colored_value(expected), _colored_value(current_size)] + + +static func error_contains_exactly(current: Array, expected: Array) -> String: + return "%s\n %s\n but was\n %s" % [_error("Expecting exactly equal:"), _colored_value(expected), _colored_value(current)] + + +static func format_chars(characters :PackedByteArray, type :Color) -> PackedByteArray: + if characters.size() == 0:# or characters[0] == 10: + return characters + var result := PackedByteArray() + var message := "[bgcolor=#%s][color=with]%s[/color][/bgcolor]" % [ + type.to_html(), characters.get_string_from_utf8().replace("\n", "")] + result.append_array(message.to_utf8_buffer()) + return result + + +static func format_invalid(value :String) -> String: + return "[bgcolor=#%s][color=with]%s[/color][/bgcolor]" % [SUB_COLOR.to_html(), value] + + +static func humanized(value :String) -> String: + return value.replace("_", " ") diff --git a/addons/gdUnit4/src/asserts/GdAssertReports.gd b/addons/gdUnit4/src/asserts/GdAssertReports.gd new file mode 100644 index 0000000..1ac9e04 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdAssertReports.gd @@ -0,0 +1,55 @@ +class_name GdAssertReports +extends RefCounted + +const LAST_ERROR = "last_assert_error_message" +const LAST_ERROR_LINE = "last_assert_error_line" + + +static func report_success() -> void: + GdUnitSignals.instance().gdunit_set_test_failed.emit(false) + GdAssertReports.set_last_error_line_number(-1) + Engine.remove_meta(LAST_ERROR) + + +static func report_warning(message :String, line_number :int) -> void: + GdUnitSignals.instance().gdunit_set_test_failed.emit(false) + send_report(GdUnitReport.new().create(GdUnitReport.WARN, line_number, message)) + + +static func report_error(message:String, line_number :int) -> void: + GdUnitSignals.instance().gdunit_set_test_failed.emit(true) + GdAssertReports.set_last_error_line_number(line_number) + Engine.set_meta(LAST_ERROR, message) + # if we expect to fail we handle as success test + if _do_expect_assert_failing(): + return + send_report(GdUnitReport.new().create(GdUnitReport.FAILURE, line_number, message)) + + +static func reset_last_error_line_number() -> void: + Engine.remove_meta(LAST_ERROR_LINE) + + +static func set_last_error_line_number(line_number :int) -> void: + Engine.set_meta(LAST_ERROR_LINE, line_number) + + +static func get_last_error_line_number() -> int: + if Engine.has_meta(LAST_ERROR_LINE): + return Engine.get_meta(LAST_ERROR_LINE) + return -1 + + +static func _do_expect_assert_failing() -> bool: + if Engine.has_meta(GdUnitConstants.EXPECT_ASSERT_REPORT_FAILURES): + return Engine.get_meta(GdUnitConstants.EXPECT_ASSERT_REPORT_FAILURES) + return false + + +static func current_failure() -> String: + return Engine.get_meta(LAST_ERROR) + + +static func send_report(report :GdUnitReport) -> void: + var execution_context_id := GdUnitThreadManager.get_current_context().get_execution_context_id() + GdUnitSignals.instance().gdunit_report.emit(execution_context_id, report) diff --git a/addons/gdUnit4/src/asserts/GdUnitArrayAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitArrayAssertImpl.gd new file mode 100644 index 0000000..8b71105 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitArrayAssertImpl.gd @@ -0,0 +1,350 @@ +extends GdUnitArrayAssert + + +var _base :GdUnitAssert +var _current_value_provider :ValueProvider + + +func _init(current :Variant) -> void: + _current_value_provider = DefaultValueProvider.new(current) + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if not _validate_value_type(current): + report_error("GdUnitArrayAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func report_success() -> GdUnitArrayAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitArrayAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitArrayAssert: + _base.override_failure_message(message) + return self + + +func _validate_value_type(value :Variant) -> bool: + return value == null or GdArrayTools.is_array_type(value) + + +func get_current_value() -> Variant: + return _current_value_provider.get_value() + + +func max_length(left :Variant, right :Variant) -> int: + var ls := str(left).length() + var rs := str(right).length() + return rs if ls < rs else ls + + +func _array_equals_div(current :Array, expected :Array, case_sensitive :bool = false) -> Array: + var current_value := PackedStringArray(current) + var expected_value := PackedStringArray(expected) + var index_report := Array() + for index in current_value.size(): + var c := current_value[index] + if index < expected_value.size(): + var e := expected_value[index] + if not GdObjects.equals(c, e, case_sensitive): + var length := max_length(c, e) + current_value[index] = GdAssertMessages.format_invalid(c.lpad(length)) + expected_value[index] = e.lpad(length) + index_report.push_back({"index" : index, "current" :c, "expected": e}) + else: + current_value[index] = GdAssertMessages.format_invalid(c) + index_report.push_back({"index" : index, "current" :c, "expected": ""}) + + for index in range(current.size(), expected_value.size()): + var value := expected_value[index] + expected_value[index] = GdAssertMessages.format_invalid(value) + index_report.push_back({"index" : index, "current" : "", "expected": value}) + return [current_value, expected_value, index_report] + + +func _array_div(compare_mode :GdObjects.COMPARE_MODE, left :Array[Variant], right :Array[Variant], _same_order := false) -> Array[Variant]: + var not_expect := left.duplicate(true) + var not_found := right.duplicate(true) + for index_c in left.size(): + var c :Variant = left[index_c] + for index_e in right.size(): + var e :Variant = right[index_e] + if GdObjects.equals(c, e, false, compare_mode): + GdArrayTools.erase_value(not_expect, e) + GdArrayTools.erase_value(not_found, c) + break + return [not_expect, not_found] + + +func _contains(expected :Variant, compare_mode :GdObjects.COMPARE_MODE) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var by_reference := compare_mode == GdObjects.COMPARE_MODE.OBJECT_REFERENCE + var current_value :Variant = get_current_value() + if current_value == null: + return report_error(GdAssertMessages.error_arr_contains(current_value, expected, [], expected, by_reference)) + var diffs := _array_div(compare_mode, current_value, expected) + #var not_expect := diffs[0] as Array + var not_found := diffs[1] as Array + if not not_found.is_empty(): + return report_error(GdAssertMessages.error_arr_contains(current_value, expected, [], not_found, by_reference)) + return report_success() + + +func _contains_exactly(expected :Variant, compare_mode :GdObjects.COMPARE_MODE) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current_value :Variant = get_current_value() + if current_value == null: + return report_error(GdAssertMessages.error_arr_contains_exactly(current_value, expected, [], expected, compare_mode)) + # has same content in same order + if GdObjects.equals(Array(current_value), Array(expected), false, compare_mode): + return report_success() + # check has same elements but in different order + if GdObjects.equals_sorted(Array(current_value), Array(expected), false, compare_mode): + return report_error(GdAssertMessages.error_arr_contains_exactly(current_value, expected, [], [], compare_mode)) + # find the difference + var diffs := _array_div(compare_mode, current_value, expected, GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST) + var not_expect := diffs[0] as Array[Variant] + var not_found := diffs[1] as Array[Variant] + return report_error(GdAssertMessages.error_arr_contains_exactly(current_value, expected, not_expect, not_found, compare_mode)) + + +func _contains_exactly_in_any_order(expected :Variant, compare_mode :GdObjects.COMPARE_MODE) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current_value :Variant = get_current_value() + if current_value == null: + return report_error(GdAssertMessages.error_arr_contains_exactly_in_any_order(current_value, expected, [], expected, compare_mode)) + # find the difference + var diffs := _array_div(compare_mode, current_value, expected, false) + var not_expect := diffs[0] as Array + var not_found := diffs[1] as Array + if not_expect.is_empty() and not_found.is_empty(): + return report_success() + return report_error(GdAssertMessages.error_arr_contains_exactly_in_any_order(current_value, expected, not_expect, not_found, compare_mode)) + + +func _not_contains(expected :Variant, compare_mode :GdObjects.COMPARE_MODE) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current_value :Variant = get_current_value() + if current_value == null: + return report_error(GdAssertMessages.error_arr_contains_exactly_in_any_order(current_value, expected, [], expected, compare_mode)) + var diffs := _array_div(compare_mode, current_value, expected) + var found := diffs[0] as Array + if found.size() == current_value.size(): + return report_success() + var diffs2 := _array_div(compare_mode, expected, diffs[1]) + return report_error(GdAssertMessages.error_arr_not_contains(current_value, expected, diffs2[0], compare_mode)) + + +func is_null() -> GdUnitArrayAssert: + _base.is_null() + return self + + +func is_not_null() -> GdUnitArrayAssert: + _base.is_not_null() + return self + + +# Verifies that the current String is equal to the given one. +func is_equal(expected :Variant) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current_value :Variant = get_current_value() + if current_value == null and expected != null: + return report_error(GdAssertMessages.error_equal(null, expected)) + if not GdObjects.equals(current_value, expected): + var diff := _array_equals_div(current_value, expected) + var expected_as_list := GdArrayTools.as_string(diff[0], false) + var current_as_list := GdArrayTools.as_string(diff[1], false) + var index_report :Variant = diff[2] + return report_error(GdAssertMessages.error_equal(expected_as_list, current_as_list, index_report)) + return report_success() + + +# Verifies that the current Array is equal to the given one, ignoring case considerations. +func is_equal_ignoring_case(expected :Variant) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current_value :Variant = get_current_value() + if current_value == null and expected != null: + return report_error(GdAssertMessages.error_equal(null, GdArrayTools.as_string(expected))) + if not GdObjects.equals(current_value, expected, true): + var diff := _array_equals_div(current_value, expected, true) + var expected_as_list := GdArrayTools.as_string(diff[0]) + var current_as_list := GdArrayTools.as_string(diff[1]) + var index_report :Variant = diff[2] + return report_error(GdAssertMessages.error_equal(expected_as_list, current_as_list, index_report)) + return report_success() + + +func is_not_equal(expected :Variant) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current_value :Variant = get_current_value() + if GdObjects.equals(current_value, expected): + return report_error(GdAssertMessages.error_not_equal(current_value, expected)) + return report_success() + + +func is_not_equal_ignoring_case(expected :Variant) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current_value :Variant = get_current_value() + if GdObjects.equals(current_value, expected, true): + var c := GdArrayTools.as_string(current_value) + var e := GdArrayTools.as_string(expected) + return report_error(GdAssertMessages.error_not_equal_case_insensetiv(c, e)) + return report_success() + + +func is_empty() -> GdUnitArrayAssert: + var current_value :Variant = get_current_value() + if current_value == null or current_value.size() > 0: + return report_error(GdAssertMessages.error_is_empty(current_value)) + return report_success() + + +func is_not_empty() -> GdUnitArrayAssert: + var current_value :Variant = get_current_value() + if current_value != null and current_value.size() == 0: + return report_error(GdAssertMessages.error_is_not_empty()) + return report_success() + + +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_same(expected :Variant) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current :Variant = get_current_value() + if not is_same(current, expected): + report_error(GdAssertMessages.error_is_same(current, expected)) + return self + + +func is_not_same(expected :Variant) -> GdUnitArrayAssert: + if not _validate_value_type(expected): + return report_error("ERROR: expected value: <%s>\n is not a Array Type!" % GdObjects.typeof_as_string(expected)) + var current :Variant = get_current_value() + if is_same(current, expected): + report_error(GdAssertMessages.error_not_same(current, expected)) + return self + + +func has_size(expected: int) -> GdUnitArrayAssert: + var current_value :Variant= get_current_value() + if current_value == null or current_value.size() != expected: + return report_error(GdAssertMessages.error_has_size(current_value, expected)) + return report_success() + + +func contains(expected :Variant) -> GdUnitArrayAssert: + return _contains(expected, GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST) + + +func contains_exactly(expected :Variant) -> GdUnitArrayAssert: + return _contains_exactly(expected, GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST) + + +func contains_exactly_in_any_order(expected :Variant) -> GdUnitArrayAssert: + return _contains_exactly_in_any_order(expected, GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST) + + +func contains_same(expected :Variant) -> GdUnitArrayAssert: + return _contains(expected, GdObjects.COMPARE_MODE.OBJECT_REFERENCE) + + +func contains_same_exactly(expected :Variant) -> GdUnitArrayAssert: + return _contains_exactly(expected, GdObjects.COMPARE_MODE.OBJECT_REFERENCE) + + +func contains_same_exactly_in_any_order(expected :Variant) -> GdUnitArrayAssert: + return _contains_exactly_in_any_order(expected, GdObjects.COMPARE_MODE.OBJECT_REFERENCE) + + +func not_contains(expected :Variant) -> GdUnitArrayAssert: + return _not_contains(expected, GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST) + + +func not_contains_same(expected :Variant) -> GdUnitArrayAssert: + return _not_contains(expected, GdObjects.COMPARE_MODE.OBJECT_REFERENCE) + + +func is_instanceof(expected :Variant) -> GdUnitAssert: + _base.is_instanceof(expected) + return self + + +func extract(func_name :String, args := Array()) -> GdUnitArrayAssert: + var extracted_elements := Array() + var extractor :GdUnitValueExtractor = ResourceLoader.load("res://addons/gdUnit4/src/extractors/GdUnitFuncValueExtractor.gd", + "GDScript", ResourceLoader.CACHE_MODE_REUSE).new(func_name, args) + var current :Variant = get_current_value() + if current == null: + _current_value_provider = DefaultValueProvider.new(null) + else: + for element :Variant in current: + extracted_elements.append(extractor.extract_value(element)) + _current_value_provider = DefaultValueProvider.new(extracted_elements) + return self + + +func extractv( + extr0 :GdUnitValueExtractor, + extr1 :GdUnitValueExtractor = null, + extr2 :GdUnitValueExtractor = null, + extr3 :GdUnitValueExtractor = null, + extr4 :GdUnitValueExtractor = null, + extr5 :GdUnitValueExtractor = null, + extr6 :GdUnitValueExtractor = null, + extr7 :GdUnitValueExtractor = null, + extr8 :GdUnitValueExtractor = null, + extr9 :GdUnitValueExtractor = null) -> GdUnitArrayAssert: + var extractors :Variant = GdArrayTools.filter_value([extr0, extr1, extr2, extr3, extr4, extr5, extr6, extr7, extr8, extr9], null) + var extracted_elements := Array() + var current :Variant = get_current_value() + if current == null: + _current_value_provider = DefaultValueProvider.new(null) + else: + for element: Variant in current: + var ev :Array[Variant] = [ + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG, + GdUnitTuple.NO_ARG + ] + for index :int in extractors.size(): + var extractor :GdUnitValueExtractor = extractors[index] + ev[index] = extractor.extract_value(element) + if extractors.size() > 1: + extracted_elements.append(GdUnitTuple.new(ev[0], ev[1], ev[2], ev[3], ev[4], ev[5], ev[6], ev[7], ev[8], ev[9])) + else: + extracted_elements.append(ev[0]) + _current_value_provider = DefaultValueProvider.new(extracted_elements) + return self diff --git a/addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd new file mode 100644 index 0000000..2755285 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd @@ -0,0 +1,72 @@ +extends GdUnitAssert + + +var _current :Variant +var _current_error_message :String = "" +var _custom_failure_message :String = "" + + +func _init(current :Variant) -> void: + _current = current + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + GdAssertReports.reset_last_error_line_number() + + +func failure_message() -> String: + return _current_error_message + + +func current_value() -> Variant: + return _current + + +func report_success() -> GdUnitAssert: + GdAssertReports.report_success() + return self + + +func report_error(error_message :String, failure_line_number: int = -1) -> GdUnitAssert: + var line_number := failure_line_number if failure_line_number != -1 else GdUnitAssertions.get_line_number() + GdAssertReports.set_last_error_line_number(line_number) + _current_error_message = error_message if _custom_failure_message.is_empty() else _custom_failure_message + GdAssertReports.report_error(_current_error_message, line_number) + Engine.set_meta("GD_TEST_FAILURE", true) + return self + + +func test_fail() -> GdUnitAssert: + return report_error(GdAssertMessages.error_not_implemented()) + + +func override_failure_message(message :String) -> GdUnitAssert: + _custom_failure_message = message + return self + + +func is_equal(expected :Variant) -> GdUnitAssert: + var current :Variant = current_value() + if not GdObjects.equals(current, expected): + return report_error(GdAssertMessages.error_equal(current, expected)) + return report_success() + + +func is_not_equal(expected :Variant) -> GdUnitAssert: + var current :Variant = current_value() + if GdObjects.equals(current, expected): + return report_error(GdAssertMessages.error_not_equal(current, expected)) + return report_success() + + +func is_null() -> GdUnitAssert: + var current :Variant = current_value() + if current != null: + return report_error(GdAssertMessages.error_is_null(current)) + return report_success() + + +func is_not_null() -> GdUnitAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_is_not_null()) + return report_success() diff --git a/addons/gdUnit4/src/asserts/GdUnitAssertions.gd b/addons/gdUnit4/src/asserts/GdUnitAssertions.gd new file mode 100644 index 0000000..a1b12ca --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitAssertions.gd @@ -0,0 +1,64 @@ +# Preloads all GdUnit assertions +class_name GdUnitAssertions +extends RefCounted + + +func _init() -> void: + # preload all gdunit assertions to speedup testsuite loading time + # gdlint:disable=private-method-call + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitBoolAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitStringAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitIntAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFloatAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitVectorAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitArrayAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitDictionaryAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFileAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitObjectAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitResultAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFuncAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitSignalAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFailureAssertImpl.gd") + GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitGodotErrorAssertImpl.gd") + + +### We now load all used asserts and tool scripts into the cache according to the principle of "lazy loading" +### in order to noticeably reduce the loading time of the test suite. +# We go this hard way to increase the loading performance to avoid reparsing all the used scripts +# for more detailed info -> https://github.com/godotengine/godot/issues/67400 +# gdlint:disable=function-name +static func __lazy_load(script_path :String) -> GDScript: + return ResourceLoader.load(script_path, "GDScript", ResourceLoader.CACHE_MODE_REUSE) + + +static func validate_value_type(value :Variant, type :Variant.Type) -> bool: + return value == null or typeof(value) == type + + +# Scans the current stack trace for the root cause to extract the line number +static func get_line_number() -> int: + var stack_trace := get_stack() + if stack_trace == null or stack_trace.is_empty(): + return -1 + for index in stack_trace.size(): + var stack_info :Dictionary = stack_trace[index] + var function :String = stack_info.get("function") + # we catch helper asserts to skip over to return the correct line number + if function.begins_with("assert_"): + continue + if function.begins_with("test_"): + return stack_info.get("line") + var source :String = stack_info.get("source") + if source.is_empty() \ + or source.begins_with("user://") \ + or source.ends_with("GdUnitAssert.gd") \ + or source.ends_with("GdUnitAssertions.gd") \ + or source.ends_with("AssertImpl.gd") \ + or source.ends_with("GdUnitTestSuite.gd") \ + or source.ends_with("GdUnitSceneRunnerImpl.gd") \ + or source.ends_with("GdUnitObjectInteractions.gd") \ + or source.ends_with("GdUnitAwaiter.gd"): + continue + return stack_info.get("line") + return -1 diff --git a/addons/gdUnit4/src/asserts/GdUnitBoolAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitBoolAssertImpl.gd new file mode 100644 index 0000000..d25c6eb --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitBoolAssertImpl.gd @@ -0,0 +1,76 @@ +extends GdUnitBoolAssert + +var _base: GdUnitAssert + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if not GdUnitAssertions.validate_value_type(current, TYPE_BOOL): + report_error("GdUnitBoolAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func current_value() -> Variant: + return _base.current_value() + + +func report_success() -> GdUnitBoolAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitBoolAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitBoolAssert: + _base.override_failure_message(message) + return self + + +# Verifies that the current value is null. +func is_null() -> GdUnitBoolAssert: + _base.is_null() + return self + + +# Verifies that the current value is not null. +func is_not_null() -> GdUnitBoolAssert: + _base.is_not_null() + return self + + +func is_equal(expected :Variant) -> GdUnitBoolAssert: + _base.is_equal(expected) + return self + + +func is_not_equal(expected :Variant) -> GdUnitBoolAssert: + _base.is_not_equal(expected) + return self + + +func is_true() -> GdUnitBoolAssert: + if current_value() != true: + return report_error(GdAssertMessages.error_is_true(current_value())) + return report_success() + + +func is_false() -> GdUnitBoolAssert: + if current_value() == true || current_value() == null: + return report_error(GdAssertMessages.error_is_false(current_value())) + return report_success() diff --git a/addons/gdUnit4/src/asserts/GdUnitDictionaryAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitDictionaryAssertImpl.gd new file mode 100644 index 0000000..87f77d1 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitDictionaryAssertImpl.gd @@ -0,0 +1,182 @@ +extends GdUnitDictionaryAssert + +var _base :GdUnitAssert + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if not GdUnitAssertions.validate_value_type(current, TYPE_DICTIONARY): + report_error("GdUnitDictionaryAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func report_success() -> GdUnitDictionaryAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitDictionaryAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitDictionaryAssert: + _base.override_failure_message(message) + return self + + +func current_value() -> Variant: + return _base.current_value() + + +func is_null() -> GdUnitDictionaryAssert: + _base.is_null() + return self + + +func is_not_null() -> GdUnitDictionaryAssert: + _base.is_not_null() + return self + + +func is_equal(expected :Variant) -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_equal(null, GdAssertMessages.format_dict(expected))) + if not GdObjects.equals(current, expected): + var c := GdAssertMessages.format_dict(current) + var e := GdAssertMessages.format_dict(expected) + var diff := GdDiffTool.string_diff(c, e) + var curent_diff := GdAssertMessages.colored_array_div(diff[1]) + return report_error(GdAssertMessages.error_equal(curent_diff, e)) + return report_success() + + +func is_not_equal(expected :Variant) -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if GdObjects.equals(current, expected): + return report_error(GdAssertMessages.error_not_equal(current, expected)) + return report_success() + + +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_same(expected :Variant) -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_equal(null, GdAssertMessages.format_dict(expected))) + if not is_same(current, expected): + var c := GdAssertMessages.format_dict(current) + var e := GdAssertMessages.format_dict(expected) + var diff := GdDiffTool.string_diff(c, e) + var curent_diff := GdAssertMessages.colored_array_div(diff[1]) + return report_error(GdAssertMessages.error_is_same(curent_diff, e)) + return report_success() + + +@warning_ignore("unused_parameter", "shadowed_global_identifier") +func is_not_same(expected :Variant) -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if is_same(current, expected): + return report_error(GdAssertMessages.error_not_same(current, expected)) + return report_success() + + +func is_empty() -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if current == null or not current.is_empty(): + return report_error(GdAssertMessages.error_is_empty(current)) + return report_success() + + +func is_not_empty() -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if current == null or current.is_empty(): + return report_error(GdAssertMessages.error_is_not_empty()) + return report_success() + + +func has_size(expected: int) -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_is_not_null()) + if current.size() != expected: + return report_error(GdAssertMessages.error_has_size(current, expected)) + return report_success() + + +func _contains_keys(expected :Array, compare_mode :GdObjects.COMPARE_MODE) -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_is_not_null()) + # find expected keys + var keys_not_found :Array = expected.filter(_filter_by_key.bind(current.keys(), compare_mode)) + if not keys_not_found.is_empty(): + return report_error(GdAssertMessages.error_contains_keys(current.keys(), expected, keys_not_found, compare_mode)) + return report_success() + + +func _contains_key_value(key :Variant, value :Variant, compare_mode :GdObjects.COMPARE_MODE) -> GdUnitDictionaryAssert: + var current :Variant = current_value() + var expected := [key] + if current == null: + return report_error(GdAssertMessages.error_is_not_null()) + var keys_not_found :Array = expected.filter(_filter_by_key.bind(current.keys(), compare_mode)) + if not keys_not_found.is_empty(): + return report_error(GdAssertMessages.error_contains_keys(current.keys(), expected, keys_not_found, compare_mode)) + if not GdObjects.equals(current[key], value, false, compare_mode): + return report_error(GdAssertMessages.error_contains_key_value(key, value, current[key], compare_mode)) + return report_success() + + +func _not_contains_keys(expected :Array, compare_mode :GdObjects.COMPARE_MODE) -> GdUnitDictionaryAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_is_not_null()) + var keys_found :Array = current.keys().filter(_filter_by_key.bind(expected, compare_mode, true)) + if not keys_found.is_empty(): + return report_error(GdAssertMessages.error_not_contains_keys(current.keys(), expected, keys_found, compare_mode)) + return report_success() + + +func contains_keys(expected :Array) -> GdUnitDictionaryAssert: + return _contains_keys(expected, GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST) + + +func contains_key_value(key :Variant, value :Variant) -> GdUnitDictionaryAssert: + return _contains_key_value(key, value, GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST) + + +func not_contains_keys(expected :Array) -> GdUnitDictionaryAssert: + return _not_contains_keys(expected, GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST) + + +func contains_same_keys(expected :Array) -> GdUnitDictionaryAssert: + return _contains_keys(expected, GdObjects.COMPARE_MODE.OBJECT_REFERENCE) + + +func contains_same_key_value(key :Variant, value :Variant) -> GdUnitDictionaryAssert: + return _contains_key_value(key, value, GdObjects.COMPARE_MODE.OBJECT_REFERENCE) + + +func not_contains_same_keys(expected :Array) -> GdUnitDictionaryAssert: + return _not_contains_keys(expected, GdObjects.COMPARE_MODE.OBJECT_REFERENCE) + + +func _filter_by_key(element :Variant, values :Array, compare_mode :GdObjects.COMPARE_MODE, is_not :bool = false) -> bool: + for key :Variant in values: + if GdObjects.equals(key, element, false, compare_mode): + return is_not + return !is_not diff --git a/addons/gdUnit4/src/asserts/GdUnitFailureAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitFailureAssertImpl.gd new file mode 100644 index 0000000..88a3062 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitFailureAssertImpl.gd @@ -0,0 +1,110 @@ +extends GdUnitFailureAssert + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +var _is_failed := false +var _failure_message :String + + +func _set_do_expect_fail(enabled :bool = true) -> void: + Engine.set_meta(GdUnitConstants.EXPECT_ASSERT_REPORT_FAILURES, enabled) + + +func execute_and_await(assertion :Callable, do_await := true) -> GdUnitFailureAssert: + # do not report any failure from the original assertion we want to test + _set_do_expect_fail(true) + var thread_context := GdUnitThreadManager.get_current_context() + thread_context.set_assert(null) + GdUnitSignals.instance().gdunit_set_test_failed.connect(_on_test_failed) + # execute the given assertion as callable + if do_await: + await assertion.call() + else: + assertion.call() + _set_do_expect_fail(false) + # get the assert instance from current tread context + var current_assert := thread_context.get_assert() + if not is_instance_of(current_assert, GdUnitAssert): + _is_failed = true + _failure_message = "Invalid Callable! It must be a callable of 'GdUnitAssert'" + return self + _failure_message = current_assert.failure_message() + return self + + +func execute(assertion :Callable) -> GdUnitFailureAssert: + execute_and_await(assertion, false) + return self + + +func _on_test_failed(value :bool) -> void: + _is_failed = value + + +@warning_ignore("unused_parameter") +func is_equal(_expected :GdUnitAssert) -> GdUnitFailureAssert: + return _report_error("Not implemented") + + +@warning_ignore("unused_parameter") +func is_not_equal(_expected :GdUnitAssert) -> GdUnitFailureAssert: + return _report_error("Not implemented") + + +func is_null() -> GdUnitFailureAssert: + return _report_error("Not implemented") + + +func is_not_null() -> GdUnitFailureAssert: + return _report_error("Not implemented") + + +func is_success() -> GdUnitFailureAssert: + if _is_failed: + return _report_error("Expect: assertion ends successfully.") + return self + + +func is_failed() -> GdUnitFailureAssert: + if not _is_failed: + return _report_error("Expect: assertion fails.") + return self + + +func has_line(expected :int) -> GdUnitFailureAssert: + var current := GdAssertReports.get_last_error_line_number() + if current != expected: + return _report_error("Expect: to failed on line '%d'\n but was '%d'." % [expected, current]) + return self + + +func has_message(expected :String) -> GdUnitFailureAssert: + is_failed() + var expected_error := GdUnitTools.normalize_text(GdUnitTools.richtext_normalize(expected)) + var current_error := GdUnitTools.normalize_text(GdUnitTools.richtext_normalize(_failure_message)) + if current_error != expected_error: + var diffs := GdDiffTool.string_diff(current_error, expected_error) + var current := GdAssertMessages.colored_array_div(diffs[1]) + _report_error(GdAssertMessages.error_not_same_error(current, expected_error)) + return self + + +func starts_with_message(expected :String) -> GdUnitFailureAssert: + var expected_error := GdUnitTools.normalize_text(expected) + var current_error := GdUnitTools.normalize_text(GdUnitTools.richtext_normalize(_failure_message)) + if current_error.find(expected_error) != 0: + var diffs := GdDiffTool.string_diff(current_error, expected_error) + var current := GdAssertMessages.colored_array_div(diffs[1]) + _report_error(GdAssertMessages.error_not_same_error(current, expected_error)) + return self + + +func _report_error(error_message :String, failure_line_number: int = -1) -> GdUnitAssert: + var line_number := failure_line_number if failure_line_number != -1 else GdUnitAssertions.get_line_number() + GdAssertReports.report_error(error_message, line_number) + return self + + +func _report_success() -> GdUnitFailureAssert: + GdAssertReports.report_success() + return self diff --git a/addons/gdUnit4/src/asserts/GdUnitFileAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitFileAssertImpl.gd new file mode 100644 index 0000000..f511879 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitFileAssertImpl.gd @@ -0,0 +1,95 @@ +extends GdUnitFileAssert + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +var _base: GdUnitAssert + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if not GdUnitAssertions.validate_value_type(current, TYPE_STRING): + report_error("GdUnitFileAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func current_value() -> String: + return _base.current_value() as String + + +func report_success() -> GdUnitFileAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitFileAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitFileAssert: + _base.override_failure_message(message) + return self + + +func is_equal(expected :Variant) -> GdUnitFileAssert: + _base.is_equal(expected) + return self + + +func is_not_equal(expected :Variant) -> GdUnitFileAssert: + _base.is_not_equal(expected) + return self + + +func is_file() -> GdUnitFileAssert: + var current := current_value() + if FileAccess.open(current, FileAccess.READ) == null: + return report_error("Is not a file '%s', error code %s" % [current, FileAccess.get_open_error()]) + return report_success() + + +func exists() -> GdUnitFileAssert: + var current := current_value() + if not FileAccess.file_exists(current): + return report_error("The file '%s' not exists" %current) + return report_success() + + +func is_script() -> GdUnitFileAssert: + var current := current_value() + if FileAccess.open(current, FileAccess.READ) == null: + return report_error("Can't acces the file '%s'! Error code %s" % [current, FileAccess.get_open_error()]) + + var script := load(current) + if not script is GDScript: + return report_error("The file '%s' is not a GdScript" % current) + return report_success() + + +func contains_exactly(expected_rows :Array) -> GdUnitFileAssert: + var current := current_value() + if FileAccess.open(current, FileAccess.READ) == null: + return report_error("Can't acces the file '%s'! Error code %s" % [current, FileAccess.get_open_error()]) + + var script := load(current) + if script is GDScript: + var instance :Variant = script.new() + var source_code := GdScriptParser.to_unix_format(instance.get_script().source_code) + GdUnitTools.free_instance(instance) + var rows := Array(source_code.split("\n")) + ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitArrayAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(rows).contains_exactly(expected_rows) + return self diff --git a/addons/gdUnit4/src/asserts/GdUnitFloatAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitFloatAssertImpl.gd new file mode 100644 index 0000000..5920d9d --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitFloatAssertImpl.gd @@ -0,0 +1,144 @@ +extends GdUnitFloatAssert + +var _base: GdUnitAssert + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if not GdUnitAssertions.validate_value_type(current, TYPE_FLOAT): + report_error("GdUnitFloatAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func current_value() -> Variant: + return _base.current_value() + + +func report_success() -> GdUnitFloatAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitFloatAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitFloatAssert: + _base.override_failure_message(message) + return self + + +func is_null() -> GdUnitFloatAssert: + _base.is_null() + return self + + +func is_not_null() -> GdUnitFloatAssert: + _base.is_not_null() + return self + + +func is_equal(expected :float) -> GdUnitFloatAssert: + _base.is_equal(expected) + return self + + +func is_not_equal(expected :float) -> GdUnitFloatAssert: + _base.is_not_equal(expected) + return self + + +@warning_ignore("shadowed_global_identifier") +func is_equal_approx(expected :float, approx :float) -> GdUnitFloatAssert: + return is_between(expected-approx, expected+approx) + + +func is_less(expected :float) -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or current >= expected: + return report_error(GdAssertMessages.error_is_value(Comparator.LESS_THAN, current, expected)) + return report_success() + + +func is_less_equal(expected :float) -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or current > expected: + return report_error(GdAssertMessages.error_is_value(Comparator.LESS_EQUAL, current, expected)) + return report_success() + + +func is_greater(expected :float) -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or current <= expected: + return report_error(GdAssertMessages.error_is_value(Comparator.GREATER_THAN, current, expected)) + return report_success() + + +func is_greater_equal(expected :float) -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or current < expected: + return report_error(GdAssertMessages.error_is_value(Comparator.GREATER_EQUAL, current, expected)) + return report_success() + + +func is_negative() -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or current >= 0.0: + return report_error(GdAssertMessages.error_is_negative(current)) + return report_success() + + +func is_not_negative() -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or current < 0.0: + return report_error(GdAssertMessages.error_is_not_negative(current)) + return report_success() + + +func is_zero() -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or not is_equal_approx(0.00000000, current): + return report_error(GdAssertMessages.error_is_zero(current)) + return report_success() + + +func is_not_zero() -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or is_equal_approx(0.00000000, current): + return report_error(GdAssertMessages.error_is_not_zero()) + return report_success() + + +func is_in(expected :Array) -> GdUnitFloatAssert: + var current :Variant = current_value() + if not expected.has(current): + return report_error(GdAssertMessages.error_is_in(current, expected)) + return report_success() + + +func is_not_in(expected :Array) -> GdUnitFloatAssert: + var current :Variant = current_value() + if expected.has(current): + return report_error(GdAssertMessages.error_is_not_in(current, expected)) + return report_success() + + +func is_between(from :float, to :float) -> GdUnitFloatAssert: + var current :Variant = current_value() + if current == null or current < from or current > to: + return report_error(GdAssertMessages.error_is_value(Comparator.BETWEEN_EQUAL, current, from, to)) + return report_success() diff --git a/addons/gdUnit4/src/asserts/GdUnitFuncAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitFuncAssertImpl.gd new file mode 100644 index 0000000..ccd2a11 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitFuncAssertImpl.gd @@ -0,0 +1,159 @@ +extends GdUnitFuncAssert + + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") +const DEFAULT_TIMEOUT := 2000 + + +var _current_value_provider :ValueProvider +var _current_error_message :String = "" +var _custom_failure_message :String = "" +var _line_number := -1 +var _timeout := DEFAULT_TIMEOUT +var _interrupted := false +var _sleep_timer :Timer = null + + +func _init(instance :Object, func_name :String, args := Array()) -> void: + _line_number = GdUnitAssertions.get_line_number() + GdAssertReports.reset_last_error_line_number() + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + # verify at first the function name exists + if not instance.has_method(func_name): + report_error("The function '%s' do not exists checked instance '%s'." % [func_name, instance]) + _interrupted = true + else: + _current_value_provider = CallBackValueProvider.new(instance, func_name, args) + + +func _notification(_what :int) -> void: + if is_instance_valid(_current_value_provider): + _current_value_provider.dispose() + _current_value_provider = null + if is_instance_valid(_sleep_timer): + Engine.get_main_loop().root.remove_child(_sleep_timer) + _sleep_timer.stop() + _sleep_timer.free() + _sleep_timer = null + + +func report_success() -> GdUnitFuncAssert: + GdAssertReports.report_success() + return self + + +func report_error(error_message :String) -> GdUnitFuncAssert: + _current_error_message = error_message if _custom_failure_message == "" else _custom_failure_message + GdAssertReports.report_error(_current_error_message, _line_number) + return self + + +func failure_message() -> String: + return _current_error_message + + +func send_report(report :GdUnitReport)-> void: + GdUnitSignals.instance().gdunit_report.emit(report) + + +func override_failure_message(message :String) -> GdUnitFuncAssert: + _custom_failure_message = message + return self + + +func wait_until(timeout := 2000) -> GdUnitFuncAssert: + if timeout <= 0: + push_warning("Invalid timeout param, alloed timeouts must be grater than 0. Use default timeout instead") + _timeout = DEFAULT_TIMEOUT + else: + _timeout = timeout + return self + + +func is_null() -> GdUnitFuncAssert: + await _validate_callback(cb_is_null) + return self + + +func is_not_null() -> GdUnitFuncAssert: + await _validate_callback(cb_is_not_null) + return self + + +func is_false() -> GdUnitFuncAssert: + await _validate_callback(cb_is_false) + return self + + +func is_true() -> GdUnitFuncAssert: + await _validate_callback(cb_is_true) + return self + + +func is_equal(expected :Variant) -> GdUnitFuncAssert: + await _validate_callback(cb_is_equal, expected) + return self + + +func is_not_equal(expected :Variant) -> GdUnitFuncAssert: + await _validate_callback(cb_is_not_equal, expected) + return self + + +# we need actually to define this Callable as functions otherwise we results into leaked scripts here +# this is actually a Godot bug and needs this kind of workaround +func cb_is_null(c :Variant, _e :Variant) -> bool: return c == null +func cb_is_not_null(c :Variant, _e :Variant) -> bool: return c != null +func cb_is_false(c :Variant, _e :Variant) -> bool: return c == false +func cb_is_true(c :Variant, _e :Variant) -> bool: return c == true +func cb_is_equal(c :Variant, e :Variant) -> bool: return GdObjects.equals(c,e) +func cb_is_not_equal(c :Variant, e :Variant) -> bool: return not GdObjects.equals(c, e) + + +func _validate_callback(predicate :Callable, expected :Variant = null) -> void: + if _interrupted: + return + GdUnitMemoryObserver.guard_instance(self) + var time_scale := Engine.get_time_scale() + var timer := Timer.new() + timer.set_name("gdunit_funcassert_interrupt_timer_%d" % timer.get_instance_id()) + Engine.get_main_loop().root.add_child(timer) + timer.add_to_group("GdUnitTimers") + timer.timeout.connect(func do_interrupt() -> void: + _interrupted = true + , CONNECT_DEFERRED) + timer.set_one_shot(true) + timer.start((_timeout/1000.0)*time_scale) + _sleep_timer = Timer.new() + _sleep_timer.set_name("gdunit_funcassert_sleep_timer_%d" % _sleep_timer.get_instance_id() ) + Engine.get_main_loop().root.add_child(_sleep_timer) + + while true: + var current :Variant = await next_current_value() + # is interupted or predicate success + if _interrupted or predicate.call(current, expected): + break + if is_instance_valid(_sleep_timer): + _sleep_timer.start(0.05) + await _sleep_timer.timeout + + _sleep_timer.stop() + await Engine.get_main_loop().process_frame + if _interrupted: + # https://github.com/godotengine/godot/issues/73052 + #var predicate_name = predicate.get_method() + var predicate_name :String = str(predicate).split('::')[1] + report_error(GdAssertMessages.error_interrupted(predicate_name.strip_edges().trim_prefix("cb_"), expected, LocalTime.elapsed(_timeout))) + else: + report_success() + _sleep_timer.free() + timer.free() + GdUnitMemoryObserver.unguard_instance(self) + + +func next_current_value() -> Variant: + @warning_ignore("redundant_await") + if is_instance_valid(_current_value_provider): + return await _current_value_provider.get_value() + return "invalid value" diff --git a/addons/gdUnit4/src/asserts/GdUnitGodotErrorAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitGodotErrorAssertImpl.gd new file mode 100644 index 0000000..f08da5b --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitGodotErrorAssertImpl.gd @@ -0,0 +1,106 @@ +extends GdUnitGodotErrorAssert + +var _current_error_message :String +var _callable :Callable + + +func _init(callable :Callable) -> void: + # we only support Godot 4.1.x+ because of await issue https://github.com/godotengine/godot/issues/80292 + assert(Engine.get_version_info().hex >= 0x40100, + "This assertion is not supported for Godot 4.0.x. Please upgrade to the minimum version Godot 4.1.0!") + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + GdAssertReports.reset_last_error_line_number() + _callable = callable + + +func _execute() -> Array[ErrorLogEntry]: + # execute the given code and monitor for runtime errors + if _callable == null or not _callable.is_valid(): + _report_error("Invalid Callable '%s'" % _callable) + else: + await _callable.call() + return await _error_monitor().scan(true) + + +func _error_monitor() -> GodotGdErrorMonitor: + return GdUnitThreadManager.get_current_context().get_execution_context().error_monitor + + +func failure_message() -> String: + return _current_error_message + + +func _report_success() -> GdUnitAssert: + GdAssertReports.report_success() + return self + + +func _report_error(error_message :String, failure_line_number: int = -1) -> GdUnitAssert: + var line_number := failure_line_number if failure_line_number != -1 else GdUnitAssertions.get_line_number() + _current_error_message = error_message + GdAssertReports.report_error(error_message, line_number) + return self + + +func _has_log_entry(log_entries :Array[ErrorLogEntry], type :ErrorLogEntry.TYPE, error :String) -> bool: + for entry in log_entries: + if entry._type == type and entry._message == error: + # Erase the log entry we already handled it by this assertion, otherwise it will report at twice + _error_monitor().erase_log_entry(entry) + return true + return false + + +func _to_list(log_entries :Array[ErrorLogEntry]) -> String: + if log_entries.is_empty(): + return "no errors" + if log_entries.size() == 1: + return log_entries[0]._message + var value := "" + for entry in log_entries: + value += "'%s'\n" % entry._message + return value + + +func is_success() -> GdUnitGodotErrorAssert: + var log_entries := await _execute() + if log_entries.is_empty(): + return _report_success() + return _report_error(""" + Expecting: no error's are ocured. + but found: '%s' + """.dedent().trim_prefix("\n") % _to_list(log_entries)) + + +func is_runtime_error(expected_error :String) -> GdUnitGodotErrorAssert: + var log_entries := await _execute() + if _has_log_entry(log_entries, ErrorLogEntry.TYPE.SCRIPT_ERROR, expected_error): + return _report_success() + return _report_error(""" + Expecting: a runtime error is triggered. + message: '%s' + found: %s + """.dedent().trim_prefix("\n") % [expected_error, _to_list(log_entries)]) + + +func is_push_warning(expected_warning :String) -> GdUnitGodotErrorAssert: + var log_entries := await _execute() + if _has_log_entry(log_entries, ErrorLogEntry.TYPE.PUSH_WARNING, expected_warning): + return _report_success() + return _report_error(""" + Expecting: push_warning() is called. + message: '%s' + found: %s + """.dedent().trim_prefix("\n") % [expected_warning, _to_list(log_entries)]) + + +func is_push_error(expected_error :String) -> GdUnitGodotErrorAssert: + var log_entries := await _execute() + if _has_log_entry(log_entries, ErrorLogEntry.TYPE.PUSH_ERROR, expected_error): + return _report_success() + return _report_error(""" + Expecting: push_error() is called. + message: '%s' + found: %s + """.dedent().trim_prefix("\n") % [expected_error, _to_list(log_entries)]) diff --git a/addons/gdUnit4/src/asserts/GdUnitIntAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitIntAssertImpl.gd new file mode 100644 index 0000000..98fd445 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitIntAssertImpl.gd @@ -0,0 +1,153 @@ +extends GdUnitIntAssert + +var _base: GdUnitAssert + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if not GdUnitAssertions.validate_value_type(current, TYPE_INT): + report_error("GdUnitIntAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func current_value() -> Variant: + return _base.current_value() + + +func report_success() -> GdUnitIntAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitIntAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitIntAssert: + _base.override_failure_message(message) + return self + + +func is_null() -> GdUnitIntAssert: + _base.is_null() + return self + + +func is_not_null() -> GdUnitIntAssert: + _base.is_not_null() + return self + + +func is_equal(expected :int) -> GdUnitIntAssert: + _base.is_equal(expected) + return self + + +func is_not_equal(expected :int) -> GdUnitIntAssert: + _base.is_not_equal(expected) + return self + + +func is_less(expected :int) -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current >= expected: + return report_error(GdAssertMessages.error_is_value(Comparator.LESS_THAN, current, expected)) + return report_success() + + +func is_less_equal(expected :int) -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current > expected: + return report_error(GdAssertMessages.error_is_value(Comparator.LESS_EQUAL, current, expected)) + return report_success() + + +func is_greater(expected :int) -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current <= expected: + return report_error(GdAssertMessages.error_is_value(Comparator.GREATER_THAN, current, expected)) + return report_success() + + +func is_greater_equal(expected :int) -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current < expected: + return report_error(GdAssertMessages.error_is_value(Comparator.GREATER_EQUAL, current, expected)) + return report_success() + + +func is_even() -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current % 2 != 0: + return report_error(GdAssertMessages.error_is_even(current)) + return report_success() + + +func is_odd() -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current % 2 == 0: + return report_error(GdAssertMessages.error_is_odd(current)) + return report_success() + + +func is_negative() -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current >= 0: + return report_error(GdAssertMessages.error_is_negative(current)) + return report_success() + + +func is_not_negative() -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current < 0: + return report_error(GdAssertMessages.error_is_not_negative(current)) + return report_success() + + +func is_zero() -> GdUnitIntAssert: + var current :Variant = current_value() + if current != 0: + return report_error(GdAssertMessages.error_is_zero(current)) + return report_success() + + +func is_not_zero() -> GdUnitIntAssert: + var current :Variant= current_value() + if current == 0: + return report_error(GdAssertMessages.error_is_not_zero()) + return report_success() + + +func is_in(expected :Array) -> GdUnitIntAssert: + var current :Variant = current_value() + if not expected.has(current): + return report_error(GdAssertMessages.error_is_in(current, expected)) + return report_success() + + +func is_not_in(expected :Array) -> GdUnitIntAssert: + var current :Variant = current_value() + if expected.has(current): + return report_error(GdAssertMessages.error_is_not_in(current, expected)) + return report_success() + + +func is_between(from :int, to :int) -> GdUnitIntAssert: + var current :Variant = current_value() + if current == null or current < from or current > to: + return report_error(GdAssertMessages.error_is_value(Comparator.BETWEEN_EQUAL, current, from, to)) + return report_success() diff --git a/addons/gdUnit4/src/asserts/GdUnitObjectAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitObjectAssertImpl.gd new file mode 100644 index 0000000..b4090af --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitObjectAssertImpl.gd @@ -0,0 +1,109 @@ +extends GdUnitObjectAssert + +var _base :GdUnitAssert + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if (current != null + and (GdUnitAssertions.validate_value_type(current, TYPE_BOOL) + or GdUnitAssertions.validate_value_type(current, TYPE_INT) + or GdUnitAssertions.validate_value_type(current, TYPE_FLOAT) + or GdUnitAssertions.validate_value_type(current, TYPE_STRING))): + report_error("GdUnitObjectAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func current_value() -> Variant: + return _base.current_value() + + +func report_success() -> GdUnitObjectAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitObjectAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitObjectAssert: + _base.override_failure_message(message) + return self + + +func is_equal(expected :Variant) -> GdUnitObjectAssert: + _base.is_equal(expected) + return self + + +func is_not_equal(expected :Variant) -> GdUnitObjectAssert: + _base.is_not_equal(expected) + return self + + +func is_null() -> GdUnitObjectAssert: + _base.is_null() + return self + + +func is_not_null() -> GdUnitObjectAssert: + _base.is_not_null() + return self + + +@warning_ignore("shadowed_global_identifier") +func is_same(expected :Variant) -> GdUnitObjectAssert: + var current :Variant = current_value() + if not is_same(current, expected): + report_error(GdAssertMessages.error_is_same(current, expected)) + return self + report_success() + return self + + +func is_not_same(expected :Variant) -> GdUnitObjectAssert: + var current :Variant = current_value() + if is_same(current, expected): + report_error(GdAssertMessages.error_not_same(current, expected)) + return self + report_success() + return self + + +func is_instanceof(type :Object) -> GdUnitObjectAssert: + var current :Variant = current_value() + if current == null or not is_instance_of(current, type): + var result_expected: = GdObjects.extract_class_name(type) + var result_current: = GdObjects.extract_class_name(current) + report_error(GdAssertMessages.error_is_instanceof(result_current, result_expected)) + return self + report_success() + return self + + +func is_not_instanceof(type :Variant) -> GdUnitObjectAssert: + var current :Variant = current_value() + if is_instance_of(current, type): + var result: = GdObjects.extract_class_name(type) + if result.is_success(): + report_error("Expected not be a instance of <%s>" % result.value()) + else: + push_error("Internal ERROR: %s" % result.error_message()) + return self + report_success() + return self diff --git a/addons/gdUnit4/src/asserts/GdUnitResultAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitResultAssertImpl.gd new file mode 100644 index 0000000..e246039 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitResultAssertImpl.gd @@ -0,0 +1,122 @@ +extends GdUnitResultAssert + +var _base :GdUnitAssert + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if not validate_value_type(current): + report_error("GdUnitResultAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func validate_value_type(value :Variant) -> bool: + return value == null or value is GdUnitResult + + +func current_value() -> GdUnitResult: + return _base.current_value() as GdUnitResult + + +func report_success() -> GdUnitResultAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitResultAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitResultAssert: + _base.override_failure_message(message) + return self + + +func is_null() -> GdUnitResultAssert: + _base.is_null() + return self + + +func is_not_null() -> GdUnitResultAssert: + _base.is_not_null() + return self + + +func is_empty() -> GdUnitResultAssert: + var result := current_value() + if result == null or not result.is_empty(): + report_error(GdAssertMessages.error_result_is_empty(result)) + else: + report_success() + return self + + +func is_success() -> GdUnitResultAssert: + var result := current_value() + if result == null or not result.is_success(): + report_error(GdAssertMessages.error_result_is_success(result)) + else: + report_success() + return self + + +func is_warning() -> GdUnitResultAssert: + var result := current_value() + if result == null or not result.is_warn(): + report_error(GdAssertMessages.error_result_is_warning(result)) + else: + report_success() + return self + + +func is_error() -> GdUnitResultAssert: + var result := current_value() + if result == null or not result.is_error(): + report_error(GdAssertMessages.error_result_is_error(result)) + else: + report_success() + return self + + +func contains_message(expected :String) -> GdUnitResultAssert: + var result := current_value() + if result == null: + report_error(GdAssertMessages.error_result_has_message("", expected)) + return self + if result.is_success(): + report_error(GdAssertMessages.error_result_has_message_on_success(expected)) + elif result.is_error() and result.error_message() != expected: + report_error(GdAssertMessages.error_result_has_message(result.error_message(), expected)) + elif result.is_warn() and result.warn_message() != expected: + report_error(GdAssertMessages.error_result_has_message(result.warn_message(), expected)) + else: + report_success() + return self + + +func is_value(expected :Variant) -> GdUnitResultAssert: + var result := current_value() + var value :Variant = null if result == null else result.value() + if not GdObjects.equals(value, expected): + report_error(GdAssertMessages.error_result_is_value(value, expected)) + else: + report_success() + return self + + +func is_equal(expected :Variant) -> GdUnitResultAssert: + return is_value(expected) diff --git a/addons/gdUnit4/src/asserts/GdUnitSignalAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitSignalAssertImpl.gd new file mode 100644 index 0000000..9c0ea62 --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitSignalAssertImpl.gd @@ -0,0 +1,110 @@ +extends GdUnitSignalAssert + +const DEFAULT_TIMEOUT := 2000 + +var _signal_collector :GdUnitSignalCollector +var _emitter :Object +var _current_error_message :String = "" +var _custom_failure_message :String = "" +var _line_number := -1 +var _timeout := DEFAULT_TIMEOUT +var _interrupted := false + + +func _init(emitter :Object) -> void: + # save the actual assert instance on the current thread context + var context := GdUnitThreadManager.get_current_context() + context.set_assert(self) + _signal_collector = context.get_signal_collector() + _line_number = GdUnitAssertions.get_line_number() + _emitter = emitter + GdAssertReports.reset_last_error_line_number() + + +func report_success() -> GdUnitAssert: + GdAssertReports.report_success() + return self + + +func report_warning(message :String) -> GdUnitAssert: + GdAssertReports.report_warning(message, GdUnitAssertions.get_line_number()) + return self + + +func report_error(error_message :String) -> GdUnitAssert: + _current_error_message = error_message if _custom_failure_message == "" else _custom_failure_message + GdAssertReports.report_error(_current_error_message, _line_number) + return self + + +func failure_message() -> String: + return _current_error_message + + +func send_report(report :GdUnitReport)-> void: + GdUnitSignals.instance().gdunit_report.emit(report) + + +func override_failure_message(message :String) -> GdUnitSignalAssert: + _custom_failure_message = message + return self + + +func wait_until(timeout := 2000) -> GdUnitSignalAssert: + if timeout <= 0: + report_warning("Invalid timeout parameter, allowed timeouts must be greater than 0, use default timeout instead!") + _timeout = DEFAULT_TIMEOUT + else: + _timeout = timeout + return self + + +# Verifies the signal exists checked the emitter +func is_signal_exists(signal_name :String) -> GdUnitSignalAssert: + if not _emitter.has_signal(signal_name): + report_error("The signal '%s' not exists checked object '%s'." % [signal_name, _emitter.get_class()]) + return self + + +# Verifies that given signal is emitted until waiting time +func is_emitted(name :String, args := []) -> GdUnitSignalAssert: + _line_number = GdUnitAssertions.get_line_number() + return await _wail_until_signal(name, args, false) + + +# Verifies that given signal is NOT emitted until waiting time +func is_not_emitted(name :String, args := []) -> GdUnitSignalAssert: + _line_number = GdUnitAssertions.get_line_number() + return await _wail_until_signal(name, args, true) + + +func _wail_until_signal(signal_name :String, expected_args :Array, expect_not_emitted: bool) -> GdUnitSignalAssert: + if _emitter == null: + report_error("Can't wait for signal checked a NULL object.") + return self + # first verify the signal is defined + if not _emitter.has_signal(signal_name): + report_error("Can't wait for non-existion signal '%s' checked object '%s'." % [signal_name,_emitter.get_class()]) + return self + _signal_collector.register_emitter(_emitter) + var time_scale := Engine.get_time_scale() + var timer := Timer.new() + Engine.get_main_loop().root.add_child(timer) + timer.add_to_group("GdUnitTimers") + timer.set_one_shot(true) + timer.timeout.connect(func on_timeout() -> void: _interrupted = true) + timer.start((_timeout/1000.0)*time_scale) + var is_signal_emitted := false + while not _interrupted and not is_signal_emitted: + await Engine.get_main_loop().process_frame + if is_instance_valid(_emitter): + is_signal_emitted = _signal_collector.match(_emitter, signal_name, expected_args) + if is_signal_emitted and expect_not_emitted: + report_error(GdAssertMessages.error_signal_emitted(signal_name, expected_args, LocalTime.elapsed(int(_timeout-timer.time_left*1000)))) + + if _interrupted and not expect_not_emitted: + report_error(GdAssertMessages.error_wait_signal(signal_name, expected_args, LocalTime.elapsed(_timeout))) + timer.free() + if is_instance_valid(_emitter): + _signal_collector.reset_received_signals(_emitter, signal_name, expected_args) + return self diff --git a/addons/gdUnit4/src/asserts/GdUnitStringAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitStringAssertImpl.gd new file mode 100644 index 0000000..6168aaa --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitStringAssertImpl.gd @@ -0,0 +1,173 @@ +extends GdUnitStringAssert + +var _base :GdUnitAssert + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if current != null and typeof(current) != TYPE_STRING and typeof(current) != TYPE_STRING_NAME: + report_error("GdUnitStringAssert inital error, unexpected type <%s>" % GdObjects.typeof_as_string(current)) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func failure_message() -> String: + return _base._current_error_message + + +func current_value() -> Variant: + return _base.current_value() + + +func report_success() -> GdUnitStringAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitStringAssert: + _base.report_error(error) + return self + + +func override_failure_message(message :String) -> GdUnitStringAssert: + _base.override_failure_message(message) + return self + + +func is_null() -> GdUnitStringAssert: + _base.is_null() + return self + + +func is_not_null() -> GdUnitStringAssert: + _base.is_not_null() + return self + + +func is_equal(expected :Variant) -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_equal(current, expected)) + if not GdObjects.equals(current, expected): + var diffs := GdDiffTool.string_diff(current, expected) + var formatted_current := GdAssertMessages.colored_array_div(diffs[1]) + return report_error(GdAssertMessages.error_equal(formatted_current, expected)) + return report_success() + + +func is_equal_ignoring_case(expected :Variant) -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_equal_ignoring_case(current, expected)) + if not GdObjects.equals(str(current), expected, true): + var diffs := GdDiffTool.string_diff(current, expected) + var formatted_current := GdAssertMessages.colored_array_div(diffs[1]) + return report_error(GdAssertMessages.error_equal_ignoring_case(formatted_current, expected)) + return report_success() + + +func is_not_equal(expected :Variant) -> GdUnitStringAssert: + var current :Variant = current_value() + if GdObjects.equals(current, expected): + return report_error(GdAssertMessages.error_not_equal(current, expected)) + return report_success() + + +func is_not_equal_ignoring_case(expected :Variant) -> GdUnitStringAssert: + var current :Variant = current_value() + if GdObjects.equals(current, expected, true): + return report_error(GdAssertMessages.error_not_equal(current, expected)) + return report_success() + + +func is_empty() -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null or not current.is_empty(): + return report_error(GdAssertMessages.error_is_empty(current)) + return report_success() + + +func is_not_empty() -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null or current.is_empty(): + return report_error(GdAssertMessages.error_is_not_empty()) + return report_success() + + +func contains(expected :String) -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null or current.find(expected) == -1: + return report_error(GdAssertMessages.error_contains(current, expected)) + return report_success() + + +func not_contains(expected :String) -> GdUnitStringAssert: + var current :Variant = current_value() + if current != null and current.find(expected) != -1: + return report_error(GdAssertMessages.error_not_contains(current, expected)) + return report_success() + + +func contains_ignoring_case(expected :String) -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null or current.findn(expected) == -1: + return report_error(GdAssertMessages.error_contains_ignoring_case(current, expected)) + return report_success() + + +func not_contains_ignoring_case(expected :String) -> GdUnitStringAssert: + var current :Variant = current_value() + if current != null and current.findn(expected) != -1: + return report_error(GdAssertMessages.error_not_contains_ignoring_case(current, expected)) + return report_success() + + +func starts_with(expected :String) -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null or current.find(expected) != 0: + return report_error(GdAssertMessages.error_starts_with(current, expected)) + return report_success() + + +func ends_with(expected :String) -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_ends_with(current, expected)) + var find :int = current.length() - expected.length() + if current.rfind(expected) != find: + return report_error(GdAssertMessages.error_ends_with(current, expected)) + return report_success() + + +# gdlint:disable=max-returns +func has_length(expected :int, comparator := Comparator.EQUAL) -> GdUnitStringAssert: + var current :Variant = current_value() + if current == null: + return report_error(GdAssertMessages.error_has_length(current, expected, comparator)) + match comparator: + Comparator.EQUAL: + if current.length() != expected: + return report_error(GdAssertMessages.error_has_length(current, expected, comparator)) + Comparator.LESS_THAN: + if current.length() >= expected: + return report_error(GdAssertMessages.error_has_length(current, expected, comparator)) + Comparator.LESS_EQUAL: + if current.length() > expected: + return report_error(GdAssertMessages.error_has_length(current, expected, comparator)) + Comparator.GREATER_THAN: + if current.length() <= expected: + return report_error(GdAssertMessages.error_has_length(current, expected, comparator)) + Comparator.GREATER_EQUAL: + if current.length() < expected: + return report_error(GdAssertMessages.error_has_length(current, expected, comparator)) + _: + return report_error("Comparator '%d' not implemented!" % comparator) + return report_success() diff --git a/addons/gdUnit4/src/asserts/GdUnitVectorAssertImpl.gd b/addons/gdUnit4/src/asserts/GdUnitVectorAssertImpl.gd new file mode 100644 index 0000000..048cc3f --- /dev/null +++ b/addons/gdUnit4/src/asserts/GdUnitVectorAssertImpl.gd @@ -0,0 +1,172 @@ +extends GdUnitVectorAssert + +var _base: GdUnitAssert +var _current_type :int + + +func _init(current :Variant) -> void: + _base = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", + ResourceLoader.CACHE_MODE_REUSE).new(current) + # save the actual assert instance on the current thread context + GdUnitThreadManager.get_current_context().set_assert(self) + if not _validate_value_type(current): + report_error("GdUnitVectorAssert error, the type <%s> is not supported." % GdObjects.typeof_as_string(current)) + _current_type = typeof(current) + + +func _notification(event :int) -> void: + if event == NOTIFICATION_PREDELETE: + if _base != null: + _base.notification(event) + _base = null + + +func _validate_value_type(value :Variant) -> bool: + return ( + value == null + or typeof(value) in [ + TYPE_VECTOR2, + TYPE_VECTOR2I, + TYPE_VECTOR3, + TYPE_VECTOR3I, + TYPE_VECTOR4, + TYPE_VECTOR4I + ] + ) + + +func _validate_is_vector_type(value :Variant) -> bool: + var type := typeof(value) + if type == _current_type or _current_type == TYPE_NIL: + return true + report_error(GdAssertMessages.error_is_wrong_type(_current_type, type)) + return false + + +func current_value() -> Variant: + return _base.current_value() + + +func report_success() -> GdUnitVectorAssert: + _base.report_success() + return self + + +func report_error(error :String) -> GdUnitVectorAssert: + _base.report_error(error) + return self + + +func failure_message() -> String: + return _base._current_error_message + + +func override_failure_message(message :String) -> GdUnitVectorAssert: + _base.override_failure_message(message) + return self + + +func is_null() -> GdUnitVectorAssert: + _base.is_null() + return self + + +func is_not_null() -> GdUnitVectorAssert: + _base.is_not_null() + return self + + +func is_equal(expected :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(expected): + return self + _base.is_equal(expected) + return self + + +func is_not_equal(expected :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(expected): + return self + _base.is_not_equal(expected) + return self + + +@warning_ignore("shadowed_global_identifier") +func is_equal_approx(expected :Variant, approx :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(expected) or not _validate_is_vector_type(approx): + return self + var current :Variant = current_value() + var from :Variant = expected - approx + var to :Variant = expected + approx + if current == null or (not _is_equal_approx(current, from, to)): + return report_error(GdAssertMessages.error_is_value(Comparator.BETWEEN_EQUAL, current, from, to)) + return report_success() + + +func _is_equal_approx(current :Variant, from :Variant, to :Variant) -> bool: + match typeof(current): + TYPE_VECTOR2, TYPE_VECTOR2I: + return ((current.x >= from.x and current.y >= from.y) + and (current.x <= to.x and current.y <= to.y)) + TYPE_VECTOR3, TYPE_VECTOR3I: + return ((current.x >= from.x and current.y >= from.y and current.z >= from.z) + and (current.x <= to.x and current.y <= to.y and current.z <= to.z)) + TYPE_VECTOR4, TYPE_VECTOR4I: + return ((current.x >= from.x and current.y >= from.y and current.z >= from.z and current.w >= from.w) + and (current.x <= to.x and current.y <= to.y and current.z <= to.z and current.w <= to.w)) + _: + push_error("Missing implementation '_is_equal_approx' for vector type %s" % typeof(current)) + return false + + +func is_less(expected :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(expected): + return self + var current :Variant = current_value() + if current == null or current >= expected: + return report_error(GdAssertMessages.error_is_value(Comparator.LESS_THAN, current, expected)) + return report_success() + + +func is_less_equal(expected :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(expected): + return self + var current :Variant = current_value() + if current == null or current > expected: + return report_error(GdAssertMessages.error_is_value(Comparator.LESS_EQUAL, current, expected)) + return report_success() + + +func is_greater(expected :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(expected): + return self + var current :Variant = current_value() + if current == null or current <= expected: + return report_error(GdAssertMessages.error_is_value(Comparator.GREATER_THAN, current, expected)) + return report_success() + + +func is_greater_equal(expected :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(expected): + return self + var current :Variant = current_value() + if current == null or current < expected: + return report_error(GdAssertMessages.error_is_value(Comparator.GREATER_EQUAL, current, expected)) + return report_success() + + +func is_between(from :Variant, to :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(from) or not _validate_is_vector_type(to): + return self + var current :Variant = current_value() + if current == null or not (current >= from and current <= to): + return report_error(GdAssertMessages.error_is_value(Comparator.BETWEEN_EQUAL, current, from, to)) + return report_success() + + +func is_not_between(from :Variant, to :Variant) -> GdUnitVectorAssert: + if not _validate_is_vector_type(from) or not _validate_is_vector_type(to): + return self + var current :Variant = current_value() + if (current != null and current >= from and current <= to): + return report_error(GdAssertMessages.error_is_value(Comparator.NOT_BETWEEN_EQUAL, current, from, to)) + return report_success() diff --git a/addons/gdUnit4/src/asserts/ValueProvider.gd b/addons/gdUnit4/src/asserts/ValueProvider.gd new file mode 100644 index 0000000..a94aa91 --- /dev/null +++ b/addons/gdUnit4/src/asserts/ValueProvider.gd @@ -0,0 +1,6 @@ +# base interface for assert value provider +class_name ValueProvider +extends RefCounted + +func get_value() -> Variant: + return null diff --git a/addons/gdUnit4/src/cmd/CmdArgumentParser.gd b/addons/gdUnit4/src/cmd/CmdArgumentParser.gd new file mode 100644 index 0000000..1abe67f --- /dev/null +++ b/addons/gdUnit4/src/cmd/CmdArgumentParser.gd @@ -0,0 +1,61 @@ +class_name CmdArgumentParser +extends RefCounted + +var _options :CmdOptions +var _tool_name :String +var _parsed_commands :Dictionary = Dictionary() + + +func _init(p_options :CmdOptions, p_tool_name :String) -> void: + _options = p_options + _tool_name = p_tool_name + + +func parse(args :Array, ignore_unknown_cmd := false) -> GdUnitResult: + _parsed_commands.clear() + + # parse until first program argument + while not args.is_empty(): + var arg :String = args.pop_front() + if arg.find(_tool_name) != -1: + break + + if args.is_empty(): + return GdUnitResult.empty() + + # now parse all arguments + while not args.is_empty(): + var cmd :String = args.pop_front() + var option := _options.get_option(cmd) + + if option: + if _parse_cmd_arguments(option, args) == -1: + return GdUnitResult.error("The '%s' command requires an argument!" % option.short_command()) + elif not ignore_unknown_cmd: + return GdUnitResult.error("Unknown '%s' command!" % cmd) + return GdUnitResult.success(_parsed_commands.values()) + + +func options() -> CmdOptions: + return _options + + +func _parse_cmd_arguments(option :CmdOption, args :Array) -> int: + var command_name := option.short_command() + var command :CmdCommand = _parsed_commands.get(command_name, CmdCommand.new(command_name)) + + if option.has_argument(): + if not option.is_argument_optional() and args.is_empty(): + return -1 + if _is_next_value_argument(args): + command.add_argument(args.pop_front()) + elif not option.is_argument_optional(): + return -1 + _parsed_commands[command_name] = command + return 0 + + +func _is_next_value_argument(args :Array) -> bool: + if args.is_empty(): + return false + return _options.get_option(args[0]) == null diff --git a/addons/gdUnit4/src/cmd/CmdCommand.gd b/addons/gdUnit4/src/cmd/CmdCommand.gd new file mode 100644 index 0000000..58f0915 --- /dev/null +++ b/addons/gdUnit4/src/cmd/CmdCommand.gd @@ -0,0 +1,26 @@ +class_name CmdCommand +extends RefCounted + +var _name: String +var _arguments: PackedStringArray + + +func _init(p_name :String, p_arguments := []) -> void: + _name = p_name + _arguments = PackedStringArray(p_arguments) + + +func name() -> String: + return _name + + +func arguments() -> PackedStringArray: + return _arguments + + +func add_argument(arg :String) -> void: + _arguments.append(arg) + + +func _to_string() -> String: + return "%s:%s" % [_name, ", ".join(_arguments)] diff --git a/addons/gdUnit4/src/cmd/CmdCommandHandler.gd b/addons/gdUnit4/src/cmd/CmdCommandHandler.gd new file mode 100644 index 0000000..5b3b1cd --- /dev/null +++ b/addons/gdUnit4/src/cmd/CmdCommandHandler.gd @@ -0,0 +1,104 @@ +class_name CmdCommandHandler +extends RefCounted + +const CB_SINGLE_ARG = 0 +const CB_MULTI_ARGS = 1 +const NO_CB := Callable() + +var _cmd_options :CmdOptions +# holds the command callbacks by key::String and value: [, ]:Array +# Dictionary[String, Array[Callback] +var _command_cbs :Dictionary + +# we only able to check cb function name since Godot 3.3.x +var _enhanced_fr_test := false + + +func _init(cmd_options: CmdOptions) -> void: + _cmd_options = cmd_options + var major: int = Engine.get_version_info()["major"] + var minor: int = Engine.get_version_info()["minor"] + if major == 3 and minor == 3: + _enhanced_fr_test = true + + +# register a callback function for given command +# cmd_name short name of the command +# fr_arg a funcref to a function with a single argument +func register_cb(cmd_name: String, cb: Callable = NO_CB) -> CmdCommandHandler: + var registered_cb: Array = _command_cbs.get(cmd_name, [NO_CB, NO_CB]) + if registered_cb[CB_SINGLE_ARG]: + push_error("A function for command '%s' is already registered!" % cmd_name) + return self + registered_cb[CB_SINGLE_ARG] = cb + _command_cbs[cmd_name] = registered_cb + return self + + +# register a callback function for given command +# cb a funcref to a function with a variable number of arguments but expects all parameters to be passed via a single Array. +func register_cbv(cmd_name: String, cb: Callable) -> CmdCommandHandler: + var registered_cb: Array = _command_cbs.get(cmd_name, [NO_CB, NO_CB]) + if registered_cb[CB_MULTI_ARGS]: + push_error("A function for command '%s' is already registered!" % cmd_name) + return self + registered_cb[CB_MULTI_ARGS] = cb + _command_cbs[cmd_name] = registered_cb + return self + + +func _validate() -> GdUnitResult: + var errors: = PackedStringArray() + # Dictionary[StringName, String] + var registered_cbs: = Dictionary() + + for cmd_name in _command_cbs.keys() as Array[String]: + var cb: Callable = (_command_cbs[cmd_name][CB_SINGLE_ARG] + if _command_cbs[cmd_name][CB_SINGLE_ARG] + else _command_cbs[cmd_name][CB_MULTI_ARGS]) + if cb != NO_CB and not cb.is_valid(): + errors.append("Invalid function reference for command '%s', Check the function reference!" % cmd_name) + if _cmd_options.get_option(cmd_name) == null: + errors.append("The command '%s' is unknown, verify your CmdOptions!" % cmd_name) + # verify for multiple registered command callbacks + if _enhanced_fr_test and cb != NO_CB: + var cb_method: = cb.get_method() + if registered_cbs.has(cb_method): + var already_registered_cmd :String = registered_cbs[cb_method] + errors.append("The function reference '%s' already registerd for command '%s'!" % [cb_method, already_registered_cmd]) + else: + registered_cbs[cb_method] = cmd_name + if errors.is_empty(): + return GdUnitResult.success(true) + return GdUnitResult.error("\n".join(errors)) + + +func execute(commands :Array[CmdCommand]) -> GdUnitResult: + var result := _validate() + if result.is_error(): + return result + for cmd in commands: + var cmd_name := cmd.name() + if _command_cbs.has(cmd_name): + var cb_s :Callable = _command_cbs.get(cmd_name)[CB_SINGLE_ARG] + var arguments := cmd.arguments() + var cmd_option := _cmd_options.get_option(cmd_name) + if cb_s and arguments.size() == 0: + cb_s.call() + elif cb_s: + if cmd_option.type() == TYPE_BOOL: + cb_s.call(true if arguments[0] == "true" else false) + else: + cb_s.call(arguments[0]) + else: + var cb_m :Callable = _command_cbs.get(cmd_name)[CB_MULTI_ARGS] + # we need to find the method and determin the arguments to call the right function + for m in cb_m.get_object().get_method_list(): + if m["name"] == cb_m.get_method(): + if m["args"].size() > 1: + cb_m.callv(arguments) + break + else: + cb_m.call(arguments) + break + return GdUnitResult.success(true) diff --git a/addons/gdUnit4/src/cmd/CmdConsole.gd b/addons/gdUnit4/src/cmd/CmdConsole.gd new file mode 100644 index 0000000..62a2949 --- /dev/null +++ b/addons/gdUnit4/src/cmd/CmdConsole.gd @@ -0,0 +1,145 @@ +# prototype of console with CSI support +# https://notes.burke.libbey.me/ansi-escape-codes/ +class_name CmdConsole +extends RefCounted + +enum { + COLOR_TABLE, + COLOR_RGB +} + +const BOLD = 0x1 +const ITALIC = 0x2 +const UNDERLINE = 0x4 + +const CSI_BOLD = "" +const CSI_ITALIC = "" +const CSI_UNDERLINE = "" + +# Control Sequence Introducer +var _debug_show_color_codes := false +var _color_mode := COLOR_TABLE + + +func color(p_color :Color) -> CmdConsole: + # using color table 16 - 231 a 6 x 6 x 6 RGB color cube (16 + R * 36 + G * 6 + B) + if _color_mode == COLOR_TABLE: + @warning_ignore("integer_division") + var c2 := 16 + (int(p_color.r8/42) * 36) + (int(p_color.g8/42) * 6) + int(p_color.b8/42) + if _debug_show_color_codes: + printraw("%6d" % [c2]) + printraw("[38;5;%dm" % c2 ) + else: + printraw("[38;2;%d;%d;%dm" % [p_color.r8, p_color.g8, p_color.b8] ) + return self + + +func save_cursor() -> CmdConsole: + printraw("") + return self + + +func restore_cursor() -> CmdConsole: + printraw("") + return self + + +func end_color() -> CmdConsole: + printraw("") + return self + + +func row_pos(row :int) -> CmdConsole: + printraw("[%d;0H" % row ) + return self + + +func scroll_area(from :int, to :int) -> CmdConsole: + printraw("[%d;%dr" % [from ,to]) + return self + + +func progress_bar(p_progress :int, p_color :Color = Color.POWDER_BLUE) -> CmdConsole: + if p_progress < 0: + p_progress = 0 + if p_progress > 100: + p_progress = 100 + color(p_color) + printraw("[%-50s] %-3d%%\r" % ["".lpad(int(p_progress/2.0), "■").rpad(50, "-"), p_progress]) + end_color() + return self + + +func printl(value :String) -> CmdConsole: + printraw(value) + return self + + +func new_line() -> CmdConsole: + prints() + return self + + +func reset() -> CmdConsole: + return self + + +func bold(enable :bool) -> CmdConsole: + if enable: + printraw(CSI_BOLD) + return self + + +func italic(enable :bool) -> CmdConsole: + if enable: + printraw(CSI_ITALIC) + return self + + +func underline(enable :bool) -> CmdConsole: + if enable: + printraw(CSI_UNDERLINE) + return self + + +func prints_error(message :String) -> CmdConsole: + return color(Color.CRIMSON).printl(message).end_color().new_line() + + +func prints_warning(message :String) -> CmdConsole: + return color(Color.GOLDENROD).printl(message).end_color().new_line() + + +func prints_color(p_message :String, p_color :Color, p_flags := 0) -> CmdConsole: + return print_color(p_message, p_color, p_flags).new_line() + + +func print_color(p_message :String, p_color :Color, p_flags := 0) -> CmdConsole: + return color(p_color)\ + .bold(p_flags&BOLD == BOLD)\ + .italic(p_flags&ITALIC == ITALIC)\ + .underline(p_flags&UNDERLINE == UNDERLINE)\ + .printl(p_message)\ + .end_color() + + +func print_color_table() -> void: + prints_color("Color Table 6x6x6", Color.ANTIQUE_WHITE) + _debug_show_color_codes = true + for green in range(0, 6): + for red in range(0, 6): + for blue in range(0, 6): + print_color("████████ ", Color8(red*42, green*42, blue*42)) + new_line() + new_line() + + prints_color("Color Table RGB", Color.ANTIQUE_WHITE) + _color_mode = COLOR_RGB + for green in range(0, 6): + for red in range(0, 6): + for blue in range(0, 6): + print_color("████████ ", Color8(red*42, green*42, blue*42)) + new_line() + new_line() + _color_mode = COLOR_TABLE + _debug_show_color_codes = false diff --git a/addons/gdUnit4/src/cmd/CmdOption.gd b/addons/gdUnit4/src/cmd/CmdOption.gd new file mode 100644 index 0000000..a4982de --- /dev/null +++ b/addons/gdUnit4/src/cmd/CmdOption.gd @@ -0,0 +1,61 @@ +class_name CmdOption +extends RefCounted + + +var _commands :PackedStringArray +var _help :String +var _description :String +var _type :int +var _arg_optional :bool = false + + +# constructs a command option by given arguments +# commands : a string with comma separated list of available commands begining with the short form +# help: a help text show howto use +# description: a full description of the command +# type: the argument type +# arg_optional: defines of the argument optional +func _init(p_commands :String, p_help :String, p_description :String, p_type :int = TYPE_NIL, p_arg_optional :bool = false) -> void: + _commands = p_commands.replace(" ", "").replace("\t", "").split(",") + _help = p_help + _description = p_description + _type = p_type + _arg_optional = p_arg_optional + + +func commands() -> PackedStringArray: + return _commands + + +func short_command() -> String: + return _commands[0] + + +func help() -> String: + return _help + + +func description() -> String: + return _description + + +func type() -> int: + return _type + + +func is_argument_optional() -> bool: + return _arg_optional + + +func has_argument() -> bool: + return _type != TYPE_NIL + + +func describe() -> String: + if help().is_empty(): + return " %-32s %s \n" % [commands(), description()] + return " %-32s %s \n %-32s %s\n" % [commands(), description(), "", help()] + + +func _to_string() -> String: + return describe() diff --git a/addons/gdUnit4/src/cmd/CmdOptions.gd b/addons/gdUnit4/src/cmd/CmdOptions.gd new file mode 100644 index 0000000..c610529 --- /dev/null +++ b/addons/gdUnit4/src/cmd/CmdOptions.gd @@ -0,0 +1,31 @@ +class_name CmdOptions +extends RefCounted + + +var _default_options :Array[CmdOption] +var _advanced_options :Array[CmdOption] + + +func _init(p_options :Array[CmdOption] = [], p_advanced_options :Array[CmdOption] = []) -> void: + # default help options + _default_options = p_options + _advanced_options = p_advanced_options + + +func default_options() -> Array[CmdOption]: + return _default_options + + +func advanced_options() -> Array[CmdOption]: + return _advanced_options + + +func options() -> Array[CmdOption]: + return default_options() + advanced_options() + + +func get_option(cmd :String) -> CmdOption: + for option in options(): + if Array(option.commands()).has(cmd): + return option + return null diff --git a/addons/gdUnit4/src/core/GdArrayTools.gd b/addons/gdUnit4/src/core/GdArrayTools.gd new file mode 100644 index 0000000..3e3d3a9 --- /dev/null +++ b/addons/gdUnit4/src/core/GdArrayTools.gd @@ -0,0 +1,101 @@ +## Small helper tool to work with Godot Arrays +class_name GdArrayTools +extends RefCounted + + +const max_elements := 32 +const ARRAY_TYPES := [ + TYPE_ARRAY, + TYPE_PACKED_BYTE_ARRAY, + TYPE_PACKED_INT32_ARRAY, + TYPE_PACKED_INT64_ARRAY, + TYPE_PACKED_FLOAT32_ARRAY, + TYPE_PACKED_FLOAT64_ARRAY, + TYPE_PACKED_STRING_ARRAY, + TYPE_PACKED_VECTOR2_ARRAY, + TYPE_PACKED_VECTOR3_ARRAY, + TYPE_PACKED_COLOR_ARRAY +] + + +static func is_array_type(value :Variant) -> bool: + return is_type_array(typeof(value)) + + +static func is_type_array(type :int) -> bool: + return type in ARRAY_TYPES + + +## Filters an array by given value[br] +## If the given value not an array it returns null, will remove all occurence of given value. +static func filter_value(array :Variant, value :Variant) -> Variant: + if not is_array_type(array): + return null + var filtered_array :Variant = array.duplicate() + var index :int = filtered_array.find(value) + while index != -1: + filtered_array.remove_at(index) + index = filtered_array.find(value) + return filtered_array + + +## Erases a value from given array by using equals(l,r) to find the element to erase +static func erase_value(array :Array, value :Variant) -> void: + for element :Variant in array: + if GdObjects.equals(element, value): + array.erase(element) + + +## Scans for the array build in type on a untyped array[br] +## Returns the buildin type by scan all values and returns the type if all values has the same type. +## If the values has different types TYPE_VARIANT is returend +static func scan_typed(array :Array) -> int: + if array.is_empty(): + return TYPE_NIL + var actual_type := GdObjects.TYPE_VARIANT + for value :Variant in array: + var current_type := typeof(value) + if not actual_type in [GdObjects.TYPE_VARIANT, current_type]: + return GdObjects.TYPE_VARIANT + actual_type = current_type + return actual_type + + +## Converts given array into a string presentation.[br] +## This function is different to the original Godot str() implementation. +## The string presentaion contains fullquallified typed informations. +##[br] +## Examples: +## [codeblock] +## # will result in PackedString(["a", "b"]) +## GdArrayTools.as_string(PackedStringArray("a", "b")) +## # will result in PackedString(["a", "b"]) +## GdArrayTools.as_string(PackedColorArray(Color.RED, COLOR.GREEN)) +## [/codeblock] +static func as_string(elements :Variant, encode_value := true) -> String: + if not is_array_type(elements): + return "ERROR: Not an Array Type!" + var delemiter := ", " + if elements == null: + return "" + if elements.is_empty(): + return "" + var prefix := _typeof_as_string(elements) if encode_value else "" + var formatted := "" + var index := 0 + for element :Variant in elements: + if max_elements != -1 and index > max_elements: + return prefix + "[" + formatted + delemiter + "...]" + if formatted.length() > 0 : + formatted += delemiter + formatted += GdDefaultValueDecoder.decode(element) if encode_value else str(element) + index += 1 + return prefix + "[" + formatted + "]" + + +static func _typeof_as_string(value :Variant) -> String: + var type := typeof(value) + # for untyped array we retun empty string + if type == TYPE_ARRAY: + return "" + return GdObjects.typeof_as_string(value) diff --git a/addons/gdUnit4/src/core/GdDiffTool.gd b/addons/gdUnit4/src/core/GdDiffTool.gd new file mode 100644 index 0000000..a918a99 --- /dev/null +++ b/addons/gdUnit4/src/core/GdDiffTool.gd @@ -0,0 +1,155 @@ +# A tool to find differences between two objects +class_name GdDiffTool +extends RefCounted + + +const DIV_ADD :int = 214 +const DIV_SUB :int = 215 + + +static func _diff(lb: PackedByteArray, rb: PackedByteArray, lookup: Array, ldiff: Array, rdiff: Array) -> void: + var loffset := lb.size() + var roffset := rb.size() + + while true: + #if last character of X and Y matches + if loffset > 0 && roffset > 0 && lb[loffset - 1] == rb[roffset - 1]: + loffset -= 1 + roffset -= 1 + ldiff.push_front(lb[loffset]) + rdiff.push_front(rb[roffset]) + continue + #current character of Y is not present in X + else: if (roffset > 0 && (loffset == 0 || lookup[loffset][roffset - 1] >= lookup[loffset - 1][roffset])): + roffset -= 1 + ldiff.push_front(rb[roffset]) + ldiff.push_front(DIV_ADD) + rdiff.push_front(rb[roffset]) + rdiff.push_front(DIV_SUB) + continue + #current character of X is not present in Y + else: if (loffset > 0 && (roffset == 0 || lookup[loffset][roffset - 1] < lookup[loffset - 1][roffset])): + loffset -= 1 + ldiff.push_front(lb[loffset]) + ldiff.push_front(DIV_SUB) + rdiff.push_front(lb[loffset]) + rdiff.push_front(DIV_ADD) + continue + break + + +# lookup[i][j] stores the length of LCS of substring X[0..i-1], Y[0..j-1] +static func _createLookUp(lb: PackedByteArray, rb: PackedByteArray) -> Array: + var lookup := Array() + lookup.resize(lb.size() + 1) + for i in lookup.size(): + var x := [] + x.resize(rb.size() + 1) + lookup[i] = x + return lookup + + +static func _buildLookup(lb: PackedByteArray, rb: PackedByteArray) -> Array: + var lookup := _createLookUp(lb, rb) + # first column of the lookup table will be all 0 + for i in lookup.size(): + lookup[i][0] = 0 + # first row of the lookup table will be all 0 + for j :int in lookup[0].size(): + lookup[0][j] = 0 + + # fill the lookup table in bottom-up manner + for i in range(1, lookup.size()): + for j in range(1, lookup[0].size()): + # if current character of left and right matches + if lb[i - 1] == rb[j - 1]: + lookup[i][j] = lookup[i - 1][j - 1] + 1; + # else if current character of left and right don't match + else: + lookup[i][j] = max(lookup[i - 1][j], lookup[i][j - 1]); + return lookup + + +static func string_diff(left :Variant, right :Variant) -> Array[PackedByteArray]: + var lb := PackedByteArray() if left == null else str(left).to_utf8_buffer() + var rb := PackedByteArray() if right == null else str(right).to_utf8_buffer() + var ldiff := Array() + var rdiff := Array() + var lookup := _buildLookup(lb, rb); + _diff(lb, rb, lookup, ldiff, rdiff) + return [PackedByteArray(ldiff), PackedByteArray(rdiff)] + + +# prototype +static func longestCommonSubsequence(text1 :String, text2 :String) -> PackedStringArray: + var text1Words := text1.split(" ") + var text2Words := text2.split(" ") + var text1WordCount := text1Words.size() + var text2WordCount := text2Words.size() + var solutionMatrix := Array() + for i in text1WordCount+1: + var ar := Array() + for n in text2WordCount+1: + ar.append(0) + solutionMatrix.append(ar) + + for i in range(text1WordCount-1, 0, -1): + for j in range(text2WordCount-1, 0, -1): + if text1Words[i] == text2Words[j]: + solutionMatrix[i][j] = solutionMatrix[i + 1][j + 1] + 1; + else: + solutionMatrix[i][j] = max(solutionMatrix[i + 1][j], solutionMatrix[i][j + 1]); + + var i := 0 + var j := 0 + var lcsResultList := PackedStringArray(); + while (i < text1WordCount && j < text2WordCount): + if text1Words[i] == text2Words[j]: + lcsResultList.append(text2Words[j]) + i += 1 + j += 1 + else: if (solutionMatrix[i + 1][j] >= solutionMatrix[i][j + 1]): + i += 1 + else: + j += 1 + return lcsResultList + + +static func markTextDifferences(text1 :String, text2 :String, lcsList :PackedStringArray, insertColor :Color, deleteColor:Color) -> String: + var stringBuffer := "" + if text1 == null and lcsList == null: + return stringBuffer + + var text1Words := text1.split(" ") + var text2Words := text2.split(" ") + var i := 0 + var j := 0 + var word1LastIndex := 0 + var word2LastIndex := 0 + for k in lcsList.size(): + while i < text1Words.size() and j < text2Words.size(): + if text1Words[i] == lcsList[k] and text2Words[j] == lcsList[k]: + stringBuffer += "" + lcsList[k] + " " + word1LastIndex = i + 1 + word2LastIndex = j + 1 + i = text1Words.size() + j = text2Words.size() + + else: if text1Words[i] != lcsList[k]: + while i < text1Words.size() and text1Words[i] != lcsList[k]: + stringBuffer += "" + text1Words[i] + " " + i += 1 + else: if text2Words[j] != lcsList[k]: + while j < text2Words.size() and text2Words[j] != lcsList[k]: + stringBuffer += "" + text2Words[j] + " " + j += 1 + i = word1LastIndex + j = word2LastIndex + + while word1LastIndex < text1Words.size(): + stringBuffer += "" + text1Words[word1LastIndex] + " " + word1LastIndex += 1 + while word2LastIndex < text2Words.size(): + stringBuffer += "" + text2Words[word2LastIndex] + " " + word2LastIndex += 1 + return stringBuffer diff --git a/addons/gdUnit4/src/core/GdFunctionDoubler.gd b/addons/gdUnit4/src/core/GdFunctionDoubler.gd new file mode 100644 index 0000000..aafe866 --- /dev/null +++ b/addons/gdUnit4/src/core/GdFunctionDoubler.gd @@ -0,0 +1,189 @@ +class_name GdFunctionDoubler +extends RefCounted + +const DEFAULT_TYPED_RETURN_VALUES := { + TYPE_NIL: "null", + TYPE_BOOL: "false", + TYPE_INT: "0", + TYPE_FLOAT: "0.0", + TYPE_STRING: "\"\"", + TYPE_STRING_NAME: "&\"\"", + TYPE_VECTOR2: "Vector2.ZERO", + TYPE_VECTOR2I: "Vector2i.ZERO", + TYPE_RECT2: "Rect2()", + TYPE_RECT2I: "Rect2i()", + TYPE_VECTOR3: "Vector3.ZERO", + TYPE_VECTOR3I: "Vector3i.ZERO", + TYPE_VECTOR4: "Vector4.ZERO", + TYPE_VECTOR4I: "Vector4i.ZERO", + TYPE_TRANSFORM2D: "Transform2D()", + TYPE_PLANE: "Plane()", + TYPE_QUATERNION: "Quaternion()", + TYPE_AABB: "AABB()", + TYPE_BASIS: "Basis()", + TYPE_TRANSFORM3D: "Transform3D()", + TYPE_PROJECTION: "Projection()", + TYPE_COLOR: "Color()", + TYPE_NODE_PATH: "NodePath()", + TYPE_RID: "RID()", + TYPE_OBJECT: "null", + TYPE_CALLABLE: "Callable()", + TYPE_SIGNAL: "Signal()", + TYPE_DICTIONARY: "Dictionary()", + TYPE_ARRAY: "Array()", + TYPE_PACKED_BYTE_ARRAY: "PackedByteArray()", + TYPE_PACKED_INT32_ARRAY: "PackedInt32Array()", + TYPE_PACKED_INT64_ARRAY: "PackedInt64Array()", + TYPE_PACKED_FLOAT32_ARRAY: "PackedFloat32Array()", + TYPE_PACKED_FLOAT64_ARRAY: "PackedFloat64Array()", + TYPE_PACKED_STRING_ARRAY: "PackedStringArray()", + TYPE_PACKED_VECTOR2_ARRAY: "PackedVector2Array()", + TYPE_PACKED_VECTOR3_ARRAY: "PackedVector3Array()", + TYPE_PACKED_COLOR_ARRAY: "PackedColorArray()", + GdObjects.TYPE_VARIANT: "null", + GdObjects.TYPE_ENUM: "0" +} + +# @GlobalScript enums +# needs to manually map because of https://github.com/godotengine/godot/issues/73835 +const DEFAULT_ENUM_RETURN_VALUES = { + "Side" : "SIDE_LEFT", + "Corner" : "CORNER_TOP_LEFT", + "Orientation" : "HORIZONTAL", + "ClockDirection" : "CLOCKWISE", + "HorizontalAlignment" : "HORIZONTAL_ALIGNMENT_LEFT", + "VerticalAlignment" : "VERTICAL_ALIGNMENT_TOP", + "InlineAlignment" : "INLINE_ALIGNMENT_TOP_TO", + "EulerOrder" : "EULER_ORDER_XYZ", + "Key" : "KEY_NONE", + "KeyModifierMask" : "KEY_CODE_MASK", + "MouseButton" : "MOUSE_BUTTON_NONE", + "MouseButtonMask" : "MOUSE_BUTTON_MASK_LEFT", + "JoyButton" : "JOY_BUTTON_INVALID", + "JoyAxis" : "JOY_AXIS_INVALID", + "MIDIMessage" : "MIDI_MESSAGE_NONE", + "Error" : "OK", + "PropertyHint" : "PROPERTY_HINT_NONE", + "Variant.Type" : "TYPE_NIL", +} + +var _push_errors :String + + +# Determine the enum default by reflection +static func get_enum_default(value :String) -> Variant: + var script := GDScript.new() + script.source_code = """ + extends Resource + + static func get_enum_default() -> Variant: + return %s.values()[0] + + """.dedent() % value + script.reload() + return script.new().call("get_enum_default") + + +static func default_return_value(func_descriptor :GdFunctionDescriptor) -> String: + var return_type :Variant = func_descriptor.return_type() + if return_type == GdObjects.TYPE_ENUM: + var enum_class := func_descriptor._return_class + var enum_path := enum_class.split(".") + if enum_path.size() >= 2: + var keys := ClassDB.class_get_enum_constants(enum_path[0], enum_path[1]) + if not keys.is_empty(): + return "%s.%s" % [enum_path[0], keys[0]] + var enum_value :Variant = get_enum_default(enum_class) + if enum_value != null: + return str(enum_value) + # we need fallback for @GlobalScript enums, + return DEFAULT_ENUM_RETURN_VALUES.get(func_descriptor._return_class, "0") + return DEFAULT_TYPED_RETURN_VALUES.get(return_type, "invalid") + + +func _init(push_errors :bool = false) -> void: + _push_errors = "true" if push_errors else "false" + for type_key in TYPE_MAX: + if not DEFAULT_TYPED_RETURN_VALUES.has(type_key): + push_error("missing default definitions! Expexting %d bud is %d" % [DEFAULT_TYPED_RETURN_VALUES.size(), TYPE_MAX]) + prints("missing default definition for type", type_key) + assert(DEFAULT_TYPED_RETURN_VALUES.has(type_key), "Missing Type default definition!") + + +@warning_ignore("unused_parameter") +func get_template(return_type :Variant, is_vararg :bool) -> String: + push_error("Must be implemented!") + return "" + +func double(func_descriptor :GdFunctionDescriptor) -> PackedStringArray: + var func_signature := func_descriptor.typeless() + var is_static := func_descriptor.is_static() + var is_vararg := func_descriptor.is_vararg() + var is_coroutine := func_descriptor.is_coroutine() + var func_name := func_descriptor.name() + var args := func_descriptor.args() + var varargs := func_descriptor.varargs() + var return_value := GdFunctionDoubler.default_return_value(func_descriptor) + var arg_names := extract_arg_names(args) + var vararg_names := extract_arg_names(varargs) + + # save original constructor arguments + if func_name == "_init": + var constructor_args := ",".join(GdFunctionDoubler.extract_constructor_args(args)) + var constructor := "func _init(%s) -> void:\n super(%s)\n pass\n" % [constructor_args, ", ".join(arg_names)] + return constructor.split("\n") + + var double_src := "" + double_src += '@warning_ignore("untyped_declaration")\n' if Engine.get_version_info().hex >= 0x40200 else '\n' + if func_descriptor.is_engine(): + double_src += '@warning_ignore("native_method_override")\n' + if func_descriptor.return_type() == GdObjects.TYPE_ENUM: + double_src += '@warning_ignore("int_as_enum_without_match")\n' + double_src += '@warning_ignore("int_as_enum_without_cast")\n' + double_src += '@warning_ignore("shadowed_variable")\n' + double_src += func_signature + # fix to unix format, this is need when the template is edited under windows than the template is stored with \r\n + var func_template := get_template(func_descriptor.return_type(), is_vararg).replace("\r\n", "\n") + double_src += func_template\ + .replace("$(arguments)", ", ".join(arg_names))\ + .replace("$(varargs)", ", ".join(vararg_names))\ + .replace("$(await)", GdFunctionDoubler.await_is_coroutine(is_coroutine)) \ + .replace("$(func_name)", func_name )\ + .replace("${default_return_value}", return_value)\ + .replace("$(push_errors)", _push_errors) + + if is_static: + double_src = double_src.replace("$(instance)", "__instance().") + else: + double_src = double_src.replace("$(instance)", "") + return double_src.split("\n") + + +func extract_arg_names(argument_signatures :Array[GdFunctionArgument]) -> PackedStringArray: + var arg_names := PackedStringArray() + for arg in argument_signatures: + arg_names.append(arg._name) + return arg_names + + +static func extract_constructor_args(args :Array[GdFunctionArgument]) -> PackedStringArray: + var constructor_args := PackedStringArray() + for arg in args: + var arg_name := arg._name + var default_value := get_default(arg) + if default_value == "null": + constructor_args.append(arg_name + ":Variant=" + default_value) + else: + constructor_args.append(arg_name + ":=" + default_value) + return constructor_args + + +static func get_default(arg :GdFunctionArgument) -> String: + if arg.has_default(): + return arg.value_as_string() + else: + return DEFAULT_TYPED_RETURN_VALUES.get(arg.type(), "null") + + +static func await_is_coroutine(is_coroutine :bool) -> String: + return "await " if is_coroutine else "" diff --git a/addons/gdUnit4/src/core/GdObjects.gd b/addons/gdUnit4/src/core/GdObjects.gd new file mode 100644 index 0000000..eadb79b --- /dev/null +++ b/addons/gdUnit4/src/core/GdObjects.gd @@ -0,0 +1,691 @@ +# This is a helper class to compare two objects by equals +class_name GdObjects +extends Resource + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +const TYPE_VOID = TYPE_MAX + 1000 +const TYPE_VARARG = TYPE_MAX + 1001 +const TYPE_VARIANT = TYPE_MAX + 1002 +const TYPE_FUNC = TYPE_MAX + 1003 +const TYPE_FUZZER = TYPE_MAX + 1004 + +const TYPE_NODE = TYPE_MAX + 2001 +# missing Godot types +const TYPE_CONTROL = TYPE_MAX + 2002 +const TYPE_CANVAS = TYPE_MAX + 2003 +const TYPE_ENUM = TYPE_MAX + 2004 + + +# used as default value for varargs +const TYPE_VARARG_PLACEHOLDER_VALUE = "__null__" + + +const TYPE_AS_STRING_MAPPINGS := { + TYPE_NIL: "null", + TYPE_BOOL: "bool", + TYPE_INT: "int", + TYPE_FLOAT: "float", + TYPE_STRING: "String", + TYPE_VECTOR2: "Vector2", + TYPE_VECTOR2I: "Vector2i", + TYPE_RECT2: "Rect2", + TYPE_RECT2I: "Rect2i", + TYPE_VECTOR3: "Vector3", + TYPE_VECTOR3I: "Vector3i", + TYPE_TRANSFORM2D: "Transform2D", + TYPE_VECTOR4: "Vector4", + TYPE_VECTOR4I: "Vector4i", + TYPE_PLANE: "Plane", + TYPE_QUATERNION: "Quaternion", + TYPE_AABB: "AABB", + TYPE_BASIS: "Basis", + TYPE_TRANSFORM3D: "Transform3D", + TYPE_PROJECTION: "Projection", + TYPE_COLOR: "Color", + TYPE_STRING_NAME: "StringName", + TYPE_NODE_PATH: "NodePath", + TYPE_RID: "RID", + TYPE_OBJECT: "Object", + TYPE_CALLABLE: "Callable", + TYPE_SIGNAL: "Signal", + TYPE_DICTIONARY: "Dictionary", + TYPE_ARRAY: "Array", + TYPE_PACKED_BYTE_ARRAY: "PackedByteArray", + TYPE_PACKED_INT32_ARRAY: "PackedInt32Array", + TYPE_PACKED_INT64_ARRAY: "PackedInt64Array", + TYPE_PACKED_FLOAT32_ARRAY: "PackedFloat32Array", + TYPE_PACKED_FLOAT64_ARRAY: "PackedFloat64Array", + TYPE_PACKED_STRING_ARRAY: "PackedStringArray", + TYPE_PACKED_VECTOR2_ARRAY: "PackedVector2Array", + TYPE_PACKED_VECTOR3_ARRAY: "PackedVector3Array", + TYPE_PACKED_COLOR_ARRAY: "PackedColorArray", + TYPE_VOID: "void", + TYPE_VARARG: "VarArg", + TYPE_FUNC: "Func", + TYPE_FUZZER: "Fuzzer", + TYPE_VARIANT: "Variant" +} + + +const NOTIFICATION_AS_STRING_MAPPINGS := { + TYPE_OBJECT: { + Object.NOTIFICATION_POSTINITIALIZE : "POSTINITIALIZE", + Object.NOTIFICATION_PREDELETE: "PREDELETE", + EditorSettings.NOTIFICATION_EDITOR_SETTINGS_CHANGED: "EDITOR_SETTINGS_CHANGED", + }, + TYPE_NODE: { + Node.NOTIFICATION_ENTER_TREE : "ENTER_TREE", + Node.NOTIFICATION_EXIT_TREE: "EXIT_TREE", + Node.NOTIFICATION_CHILD_ORDER_CHANGED: "CHILD_ORDER_CHANGED", + Node.NOTIFICATION_READY: "READY", + Node.NOTIFICATION_PAUSED: "PAUSED", + Node.NOTIFICATION_UNPAUSED: "UNPAUSED", + Node.NOTIFICATION_PHYSICS_PROCESS: "PHYSICS_PROCESS", + Node.NOTIFICATION_PROCESS: "PROCESS", + Node.NOTIFICATION_PARENTED: "PARENTED", + Node.NOTIFICATION_UNPARENTED: "UNPARENTED", + Node.NOTIFICATION_SCENE_INSTANTIATED: "INSTANCED", + Node.NOTIFICATION_DRAG_BEGIN: "DRAG_BEGIN", + Node.NOTIFICATION_DRAG_END: "DRAG_END", + Node.NOTIFICATION_PATH_RENAMED: "PATH_CHANGED", + Node.NOTIFICATION_INTERNAL_PROCESS: "INTERNAL_PROCESS", + Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS: "INTERNAL_PHYSICS_PROCESS", + Node.NOTIFICATION_POST_ENTER_TREE: "POST_ENTER_TREE", + Node.NOTIFICATION_WM_MOUSE_ENTER: "WM_MOUSE_ENTER", + Node.NOTIFICATION_WM_MOUSE_EXIT: "WM_MOUSE_EXIT", + Node.NOTIFICATION_APPLICATION_FOCUS_IN: "WM_FOCUS_IN", + Node.NOTIFICATION_APPLICATION_FOCUS_OUT: "WM_FOCUS_OUT", + #Node.NOTIFICATION_WM_QUIT_REQUEST: "WM_QUIT_REQUEST", + Node.NOTIFICATION_WM_GO_BACK_REQUEST: "WM_GO_BACK_REQUEST", + Node.NOTIFICATION_WM_WINDOW_FOCUS_OUT: "WM_UNFOCUS_REQUEST", + Node.NOTIFICATION_OS_MEMORY_WARNING: "OS_MEMORY_WARNING", + Node.NOTIFICATION_TRANSLATION_CHANGED: "TRANSLATION_CHANGED", + Node.NOTIFICATION_WM_ABOUT: "WM_ABOUT", + Node.NOTIFICATION_CRASH: "CRASH", + Node.NOTIFICATION_OS_IME_UPDATE: "OS_IME_UPDATE", + Node.NOTIFICATION_APPLICATION_RESUMED: "APP_RESUMED", + Node.NOTIFICATION_APPLICATION_PAUSED: "APP_PAUSED", + Node3D.NOTIFICATION_TRANSFORM_CHANGED: "TRANSFORM_CHANGED", + Node3D.NOTIFICATION_ENTER_WORLD: "ENTER_WORLD", + Node3D.NOTIFICATION_EXIT_WORLD: "EXIT_WORLD", + Node3D.NOTIFICATION_VISIBILITY_CHANGED: "VISIBILITY_CHANGED", + Skeleton3D.NOTIFICATION_UPDATE_SKELETON: "UPDATE_SKELETON", + CanvasItem.NOTIFICATION_DRAW: "DRAW", + CanvasItem.NOTIFICATION_VISIBILITY_CHANGED: "VISIBILITY_CHANGED", + CanvasItem.NOTIFICATION_ENTER_CANVAS: "ENTER_CANVAS", + CanvasItem.NOTIFICATION_EXIT_CANVAS: "EXIT_CANVAS", + #Popup.NOTIFICATION_POST_POPUP: "POST_POPUP", + #Popup.NOTIFICATION_POPUP_HIDE: "POPUP_HIDE", + }, + TYPE_CONTROL : { + Object.NOTIFICATION_PREDELETE: "PREDELETE", + Container.NOTIFICATION_SORT_CHILDREN: "SORT_CHILDREN", + Control.NOTIFICATION_RESIZED: "RESIZED", + Control.NOTIFICATION_MOUSE_ENTER: "MOUSE_ENTER", + Control.NOTIFICATION_MOUSE_EXIT: "MOUSE_EXIT", + Control.NOTIFICATION_FOCUS_ENTER: "FOCUS_ENTER", + Control.NOTIFICATION_FOCUS_EXIT: "FOCUS_EXIT", + Control.NOTIFICATION_THEME_CHANGED: "THEME_CHANGED", + #Control.NOTIFICATION_MODAL_CLOSE: "MODAL_CLOSE", + Control.NOTIFICATION_SCROLL_BEGIN: "SCROLL_BEGIN", + Control.NOTIFICATION_SCROLL_END: "SCROLL_END", + } +} + + +enum COMPARE_MODE { + OBJECT_REFERENCE, + PARAMETER_DEEP_TEST +} + + +# prototype of better object to dictionary +static func obj2dict(obj :Object, hashed_objects := Dictionary()) -> Dictionary: + if obj == null: + return {} + var clazz_name := obj.get_class() + var dict := Dictionary() + var clazz_path := "" + + if is_instance_valid(obj) and obj.get_script() != null: + var d := inst_to_dict(obj) + clazz_path = d["@path"] + if d["@subpath"] != NodePath(""): + clazz_name = d["@subpath"] + dict["@inner_class"] = true + else: + clazz_name = clazz_path.get_file().replace(".gd", "") + dict["@path"] = clazz_path + + for property in obj.get_property_list(): + var property_name :String = property["name"] + var property_type :int = property["type"] + var property_value :Variant = obj.get(property_name) + if property_value is GDScript or property_value is Callable or property_value is RegEx: + continue + if (property["usage"] & PROPERTY_USAGE_SCRIPT_VARIABLE|PROPERTY_USAGE_DEFAULT + and not property["usage"] & PROPERTY_USAGE_CATEGORY + and not property["usage"] == 0): + if property_type == TYPE_OBJECT: + # prevent recursion + if hashed_objects.has(obj): + dict[property_name] = str(property_value) + continue + hashed_objects[obj] = true + dict[property_name] = obj2dict(property_value, hashed_objects) + else: + dict[property_name] = property_value + if obj.has_method("get_children"): + var childrens :Array = obj.get_children() + dict["childrens"] = childrens.map(func (child :Object) -> Dictionary: return obj2dict(child, hashed_objects)) + + return {"%s" % clazz_name : dict} + + +static func equals(obj_a :Variant, obj_b :Variant, case_sensitive :bool = false, compare_mode :COMPARE_MODE = COMPARE_MODE.PARAMETER_DEEP_TEST) -> bool: + return _equals(obj_a, obj_b, case_sensitive, compare_mode, [], 0) + + +static func equals_sorted(obj_a :Array, obj_b :Array, case_sensitive :bool = false, compare_mode :COMPARE_MODE = COMPARE_MODE.PARAMETER_DEEP_TEST) -> bool: + var a := obj_a.duplicate() + var b := obj_b.duplicate() + a.sort() + b.sort() + return equals(a, b, case_sensitive, compare_mode) + + +static func _equals(obj_a :Variant, obj_b :Variant, case_sensitive :bool, compare_mode :COMPARE_MODE, deep_stack :Array, stack_depth :int ) -> bool: + var type_a := typeof(obj_a) + var type_b := typeof(obj_b) + if stack_depth > 32: + prints("stack_depth", stack_depth, deep_stack) + push_error("GdUnit equals has max stack deep reached!") + return false + + # use argument matcher if requested + if is_instance_valid(obj_a) and obj_a is GdUnitArgumentMatcher: + return (obj_a as GdUnitArgumentMatcher).is_match(obj_b) + if is_instance_valid(obj_b) and obj_b is GdUnitArgumentMatcher: + return (obj_b as GdUnitArgumentMatcher).is_match(obj_a) + + stack_depth += 1 + # fast fail is different types + if not _is_type_equivalent(type_a, type_b): + return false + # is same instance + if obj_a == obj_b: + return true + # handle null values + if obj_a == null and obj_b != null: + return false + if obj_b == null and obj_a != null: + return false + + match type_a: + TYPE_OBJECT: + if deep_stack.has(obj_a) or deep_stack.has(obj_b): + return true + deep_stack.append(obj_a) + deep_stack.append(obj_b) + if compare_mode == COMPARE_MODE.PARAMETER_DEEP_TEST: + # fail fast + if not is_instance_valid(obj_a) or not is_instance_valid(obj_b): + return false + if obj_a.get_class() != obj_b.get_class(): + return false + var a := obj2dict(obj_a) + var b := obj2dict(obj_b) + return _equals(a, b, case_sensitive, compare_mode, deep_stack, stack_depth) + return obj_a == obj_b + + TYPE_ARRAY: + if obj_a.size() != obj_b.size(): + return false + for index :int in obj_a.size(): + if not _equals(obj_a[index], obj_b[index], case_sensitive, compare_mode, deep_stack, stack_depth): + return false + return true + + TYPE_DICTIONARY: + if obj_a.size() != obj_b.size(): + return false + for key :Variant in obj_a.keys(): + var value_a :Variant = obj_a[key] if obj_a.has(key) else null + var value_b :Variant = obj_b[key] if obj_b.has(key) else null + if not _equals(value_a, value_b, case_sensitive, compare_mode, deep_stack, stack_depth): + return false + return true + + TYPE_STRING: + if case_sensitive: + return obj_a.to_lower() == obj_b.to_lower() + else: + return obj_a == obj_b + return obj_a == obj_b + + +@warning_ignore("shadowed_variable_base_class") +static func notification_as_string(instance :Variant, notification :int) -> String: + var error := "Unknown notification: '%s' at instance: %s" % [notification, instance] + if instance is Node and NOTIFICATION_AS_STRING_MAPPINGS[TYPE_NODE].has(notification): + return NOTIFICATION_AS_STRING_MAPPINGS[TYPE_NODE].get(notification, error) + if instance is Control and NOTIFICATION_AS_STRING_MAPPINGS[TYPE_CONTROL].has(notification): + return NOTIFICATION_AS_STRING_MAPPINGS[TYPE_CONTROL].get(notification, error) + return NOTIFICATION_AS_STRING_MAPPINGS[TYPE_OBJECT].get(notification, error) + + +static func string_to_type(value :String) -> int: + for type :int in TYPE_AS_STRING_MAPPINGS.keys(): + if TYPE_AS_STRING_MAPPINGS.get(type) == value: + return type + return TYPE_NIL + + +static func to_camel_case(value :String) -> String: + var p := to_pascal_case(value) + if not p.is_empty(): + p[0] = p[0].to_lower() + return p + + +static func to_pascal_case(value :String) -> String: + return value.capitalize().replace(" ", "") + + +static func to_snake_case(value :String) -> String: + var result := PackedStringArray() + for ch in value: + var lower_ch := ch.to_lower() + if ch != lower_ch and result.size() > 1: + result.append('_') + result.append(lower_ch) + return ''.join(result) + + +static func is_snake_case(value :String) -> bool: + for ch in value: + if ch == '_': + continue + if ch == ch.to_upper(): + return false + return true + + +static func type_as_string(type :int) -> String: + return TYPE_AS_STRING_MAPPINGS.get(type, "Variant") + + +static func typeof_as_string(value :Variant) -> String: + return TYPE_AS_STRING_MAPPINGS.get(typeof(value), "Unknown type") + + +static func all_types() -> PackedInt32Array: + return PackedInt32Array(TYPE_AS_STRING_MAPPINGS.keys()) + + +static func string_as_typeof(type_name :String) -> int: + var type :Variant = TYPE_AS_STRING_MAPPINGS.find_key(type_name) + return type if type != null else TYPE_VARIANT + + +static func is_primitive_type(value :Variant) -> bool: + return typeof(value) in [TYPE_BOOL, TYPE_STRING, TYPE_STRING_NAME, TYPE_INT, TYPE_FLOAT] + + +static func _is_type_equivalent(type_a :int, type_b :int) -> bool: + # don't test for TYPE_STRING_NAME equivalenz + if type_a == TYPE_STRING_NAME or type_b == TYPE_STRING_NAME: + return true + if GdUnitSettings.is_strict_number_type_compare(): + return type_a == type_b + return ( + (type_a == TYPE_FLOAT and type_b == TYPE_INT) + or (type_a == TYPE_INT and type_b == TYPE_FLOAT) + or type_a == type_b) + + +static func is_engine_type(value :Object) -> bool: + if value is GDScript or value is ScriptExtension: + return false + return value.is_class("GDScriptNativeClass") + + +static func is_type(value :Variant) -> bool: + # is an build-in type + if typeof(value) != TYPE_OBJECT: + return false + # is a engine class type + if is_engine_type(value): + return true + # is a custom class type + if value is GDScript and value.can_instantiate(): + return true + return false + + +static func _is_same(left :Variant, right :Variant) -> bool: + var left_type := -1 if left == null else typeof(left) + var right_type := -1 if right == null else typeof(right) + + # if typ different can't be the same + if left_type != right_type: + return false + if left_type == TYPE_OBJECT and right_type == TYPE_OBJECT: + return left.get_instance_id() == right.get_instance_id() + return equals(left, right) + + +static func is_object(value :Variant) -> bool: + return typeof(value) == TYPE_OBJECT + + +static func is_script(value :Variant) -> bool: + return is_object(value) and value is Script + + +static func is_test_suite(script :Script) -> bool: + return is_gd_testsuite(script) or GdUnit4CSharpApiLoader.is_test_suite(script.resource_path) + + +static func is_native_class(value :Variant) -> bool: + return is_object(value) and is_engine_type(value) + + +static func is_scene(value :Variant) -> bool: + return is_object(value) and value is PackedScene + + +static func is_scene_resource_path(value :Variant) -> bool: + return value is String and value.ends_with(".tscn") + + +static func is_gd_script(script :Script) -> bool: + return script is GDScript + + +static func is_cs_script(script :Script) -> bool: + # we need to check by stringify name because checked non mono Godot the class CSharpScript is not available + return str(script).find("CSharpScript") != -1 + + +static func is_gd_testsuite(script :Script) -> bool: + if is_gd_script(script): + var stack := [script] + while not stack.is_empty(): + var current := stack.pop_front() as Script + var base := current.get_base_script() as Script + if base != null: + if base.resource_path.find("GdUnitTestSuite") != -1: + return true + stack.push_back(base) + return false + + +static func is_singleton(value :Variant) -> bool: + if not is_instance_valid(value) or is_native_class(value): + return false + for name in Engine.get_singleton_list(): + if value.is_class(name): + return true + return false + + +static func is_instance(value :Variant) -> bool: + if not is_instance_valid(value) or is_native_class(value): + return false + if is_script(value) and value.get_instance_base_type() == "": + return true + if is_scene(value): + return true + return not value.has_method('new') and not value.has_method('instance') + + +# only object form type Node and attached filename +static func is_instance_scene(instance :Variant) -> bool: + if instance is Node: + var node := instance as Node + return node.get_scene_file_path() != null and not node.get_scene_file_path().is_empty() + return false + + +static func can_be_instantiate(obj :Variant) -> bool: + if not obj or is_engine_type(obj): + return false + return obj.has_method("new") + + +static func create_instance(clazz :Variant) -> GdUnitResult: + match typeof(clazz): + TYPE_OBJECT: + # test is given clazz already an instance + if is_instance(clazz): + return GdUnitResult.success(clazz) + return GdUnitResult.success(clazz.new()) + TYPE_STRING: + if ClassDB.class_exists(clazz): + if Engine.has_singleton(clazz): + return GdUnitResult.error("Not allowed to create a instance for singelton '%s'." % clazz) + if not ClassDB.can_instantiate(clazz): + return GdUnitResult.error("Can't instance Engine class '%s'." % clazz) + return GdUnitResult.success(ClassDB.instantiate(clazz)) + else: + var clazz_path :String = extract_class_path(clazz)[0] + if not FileAccess.file_exists(clazz_path): + return GdUnitResult.error("Class '%s' not found." % clazz) + var script := load(clazz_path) + if script != null: + return GdUnitResult.success(script.new()) + else: + return GdUnitResult.error("Can't create instance for '%s'." % clazz) + return GdUnitResult.error("Can't create instance for class '%s'." % clazz) + + +static func extract_class_path(clazz :Variant) -> PackedStringArray: + var clazz_path := PackedStringArray() + if clazz is String: + clazz_path.append(clazz) + return clazz_path + if is_instance(clazz): + # is instance a script instance? + var script := clazz.script as GDScript + if script != null: + return extract_class_path(script) + return clazz_path + + if clazz is GDScript: + if not clazz.resource_path.is_empty(): + clazz_path.append(clazz.resource_path) + return clazz_path + # if not found we go the expensive way and extract the path form the script by creating an instance + var arg_list := build_function_default_arguments(clazz, "_init") + var instance :Variant = clazz.callv("new", arg_list) + var clazz_info := inst_to_dict(instance) + GdUnitTools.free_instance(instance) + clazz_path.append(clazz_info["@path"]) + if clazz_info.has("@subpath"): + var sub_path :String = clazz_info["@subpath"] + if not sub_path.is_empty(): + var sub_paths := sub_path.split("/") + clazz_path += sub_paths + return clazz_path + return clazz_path + + +static func extract_class_name_from_class_path(clazz_path :PackedStringArray) -> String: + var base_clazz := clazz_path[0] + # return original class name if engine class + if ClassDB.class_exists(base_clazz): + return base_clazz + var clazz_name := to_pascal_case(base_clazz.get_basename().get_file()) + for path_index in range(1, clazz_path.size()): + clazz_name += "." + clazz_path[path_index] + return clazz_name + + +static func extract_class_name(clazz :Variant) -> GdUnitResult: + if clazz == null: + return GdUnitResult.error("Can't extract class name form a null value.") + + if is_instance(clazz): + # is instance a script instance? + var script := clazz.script as GDScript + if script != null: + return extract_class_name(script) + return GdUnitResult.success(clazz.get_class()) + + # extract name form full qualified class path + if clazz is String: + if ClassDB.class_exists(clazz): + return GdUnitResult.success(clazz) + var source_sript :Script = load(clazz) + var clazz_name :String = load("res://addons/gdUnit4/src/core/parse/GdScriptParser.gd").new().get_class_name(source_sript) + return GdUnitResult.success(to_pascal_case(clazz_name)) + + if is_primitive_type(clazz): + return GdUnitResult.error("Can't extract class name for an primitive '%s'" % type_as_string(typeof(clazz))) + + if is_script(clazz): + if clazz.resource_path.is_empty(): + var class_path := extract_class_name_from_class_path(extract_class_path(clazz)) + return GdUnitResult.success(class_path); + return extract_class_name(clazz.resource_path) + + # need to create an instance for a class typ the extract the class name + var instance :Variant = clazz.new() + if instance == null: + return GdUnitResult.error("Can't create a instance for class '%s'" % clazz) + var result := extract_class_name(instance) + GdUnitTools.free_instance(instance) + return result + + +static func extract_inner_clazz_names(clazz_name :String, script_path :PackedStringArray) -> PackedStringArray: + var inner_classes := PackedStringArray() + + if ClassDB.class_exists(clazz_name): + return inner_classes + var script :GDScript = load(script_path[0]) + var map := script.get_script_constant_map() + for key :String in map.keys(): + var value :Variant = map.get(key) + if value is GDScript: + var class_path := extract_class_path(value) + inner_classes.append(class_path[1]) + return inner_classes + + +static func extract_class_functions(clazz_name :String, script_path :PackedStringArray) -> Array: + if ClassDB.class_get_method_list(clazz_name): + return ClassDB.class_get_method_list(clazz_name) + + if not FileAccess.file_exists(script_path[0]): + return Array() + var script :GDScript = load(script_path[0]) + if script is GDScript: + # if inner class on class path we have to load the script from the script_constant_map + if script_path.size() == 2 and script_path[1] != "": + var inner_classes := script_path[1] + var map := script.get_script_constant_map() + script = map[inner_classes] + var clazz_functions :Array = script.get_method_list() + var base_clazz :String = script.get_instance_base_type() + if base_clazz: + return extract_class_functions(base_clazz, script_path) + return clazz_functions + return Array() + + +# scans all registert script classes for given +# if the class is public in the global space than return true otherwise false +# public class means the script class is defined by 'class_name ' +static func is_public_script_class(clazz_name :String) -> bool: + var script_classes:Array[Dictionary] = ProjectSettings.get_global_class_list() + for class_info in script_classes: + if class_info.has("class"): + if class_info["class"] == clazz_name: + return true + return false + + +static func build_function_default_arguments(script :GDScript, func_name :String) -> Array: + var arg_list := Array() + for func_sig in script.get_script_method_list(): + if func_sig["name"] == func_name: + var args :Array[Dictionary] = func_sig["args"] + for arg in args: + var value_type :int = arg["type"] + var default_value :Variant = default_value_by_type(value_type) + arg_list.append(default_value) + return arg_list + return arg_list + + +static func default_value_by_type(type :int) -> Variant: + assert(type < TYPE_MAX) + assert(type >= 0) + + match type: + TYPE_NIL: return null + TYPE_BOOL: return false + TYPE_INT: return 0 + TYPE_FLOAT: return 0.0 + TYPE_STRING: return "" + TYPE_VECTOR2: return Vector2.ZERO + TYPE_VECTOR2I: return Vector2i.ZERO + TYPE_VECTOR3: return Vector3.ZERO + TYPE_VECTOR3I: return Vector3i.ZERO + TYPE_VECTOR4: return Vector4.ZERO + TYPE_VECTOR4I: return Vector4i.ZERO + TYPE_RECT2: return Rect2() + TYPE_RECT2I: return Rect2i() + TYPE_TRANSFORM2D: return Transform2D() + TYPE_PLANE: return Plane() + TYPE_QUATERNION: return Quaternion() + TYPE_AABB: return AABB() + TYPE_BASIS: return Basis() + TYPE_TRANSFORM3D: return Transform3D() + TYPE_COLOR: return Color() + TYPE_NODE_PATH: return NodePath() + TYPE_RID: return RID() + TYPE_OBJECT: return null + TYPE_ARRAY: return [] + TYPE_DICTIONARY: return {} + TYPE_PACKED_BYTE_ARRAY: return PackedByteArray() + TYPE_PACKED_COLOR_ARRAY: return PackedColorArray() + TYPE_PACKED_INT32_ARRAY: return PackedInt32Array() + TYPE_PACKED_INT64_ARRAY: return PackedInt64Array() + TYPE_PACKED_FLOAT32_ARRAY: return PackedFloat32Array() + TYPE_PACKED_FLOAT64_ARRAY: return PackedFloat64Array() + TYPE_PACKED_STRING_ARRAY: return PackedStringArray() + TYPE_PACKED_VECTOR2_ARRAY: return PackedVector2Array() + TYPE_PACKED_VECTOR3_ARRAY: return PackedVector3Array() + + push_error("Can't determine a default value for type: '%s', Please create a Bug issue and attach the stacktrace please." % type) + return null + + +static func find_nodes_by_class(root: Node, cls: String, recursive: bool = false) -> Array[Node]: + if not recursive: + return _find_nodes_by_class_no_rec(root, cls) + return _find_nodes_by_class(root, cls) + + +static func _find_nodes_by_class_no_rec(parent: Node, cls: String) -> Array[Node]: + var result :Array[Node] = [] + for ch in parent.get_children(): + if ch.get_class() == cls: + result.append(ch) + return result + + +static func _find_nodes_by_class(root: Node, cls: String) -> Array[Node]: + var result :Array[Node] = [] + var stack :Array[Node] = [root] + while stack: + var node :Node = stack.pop_back() + if node.get_class() == cls: + result.append(node) + for ch in node.get_children(): + stack.push_back(ch) + return result diff --git a/addons/gdUnit4/src/core/GdUnit4Version.gd b/addons/gdUnit4/src/core/GdUnit4Version.gd new file mode 100644 index 0000000..5918353 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnit4Version.gd @@ -0,0 +1,57 @@ +class_name GdUnit4Version +extends RefCounted + +const VERSION_PATTERN = "[center][color=#9887c4]gd[/color][color=#7a57d6]Unit[/color][color=#9887c4]4[/color] [color=#9887c4]${version}[/color][/center]" + +var _major :int +var _minor :int +var _patch :int + + +func _init(major :int, minor :int, patch :int) -> void: + _major = major + _minor = minor + _patch = patch + + +static func parse(value :String) -> GdUnit4Version: + var regex := RegEx.new() + regex.compile("[a-zA-Z:,-]+") + var cleaned := regex.sub(value, "", true) + var parts := cleaned.split(".") + var major := parts[0].to_int() + var minor := parts[1].to_int() + var patch := parts[2].to_int() if parts.size() > 2 else 0 + return GdUnit4Version.new(major, minor, patch) + + +static func current() -> GdUnit4Version: + var config := ConfigFile.new() + config.load('addons/gdUnit4/plugin.cfg') + return parse(config.get_value('plugin', 'version')) + + +func equals(other :GdUnit4Version) -> bool: + return _major == other._major and _minor == other._minor and _patch == other._patch + + +func is_greater(other :GdUnit4Version) -> bool: + if _major > other._major: + return true + if _major == other._major and _minor > other._minor: + return true + return _major == other._major and _minor == other._minor and _patch > other._patch + + +static func init_version_label(label :Control) -> void: + var config := ConfigFile.new() + config.load('addons/gdUnit4/plugin.cfg') + var version :String = config.get_value('plugin', 'version') + if label is RichTextLabel: + label.text = VERSION_PATTERN.replace('${version}', version) + else: + label.text = "gdUnit4 " + version + + +func _to_string() -> String: + return "v%d.%d.%d" % [_major, _minor, _patch] diff --git a/addons/gdUnit4/src/core/GdUnitClassDoubler.gd b/addons/gdUnit4/src/core/GdUnitClassDoubler.gd new file mode 100644 index 0000000..4f0d2bb --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitClassDoubler.gd @@ -0,0 +1,122 @@ +# A class doubler used to mock and spy checked implementations +class_name GdUnitClassDoubler +extends RefCounted + + +const DOUBLER_INSTANCE_ID_PREFIX := "gdunit_doubler_instance_id_" +const DOUBLER_TEMPLATE :GDScript = preload("res://addons/gdUnit4/src/core/GdUnitObjectInteractionsTemplate.gd") +const EXCLUDE_VIRTUAL_FUNCTIONS = [ + # we have to exclude notifications because NOTIFICATION_PREDELETE is try + # to delete already freed spy/mock resources and will result in a conflict + "_notification", + # https://github.com/godotengine/godot/issues/67461 + "get_name", + "get_path", + "duplicate", + ] +# define functions to be exclude when spy or mock checked a scene +const EXLCUDE_SCENE_FUNCTIONS = [ + # needs to exclude get/set script functions otherwise it endsup in recursive endless loop + "set_script", + "get_script", + # needs to exclude otherwise verify fails checked collection arguments checked calling to string + "_to_string", +] +const EXCLUDE_FUNCTIONS = ["new", "free", "get_instance_id", "get_tree"] + + +static func check_leaked_instances() -> void: + ## we check that all registered spy/mock instances are removed from the engine meta data + for key in Engine.get_meta_list(): + if key.begins_with(DOUBLER_INSTANCE_ID_PREFIX): + var instance :Variant = Engine.get_meta(key) + push_error("GdUnit internal error: an spy/mock instance '%s', class:'%s' is not removed from the engine and will lead in a leaked instance!" % [instance, instance.__SOURCE_CLASS]) + + +# loads the doubler template +# class_info = { "class_name": <>, "class_path" : <>} +static func load_template(template :String, class_info :Dictionary, instance :Object) -> PackedStringArray: + # store instance id + var source_code := template\ + .replace("${instance_id}", "%s%d" % [DOUBLER_INSTANCE_ID_PREFIX, abs(instance.get_instance_id())])\ + .replace("${source_class}", class_info.get("class_name")) + var lines := GdScriptParser.to_unix_format(source_code).split("\n") + # replace template class_name with Doubled name and extends form source class + lines.insert(0, "class_name Doubled%s" % class_info.get("class_name").replace(".", "_")) + lines.insert(1, extends_clazz(class_info)) + # append Object interactions stuff + lines.append_array(GdScriptParser.to_unix_format(DOUBLER_TEMPLATE.source_code).split("\n")) + return lines + + +static func extends_clazz(class_info :Dictionary) -> String: + var clazz_name :String = class_info.get("class_name") + var clazz_path :PackedStringArray = class_info.get("class_path", []) + # is inner class? + if clazz_path.size() > 1: + return "extends %s" % clazz_name + if clazz_path.size() == 1 and clazz_path[0].ends_with(".gd"): + return "extends '%s'" % clazz_path[0] + return "extends %s" % clazz_name + + +# double all functions of given instance +static func double_functions(instance :Object, clazz_name :String, clazz_path :PackedStringArray, func_doubler: GdFunctionDoubler, exclude_functions :Array) -> PackedStringArray: + var doubled_source := PackedStringArray() + var parser := GdScriptParser.new() + var exclude_override_functions := EXCLUDE_VIRTUAL_FUNCTIONS + EXCLUDE_FUNCTIONS + exclude_functions + var functions := Array() + + # double script functions + if not ClassDB.class_exists(clazz_name): + var result := parser.parse(clazz_name, clazz_path) + if result.is_error(): + push_error(result.error_message()) + return PackedStringArray() + var class_descriptor :GdClassDescriptor = result.value() + while class_descriptor != null: + for func_descriptor in class_descriptor.functions(): + if instance != null and not instance.has_method(func_descriptor.name()): + #prints("no virtual func implemented",clazz_name, func_descriptor.name() ) + continue + if functions.has(func_descriptor.name()) or exclude_override_functions.has(func_descriptor.name()): + continue + doubled_source += func_doubler.double(func_descriptor) + functions.append(func_descriptor.name()) + class_descriptor = class_descriptor.parent() + + # double regular class functions + var clazz_functions := GdObjects.extract_class_functions(clazz_name, clazz_path) + for method : Dictionary in clazz_functions: + var func_descriptor := GdFunctionDescriptor.extract_from(method) + # exclude private core functions + if func_descriptor.is_private(): + continue + if functions.has(func_descriptor.name()) or exclude_override_functions.has(func_descriptor.name()): + continue + # GD-110: Hotfix do not double invalid engine functions + if is_invalid_method_descriptior(method): + #prints("'%s': invalid method descriptor found! %s" % [clazz_name, method]) + continue + # do not double on not implemented virtual functions + if instance != null and not instance.has_method(func_descriptor.name()): + #prints("no virtual func implemented",clazz_name, func_descriptor.name() ) + continue + functions.append(func_descriptor.name()) + doubled_source.append_array(func_doubler.double(func_descriptor)) + return doubled_source + + +# GD-110 +static func is_invalid_method_descriptior(method :Dictionary) -> bool: + var return_info :Dictionary = method["return"] + var type :int = return_info["type"] + var usage :int = return_info["usage"] + var clazz_name :String = return_info["class_name"] + # is method returning a type int with a given 'class_name' we have an enum + # and the PROPERTY_USAGE_CLASS_IS_ENUM must be set + if type == TYPE_INT and not clazz_name.is_empty() and not (usage & PROPERTY_USAGE_CLASS_IS_ENUM): + return true + if clazz_name == "Variant.Type": + return true + return false diff --git a/addons/gdUnit4/src/core/GdUnitFileAccess.gd b/addons/gdUnit4/src/core/GdUnitFileAccess.gd new file mode 100644 index 0000000..01022dd --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitFileAccess.gd @@ -0,0 +1,211 @@ +class_name GdUnitFileAccess +extends RefCounted + +const GDUNIT_TEMP := "user://tmp" + + +static func current_dir() -> String: + return ProjectSettings.globalize_path("res://") + + +static func clear_tmp() -> void: + delete_directory(GDUNIT_TEMP) + + +# Creates a new file under +static func create_temp_file(relative_path :String, file_name :String, mode := FileAccess.WRITE) -> FileAccess: + var file_path := create_temp_dir(relative_path) + "/" + file_name + var file := FileAccess.open(file_path, mode) + if file == null: + push_error("Error creating temporary file at: %s, %s" % [file_path, error_string(FileAccess.get_open_error())]) + return file + + +static func temp_dir() -> String: + if not DirAccess.dir_exists_absolute(GDUNIT_TEMP): + DirAccess.make_dir_recursive_absolute(GDUNIT_TEMP) + return GDUNIT_TEMP + + +static func create_temp_dir(folder_name :String) -> String: + var new_folder := temp_dir() + "/" + folder_name + if not DirAccess.dir_exists_absolute(new_folder): + DirAccess.make_dir_recursive_absolute(new_folder) + return new_folder + + +static func copy_file(from_file :String, to_dir :String) -> GdUnitResult: + var dir := DirAccess.open(to_dir) + if dir != null: + var to_file := to_dir + "/" + from_file.get_file() + prints("Copy %s to %s" % [from_file, to_file]) + var error := dir.copy(from_file, to_file) + if error != OK: + return GdUnitResult.error("Can't copy file form '%s' to '%s'. Error: '%s'" % [from_file, to_file, error_string(error)]) + return GdUnitResult.success(to_file) + return GdUnitResult.error("Directory not found: " + to_dir) + + +static func copy_directory(from_dir :String, to_dir :String, recursive :bool = false) -> bool: + if not DirAccess.dir_exists_absolute(from_dir): + push_error("Source directory not found '%s'" % from_dir) + return false + + # check if destination exists + if not DirAccess.dir_exists_absolute(to_dir): + # create it + var err := DirAccess.make_dir_recursive_absolute(to_dir) + if err != OK: + push_error("Can't create directory '%s'. Error: %s" % [to_dir, error_string(err)]) + return false + var source_dir := DirAccess.open(from_dir) + var dest_dir := DirAccess.open(to_dir) + if source_dir != null: + source_dir.list_dir_begin() + var next := "." + + while next != "": + next = source_dir.get_next() + if next == "" or next == "." or next == "..": + continue + var source := source_dir.get_current_dir() + "/" + next + var dest := dest_dir.get_current_dir() + "/" + next + if source_dir.current_is_dir(): + if recursive: + copy_directory(source + "/", dest, recursive) + continue + var err := source_dir.copy(source, dest) + if err != OK: + push_error("Error checked copy file '%s' to '%s'" % [source, dest]) + return false + + return true + else: + push_error("Directory not found: " + from_dir) + return false + + +static func delete_directory(path :String, only_content := false) -> void: + var dir := DirAccess.open(path) + if dir != null: + dir.list_dir_begin() + var file_name := "." + while file_name != "": + file_name = dir.get_next() + if file_name.is_empty() or file_name == "." or file_name == "..": + continue + var next := path + "/" +file_name + if dir.current_is_dir(): + delete_directory(next) + else: + # delete file + var err := dir.remove(next) + if err: + push_error("Delete %s failed: %s" % [next, error_string(err)]) + if not only_content: + var err := dir.remove(path) + if err: + push_error("Delete %s failed: %s" % [path, error_string(err)]) + + +static func delete_path_index_lower_equals_than(path :String, prefix :String, index :int) -> int: + var dir := DirAccess.open(path) + if dir == null: + return 0 + var deleted := 0 + dir.list_dir_begin() + var next := "." + while next != "": + next = dir.get_next() + if next.is_empty() or next == "." or next == "..": + continue + if next.begins_with(prefix): + var current_index := next.split("_")[1].to_int() + if current_index <= index: + deleted += 1 + delete_directory(path + "/" + next) + return deleted + + +# scans given path for sub directories by given prefix and returns the highest index numer +# e.g. +static func find_last_path_index(path :String, prefix :String) -> int: + var dir := DirAccess.open(path) + if dir == null: + return 0 + var last_iteration := 0 + dir.list_dir_begin() + var next := "." + while next != "": + next = dir.get_next() + if next.is_empty() or next == "." or next == "..": + continue + if next.begins_with(prefix): + var iteration := next.split("_")[1].to_int() + if iteration > last_iteration: + last_iteration = iteration + return last_iteration + + +static func scan_dir(path :String) -> PackedStringArray: + var dir := DirAccess.open(path) + if dir == null or not dir.dir_exists(path): + return PackedStringArray() + var content := PackedStringArray() + dir.list_dir_begin() + var next := "." + while next != "": + next = dir.get_next() + if next.is_empty() or next == "." or next == "..": + continue + content.append(next) + return content + + +static func resource_as_array(resource_path :String) -> PackedStringArray: + var file := FileAccess.open(resource_path, FileAccess.READ) + if file == null: + push_error("ERROR: Can't read resource '%s'. %s" % [resource_path, error_string(FileAccess.get_open_error())]) + return PackedStringArray() + var file_content := PackedStringArray() + while not file.eof_reached(): + file_content.append(file.get_line()) + return file_content + + +static func resource_as_string(resource_path :String) -> String: + var file := FileAccess.open(resource_path, FileAccess.READ) + if file == null: + push_error("ERROR: Can't read resource '%s'. %s" % [resource_path, error_string(FileAccess.get_open_error())]) + return "" + return file.get_as_text(true) + + +static func make_qualified_path(path :String) -> String: + if not path.begins_with("res://"): + if path.begins_with("//"): + return path.replace("//", "res://") + if path.begins_with("/"): + return "res:/" + path + return path + + +static func extract_zip(zip_package :String, dest_path :String) -> GdUnitResult: + var zip: ZIPReader = ZIPReader.new() + var err := zip.open(zip_package) + if err != OK: + return GdUnitResult.error("Extracting `%s` failed! Please collect the error log and report this. Error Code: %s" % [zip_package, err]) + var zip_entries: PackedStringArray = zip.get_files() + # Get base path and step over archive folder + var archive_path := zip_entries[0] + zip_entries.remove_at(0) + + for zip_entry in zip_entries: + var new_file_path: String = dest_path + "/" + zip_entry.replace(archive_path, "") + if zip_entry.ends_with("/"): + DirAccess.make_dir_recursive_absolute(new_file_path) + continue + var file: FileAccess = FileAccess.open(new_file_path, FileAccess.WRITE) + file.store_buffer(zip.read_file(zip_entry)) + zip.close() + return GdUnitResult.success(dest_path) diff --git a/addons/gdUnit4/src/core/GdUnitObjectInteractions.gd b/addons/gdUnit4/src/core/GdUnitObjectInteractions.gd new file mode 100644 index 0000000..36930fc --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitObjectInteractions.gd @@ -0,0 +1,42 @@ +class_name GdUnitObjectInteractions +extends RefCounted + + +static func verify(interaction_object :Object, interactions_times :int) -> Variant: + if not _is_mock_or_spy(interaction_object, "__verify"): + return interaction_object + return interaction_object.__do_verify_interactions(interactions_times) + + +static func verify_no_interactions(interaction_object :Object) -> GdUnitAssert: + var __gd_assert :GdUnitAssert = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", ResourceLoader.CACHE_MODE_REUSE).new("") + if not _is_mock_or_spy(interaction_object, "__verify"): + return __gd_assert.report_success() + var __summary :Dictionary = interaction_object.__verify_no_interactions() + if __summary.is_empty(): + return __gd_assert.report_success() + return __gd_assert.report_error(GdAssertMessages.error_no_more_interactions(__summary)) + + +static func verify_no_more_interactions(interaction_object :Object) -> GdUnitAssert: + var __gd_assert :GdUnitAssert = ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd", "GDScript", ResourceLoader.CACHE_MODE_REUSE).new("") + if not _is_mock_or_spy(interaction_object, "__verify_no_more_interactions"): + return __gd_assert + var __summary :Dictionary = interaction_object.__verify_no_more_interactions() + if __summary.is_empty(): + return __gd_assert + return __gd_assert.report_error(GdAssertMessages.error_no_more_interactions(__summary)) + + +static func reset(interaction_object :Object) -> Object: + if not _is_mock_or_spy(interaction_object, "__reset"): + return interaction_object + interaction_object.__reset_interactions() + return interaction_object + + +static func _is_mock_or_spy(interaction_object :Object, mock_function_signature :String) -> bool: + if interaction_object is GDScript and not interaction_object.get_script().has_script_method(mock_function_signature): + push_error("Error: You try to use a non mock or spy!") + return false + return true diff --git a/addons/gdUnit4/src/core/GdUnitObjectInteractionsTemplate.gd b/addons/gdUnit4/src/core/GdUnitObjectInteractionsTemplate.gd new file mode 100644 index 0000000..c06b1d4 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitObjectInteractionsTemplate.gd @@ -0,0 +1,91 @@ +const GdUnitAssertImpl := preload("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd") + +var __expected_interactions :int = -1 +var __saved_interactions := Dictionary() +var __verified_interactions := Array() + + +func __save_function_interaction(function_args :Array[Variant]) -> void: + var __matcher := GdUnitArgumentMatchers.to_matcher(function_args, true) + for __index in __saved_interactions.keys().size(): + var __key :Variant = __saved_interactions.keys()[__index] + if __matcher.is_match(__key): + __saved_interactions[__key] += 1 + return + __saved_interactions[function_args] = 1 + + +func __is_verify_interactions() -> bool: + return __expected_interactions != -1 + + +func __do_verify_interactions(interactions_times :int = 1) -> Object: + __expected_interactions = interactions_times + return self + + +func __verify_interactions(function_args :Array[Variant]) -> void: + var __summary := Dictionary() + var __total_interactions := 0 + var __matcher := GdUnitArgumentMatchers.to_matcher(function_args, true) + for __index in __saved_interactions.keys().size(): + var __key :Variant = __saved_interactions.keys()[__index] + if __matcher.is_match(__key): + var __interactions :int = __saved_interactions.get(__key, 0) + __total_interactions += __interactions + __summary[__key] = __interactions + # add as verified + __verified_interactions.append(__key) + + var __gd_assert := GdUnitAssertImpl.new("") + if __total_interactions != __expected_interactions: + var __expected_summary := {function_args : __expected_interactions} + var __error_message :String + # if no __interactions macht collect not verified __interactions for failure report + if __summary.is_empty(): + var __current_summary := __verify_no_more_interactions() + __error_message = GdAssertMessages.error_validate_interactions(__current_summary, __expected_summary) + else: + __error_message = GdAssertMessages.error_validate_interactions(__summary, __expected_summary) + __gd_assert.report_error(__error_message) + else: + __gd_assert.report_success() + __expected_interactions = -1 + + +func __verify_no_interactions() -> Dictionary: + var __summary := Dictionary() + if not __saved_interactions.is_empty(): + for __index in __saved_interactions.keys().size(): + var func_call :Variant = __saved_interactions.keys()[__index] + __summary[func_call] = __saved_interactions[func_call] + return __summary + + +func __verify_no_more_interactions() -> Dictionary: + var __summary := Dictionary() + var called_functions :Array[Variant] = __saved_interactions.keys() + if called_functions != __verified_interactions: + # collect the not verified functions + var called_but_not_verified := called_functions.duplicate() + for __index in __verified_interactions.size(): + called_but_not_verified.erase(__verified_interactions[__index]) + + for __index in called_but_not_verified.size(): + var not_verified :Variant = called_but_not_verified[__index] + __summary[not_verified] = __saved_interactions[not_verified] + return __summary + + +func __reset_interactions() -> void: + __saved_interactions.clear() + + +func __filter_vargs(arg_values :Array[Variant]) -> Array[Variant]: + var filtered :Array[Variant] = [] + for __index in arg_values.size(): + var arg :Variant = arg_values[__index] + if typeof(arg) == TYPE_STRING and arg == GdObjects.TYPE_VARARG_PLACEHOLDER_VALUE: + continue + filtered.append(arg) + return filtered diff --git a/addons/gdUnit4/src/core/GdUnitProperty.gd b/addons/gdUnit4/src/core/GdUnitProperty.gd new file mode 100644 index 0000000..6e338a3 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitProperty.gd @@ -0,0 +1,72 @@ +class_name GdUnitProperty +extends RefCounted + + +var _name :String +var _help :String +var _type :int +var _value :Variant +var _value_set :PackedStringArray +var _default :Variant + + +func _init(p_name :String, p_type :int, p_value :Variant, p_default_value :Variant, p_help :="", p_value_set := PackedStringArray()) -> void: + _name = p_name + _type = p_type + _value = p_value + _value_set = p_value_set + _default = p_default_value + _help = p_help + + +func name() -> String: + return _name + + +func type() -> int: + return _type + + +func value() -> Variant: + return _value + + +func value_set() -> PackedStringArray: + return _value_set + + +func is_selectable_value() -> bool: + return not _value_set.is_empty() + + +func set_value(p_value :Variant) -> void: + match _type: + TYPE_STRING: + _value = str(p_value) + TYPE_BOOL: + _value = bool(p_value) + TYPE_INT: + _value = int(p_value) + TYPE_FLOAT: + _value = float(p_value) + _: + _value = p_value + + +func default() -> Variant: + return _default + + +func category() -> String: + var elements := _name.split("/") + if elements.size() > 3: + return elements[2] + return "" + + +func help() -> String: + return _help + + +func _to_string() -> String: + return "%-64s %-10s %-10s (%s) help:%s set:%s" % [name(), type(), value(), default(), help(), _value_set] diff --git a/addons/gdUnit4/src/core/GdUnitResult.gd b/addons/gdUnit4/src/core/GdUnitResult.gd new file mode 100644 index 0000000..f2d297f --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitResult.gd @@ -0,0 +1,104 @@ +class_name GdUnitResult +extends RefCounted + +enum { + SUCCESS, + WARN, + ERROR, + EMPTY +} + +var _state :Variant +var _warn_message := "" +var _error_message := "" +var _value :Variant = null + + +static func empty() -> GdUnitResult: + var result := GdUnitResult.new() + result._state = EMPTY + return result + + +static func success(p_value :Variant) -> GdUnitResult: + assert(p_value != null, "The value must not be NULL") + var result := GdUnitResult.new() + result._value = p_value + result._state = SUCCESS + return result + + +static func warn(p_warn_message :String, p_value :Variant = null) -> GdUnitResult: + assert(not p_warn_message.is_empty()) #,"The message must not be empty") + var result := GdUnitResult.new() + result._value = p_value + result._warn_message = p_warn_message + result._state = WARN + return result + + +static func error(p_error_message :String) -> GdUnitResult: + assert(not p_error_message.is_empty(), "The message must not be empty") + var result := GdUnitResult.new() + result._value = null + result._error_message = p_error_message + result._state = ERROR + return result + + +func is_success() -> bool: + return _state == SUCCESS + + +func is_warn() -> bool: + return _state == WARN + + +func is_error() -> bool: + return _state == ERROR + + +func is_empty() -> bool: + return _state == EMPTY + + +func value() -> Variant: + return _value + + +func or_else(p_value :Variant) -> Variant: + if not is_success(): + return p_value + return value() + + +func error_message() -> String: + return _error_message + + +func warn_message() -> String: + return _warn_message + + +func _to_string() -> String: + return str(GdUnitResult.serialize(self)) + + +static func serialize(result :GdUnitResult) -> Dictionary: + if result == null: + push_error("Can't serialize a Null object from type GdUnitResult") + return { + "state" : result._state, + "value" : var_to_str(result._value), + "warn_msg" : result._warn_message, + "err_msg" : result._error_message + } + + +static func deserialize(config :Dictionary) -> GdUnitResult: + var result := GdUnitResult.new() + result._value = str_to_var(config.get("value", "")) + result._warn_message = config.get("warn_msg", null) + result._error_message = config.get("err_msg", null) + result._state = config.get("state") + return result diff --git a/addons/gdUnit4/src/core/GdUnitRunner.gd b/addons/gdUnit4/src/core/GdUnitRunner.gd new file mode 100644 index 0000000..1c12f3f --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitRunner.gd @@ -0,0 +1,169 @@ +extends Node + +signal sync_rpc_id_result_received + + +@onready var _client :GdUnitTcpClient = $GdUnitTcpClient +@onready var _executor :GdUnitTestSuiteExecutor = GdUnitTestSuiteExecutor.new() + +enum { + INIT, + RUN, + STOP, + EXIT +} + +const GDUNIT_RUNNER = "GdUnitRunner" + +var _config := GdUnitRunnerConfig.new() +var _test_suites_to_process :Array[Node] +var _state :int = INIT +var _cs_executor :RefCounted + + +func _init() -> void: + # minimize scene window checked debug mode + if OS.get_cmdline_args().size() == 1: + DisplayServer.window_set_title("GdUnit4 Runner (Debug Mode)") + else: + DisplayServer.window_set_title("GdUnit4 Runner (Release Mode)") + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MINIMIZED) + # store current runner instance to engine meta data to can be access in as a singleton + Engine.set_meta(GDUNIT_RUNNER, self) + _cs_executor = GdUnit4CSharpApiLoader.create_executor(self) + + +func _ready() -> void: + var config_result := _config.load_config() + if config_result.is_error(): + push_error(config_result.error_message()) + _state = EXIT + return + _client.connect("connection_failed", _on_connection_failed) + GdUnitSignals.instance().gdunit_event.connect(_on_gdunit_event) + var result := _client.start("127.0.0.1", _config.server_port()) + if result.is_error(): + push_error(result.error_message()) + return + _state = INIT + + +func _on_connection_failed(message :String) -> void: + prints("_on_connection_failed", message, _test_suites_to_process) + _state = STOP + + +func _notification(what :int) -> void: + #prints("GdUnitRunner", self, GdObjects.notification_as_string(what)) + if what == NOTIFICATION_PREDELETE: + Engine.remove_meta(GDUNIT_RUNNER) + + +func _process(_delta :float) -> void: + match _state: + INIT: + # wait until client is connected to the GdUnitServer + if _client.is_client_connected(): + var time := LocalTime.now() + prints("Scan for test suites.") + _test_suites_to_process = load_test_suits() + prints("Scanning of %d test suites took" % _test_suites_to_process.size(), time.elapsed_since()) + gdUnitInit() + _state = RUN + RUN: + # all test suites executed + if _test_suites_to_process.is_empty(): + _state = STOP + else: + # process next test suite + set_process(false) + var test_suite :Node = _test_suites_to_process.pop_front() + if _cs_executor != null and _cs_executor.IsExecutable(test_suite): + _cs_executor.Execute(test_suite) + await _cs_executor.ExecutionCompleted + else: + await _executor.execute(test_suite) + set_process(true) + STOP: + _state = EXIT + # give the engine small amount time to finish the rpc + _on_gdunit_event(GdUnitStop.new()) + await get_tree().create_timer(0.1).timeout + await get_tree().process_frame + get_tree().quit(0) + + +func load_test_suits() -> Array[Node]: + var to_execute := _config.to_execute() + if to_execute.is_empty(): + prints("No tests selected to execute!") + _state = EXIT + return [] + # scan for the requested test suites + var test_suites :Array[Node] = [] + var _scanner := GdUnitTestSuiteScanner.new() + for resource_path :String in to_execute.keys(): + var selected_tests :PackedStringArray = to_execute.get(resource_path) + var scaned_suites := _scanner.scan(resource_path) + _filter_test_case(scaned_suites, selected_tests) + test_suites += scaned_suites + return test_suites + + +func gdUnitInit() -> void: + #enable_manuall_polling() + send_message("Scaned %d test suites" % _test_suites_to_process.size()) + var total_count := _collect_test_case_count(_test_suites_to_process) + _on_gdunit_event(GdUnitInit.new(_test_suites_to_process.size(), total_count)) + if not GdUnitSettings.is_test_discover_enabled(): + for test_suite in _test_suites_to_process: + send_test_suite(test_suite) + + +func _filter_test_case(test_suites :Array[Node], included_tests :PackedStringArray) -> void: + if included_tests.is_empty(): + return + for test_suite in test_suites: + for test_case in test_suite.get_children(): + _do_filter_test_case(test_suite, test_case, included_tests) + + +func _do_filter_test_case(test_suite :Node, test_case :Node, included_tests :PackedStringArray) -> void: + for included_test in included_tests: + var test_meta :PackedStringArray = included_test.split(":") + var test_name := test_meta[0] + if test_case.get_name() == test_name: + # we have a paremeterized test selection + if test_meta.size() > 1: + var test_param_index := test_meta[1] + test_case.set_test_parameter_index(test_param_index.to_int()) + return + # the test is filtered out + test_suite.remove_child(test_case) + test_case.free() + + +func _collect_test_case_count(testSuites :Array[Node]) -> int: + var total :int = 0 + for test_suite in testSuites: + total += test_suite.get_child_count() + return total + + +# RPC send functions +func send_message(message :String) -> void: + _client.rpc_send(RPCMessage.of(message)) + + +func send_test_suite(test_suite :Node) -> void: + _client.rpc_send(RPCGdUnitTestSuite.of(test_suite)) + + +func _on_gdunit_event(event :GdUnitEvent) -> void: + _client.rpc_send(RPCGdUnitEvent.of(event)) + + +# Event bridge from C# GdUnit4.ITestEventListener.cs +func PublishEvent(data :Dictionary) -> void: + var event := GdUnitEvent.new().deserialize(data) + _client.rpc_send(RPCGdUnitEvent.of(event)) diff --git a/addons/gdUnit4/src/core/GdUnitRunner.tscn b/addons/gdUnit4/src/core/GdUnitRunner.tscn new file mode 100644 index 0000000..c1f67b1 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitRunner.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://belidlfknh74r"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/core/GdUnitRunner.gd" id="1"] +[ext_resource type="Script" path="res://addons/gdUnit4/src/network/GdUnitTcpClient.gd" id="2"] + +[node name="Control" type="Node"] +script = ExtResource("1") + +[node name="GdUnitTcpClient" type="Node" parent="."] +script = ExtResource("2") diff --git a/addons/gdUnit4/src/core/GdUnitRunnerConfig.gd b/addons/gdUnit4/src/core/GdUnitRunnerConfig.gd new file mode 100644 index 0000000..173b536 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitRunnerConfig.gd @@ -0,0 +1,154 @@ +class_name GdUnitRunnerConfig +extends Resource + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +const CONFIG_VERSION = "1.0" +const VERSION = "version" +const INCLUDED = "included" +const SKIPPED = "skipped" +const SERVER_PORT = "server_port" +const EXIT_FAIL_FAST ="exit_on_first_fail" + +const CONFIG_FILE = "res://addons/gdUnit4/GdUnitRunner.cfg" + +var _config := { + VERSION : CONFIG_VERSION, + # a set of directories or testsuite paths as key and a optional set of testcases as values + INCLUDED : Dictionary(), + # a set of skipped directories or testsuite paths + SKIPPED : Dictionary(), + # the port of running test server for this session + SERVER_PORT : -1 + } + + +func clear() -> GdUnitRunnerConfig: + _config[INCLUDED] = Dictionary() + _config[SKIPPED] = Dictionary() + return self + + +func set_server_port(port :int) -> GdUnitRunnerConfig: + _config[SERVER_PORT] = port + return self + + +func server_port() -> int: + return _config.get(SERVER_PORT, -1) + + +func self_test() -> GdUnitRunnerConfig: + add_test_suite("res://addons/gdUnit4/test/") + add_test_suite("res://addons/gdUnit4/mono/test/") + return self + + +func add_test_suite(p_resource_path :String) -> GdUnitRunnerConfig: + var to_execute_ := to_execute() + to_execute_[p_resource_path] = to_execute_.get(p_resource_path, PackedStringArray()) + return self + + +func add_test_suites(resource_paths :PackedStringArray) -> GdUnitRunnerConfig: + for resource_path_ in resource_paths: + add_test_suite(resource_path_) + return self + + +func add_test_case(p_resource_path :String, test_name :StringName, test_param_index :int = -1) -> GdUnitRunnerConfig: + var to_execute_ := to_execute() + var test_cases :PackedStringArray = to_execute_.get(p_resource_path, PackedStringArray()) + if test_param_index != -1: + test_cases.append("%s:%d" % [test_name, test_param_index]) + else: + test_cases.append(test_name) + to_execute_[p_resource_path] = test_cases + return self + + +# supports full path or suite name with optional test case name +# [:] +# '/path/path', res://path/path', 'res://path/path/testsuite.gd' or 'testsuite' +# 'res://path/path/testsuite.gd:test_case' or 'testsuite:test_case' +func skip_test_suite(value :StringName) -> GdUnitRunnerConfig: + var parts :Array = GdUnitFileAccess.make_qualified_path(value).rsplit(":") + if parts[0] == "res": + parts.pop_front() + parts[0] = GdUnitFileAccess.make_qualified_path(parts[0]) + match parts.size(): + 1: skipped()[parts[0]] = PackedStringArray() + 2: skip_test_case(parts[0], parts[1]) + return self + + +func skip_test_suites(resource_paths :PackedStringArray) -> GdUnitRunnerConfig: + for resource_path_ in resource_paths: + skip_test_suite(resource_path_) + return self + + +func skip_test_case(p_resource_path :String, test_name :StringName) -> GdUnitRunnerConfig: + var to_ignore := skipped() + var test_cases :PackedStringArray = to_ignore.get(p_resource_path, PackedStringArray()) + test_cases.append(test_name) + to_ignore[p_resource_path] = test_cases + return self + + +# Dictionary[String, Dictionary[String, PackedStringArray]] +func to_execute() -> Dictionary: + return _config.get(INCLUDED, {"res://" : PackedStringArray()}) + + +func skipped() -> Dictionary: + return _config.get(SKIPPED, {}) + + +func save_config(path :String = CONFIG_FILE) -> GdUnitResult: + var file := FileAccess.open(path, FileAccess.WRITE) + if file == null: + var error := FileAccess.get_open_error() + return GdUnitResult.error("Can't write test runner configuration '%s'! %s" % [path, error_string(error)]) + _config[VERSION] = CONFIG_VERSION + file.store_string(JSON.stringify(_config)) + return GdUnitResult.success(path) + + +func load_config(path :String = CONFIG_FILE) -> GdUnitResult: + if not FileAccess.file_exists(path): + return GdUnitResult.error("Can't find test runner configuration '%s'! Please select a test to run." % path) + var file := FileAccess.open(path, FileAccess.READ) + if file == null: + var error := FileAccess.get_open_error() + return GdUnitResult.error("Can't load test runner configuration '%s'! ERROR: %s." % [path, error_string(error)]) + var content := file.get_as_text() + if not content.is_empty() and content[0] == '{': + # Parse as json + var test_json_conv := JSON.new() + var error := test_json_conv.parse(content) + if error != OK: + return GdUnitResult.error("The runner configuration '%s' is invalid! The format is changed please delete it manually and start a new test run." % path) + _config = test_json_conv.get_data() as Dictionary + if not _config.has(VERSION): + return GdUnitResult.error("The runner configuration '%s' is invalid! The format is changed please delete it manually and start a new test run." % path) + fix_value_types() + return GdUnitResult.success(path) + + +func fix_value_types() -> void: + # fix float value to int json stores all numbers as float + var server_port_ :int = _config.get(SERVER_PORT, -1) + _config[SERVER_PORT] = server_port_ + convert_Array_to_PackedStringArray(_config[INCLUDED]) + convert_Array_to_PackedStringArray(_config[SKIPPED]) + + +func convert_Array_to_PackedStringArray(data :Dictionary) -> void: + for key in data.keys() as Array[String]: + var values :Array = data[key] + data[key] = PackedStringArray(values) + + +func _to_string() -> String: + return str(_config) diff --git a/addons/gdUnit4/src/core/GdUnitSceneRunnerImpl.gd b/addons/gdUnit4/src/core/GdUnitSceneRunnerImpl.gd new file mode 100644 index 0000000..bd2da3c --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitSceneRunnerImpl.gd @@ -0,0 +1,486 @@ +# This class provides a runner for scense to simulate interactions like keyboard or mouse +class_name GdUnitSceneRunnerImpl +extends GdUnitSceneRunner + + +var GdUnitFuncAssertImpl := ResourceLoader.load("res://addons/gdUnit4/src/asserts/GdUnitFuncAssertImpl.gd", "GDScript", ResourceLoader.CACHE_MODE_REUSE) + + +# mapping of mouse buttons and his masks +const MAP_MOUSE_BUTTON_MASKS := { + MOUSE_BUTTON_LEFT : MOUSE_BUTTON_MASK_LEFT, + MOUSE_BUTTON_RIGHT : MOUSE_BUTTON_MASK_RIGHT, + MOUSE_BUTTON_MIDDLE : MOUSE_BUTTON_MASK_MIDDLE, + # https://github.com/godotengine/godot/issues/73632 + MOUSE_BUTTON_WHEEL_UP : 1 << (MOUSE_BUTTON_WHEEL_UP - 1), + MOUSE_BUTTON_WHEEL_DOWN : 1 << (MOUSE_BUTTON_WHEEL_DOWN - 1), + MOUSE_BUTTON_XBUTTON1 : MOUSE_BUTTON_MASK_MB_XBUTTON1, + MOUSE_BUTTON_XBUTTON2 : MOUSE_BUTTON_MASK_MB_XBUTTON2, +} + +var _is_disposed := false +var _current_scene :Node = null +var _awaiter :GdUnitAwaiter = GdUnitAwaiter.new() +var _verbose :bool +var _simulate_start_time :LocalTime +var _last_input_event :InputEvent = null +var _mouse_button_on_press := [] +var _key_on_press := [] +var _action_on_press := [] +var _curent_mouse_position :Vector2 + +# time factor settings +var _time_factor := 1.0 +var _saved_iterations_per_second :float +var _scene_auto_free := false + + +func _init(p_scene :Variant, p_verbose :bool, p_hide_push_errors := false) -> void: + _verbose = p_verbose + _saved_iterations_per_second = Engine.get_physics_ticks_per_second() + set_time_factor(1) + # handle scene loading by resource path + if typeof(p_scene) == TYPE_STRING: + if !ResourceLoader.exists(p_scene): + if not p_hide_push_errors: + push_error("GdUnitSceneRunner: Can't load scene by given resource path: '%s'. The resource does not exists." % p_scene) + return + if !str(p_scene).ends_with(".tscn") and !str(p_scene).ends_with(".scn") and !str(p_scene).begins_with("uid://"): + if not p_hide_push_errors: + push_error("GdUnitSceneRunner: The given resource: '%s'. is not a scene." % p_scene) + return + _current_scene = load(p_scene).instantiate() + _scene_auto_free = true + else: + # verify we have a node instance + if not p_scene is Node: + if not p_hide_push_errors: + push_error("GdUnitSceneRunner: The given instance '%s' is not a Node." % p_scene) + return + _current_scene = p_scene + if _current_scene == null: + if not p_hide_push_errors: + push_error("GdUnitSceneRunner: Scene must be not null!") + return + _scene_tree().root.add_child(_current_scene) + # do finally reset all open input events when the scene is removed + _scene_tree().root.child_exiting_tree.connect(func f(child :Node) -> void: + if child == _current_scene: + _reset_input_to_default() + ) + _simulate_start_time = LocalTime.now() + # we need to set inital a valid window otherwise the warp_mouse() is not handled + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) + # set inital mouse pos to 0,0 + var max_iteration_to_wait := 0 + while get_global_mouse_position() != Vector2.ZERO and max_iteration_to_wait < 100: + Input.warp_mouse(Vector2.ZERO) + max_iteration_to_wait += 1 + + +func _notification(what :int) -> void: + if what == NOTIFICATION_PREDELETE and is_instance_valid(self): + # reset time factor to normal + __deactivate_time_factor() + if is_instance_valid(_current_scene): + _scene_tree().root.remove_child(_current_scene) + # do only free scenes instanciated by this runner + if _scene_auto_free: + _current_scene.free() + _is_disposed = true + _current_scene = null + # we hide the scene/main window after runner is finished + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MINIMIZED) + + +func _scene_tree() -> SceneTree: + return Engine.get_main_loop() as SceneTree + + +func simulate_action_pressed(action :String) -> GdUnitSceneRunner: + simulate_action_press(action) + simulate_action_release(action) + return self + + +func simulate_action_press(action :String) -> GdUnitSceneRunner: + __print_current_focus() + var event := InputEventAction.new() + event.pressed = true + event.action = action + _action_on_press.append(action) + return _handle_input_event(event) + + +func simulate_action_release(action :String) -> GdUnitSceneRunner: + __print_current_focus() + var event := InputEventAction.new() + event.pressed = false + event.action = action + _action_on_press.erase(action) + return _handle_input_event(event) + + +func simulate_key_pressed(key_code :int, shift_pressed := false, ctrl_pressed := false) -> GdUnitSceneRunner: + simulate_key_press(key_code, shift_pressed, ctrl_pressed) + simulate_key_release(key_code, shift_pressed, ctrl_pressed) + return self + + +func simulate_key_press(key_code :int, shift_pressed := false, ctrl_pressed := false) -> GdUnitSceneRunner: + __print_current_focus() + var event := InputEventKey.new() + event.pressed = true + event.keycode = key_code as Key + event.physical_keycode = key_code as Key + event.alt_pressed = key_code == KEY_ALT + event.shift_pressed = shift_pressed or key_code == KEY_SHIFT + event.ctrl_pressed = ctrl_pressed or key_code == KEY_CTRL + _apply_input_modifiers(event) + _key_on_press.append(key_code) + return _handle_input_event(event) + + +func simulate_key_release(key_code :int, shift_pressed := false, ctrl_pressed := false) -> GdUnitSceneRunner: + __print_current_focus() + var event := InputEventKey.new() + event.pressed = false + event.keycode = key_code as Key + event.physical_keycode = key_code as Key + event.alt_pressed = key_code == KEY_ALT + event.shift_pressed = shift_pressed or key_code == KEY_SHIFT + event.ctrl_pressed = ctrl_pressed or key_code == KEY_CTRL + _apply_input_modifiers(event) + _key_on_press.erase(key_code) + return _handle_input_event(event) + + +func set_mouse_pos(pos :Vector2) -> GdUnitSceneRunner: + var event := InputEventMouseMotion.new() + event.position = pos + event.global_position = get_global_mouse_position() + _apply_input_modifiers(event) + return _handle_input_event(event) + + +func get_mouse_position() -> Vector2: + if _last_input_event is InputEventMouse: + return _last_input_event.position + var current_scene := scene() + if current_scene != null: + return current_scene.get_viewport().get_mouse_position() + return Vector2.ZERO + + +func get_global_mouse_position() -> Vector2: + return Engine.get_main_loop().root.get_mouse_position() + + +func simulate_mouse_move(pos :Vector2) -> GdUnitSceneRunner: + var event := InputEventMouseMotion.new() + event.position = pos + event.relative = pos - get_mouse_position() + event.global_position = get_global_mouse_position() + _apply_input_mouse_mask(event) + _apply_input_modifiers(event) + return _handle_input_event(event) + + +func simulate_mouse_move_relative(relative: Vector2, time: float = 1.0, trans_type: Tween.TransitionType = Tween.TRANS_LINEAR) -> GdUnitSceneRunner: + var tween := _scene_tree().create_tween() + _curent_mouse_position = get_mouse_position() + var final_position := _curent_mouse_position + relative + tween.tween_property(self, "_curent_mouse_position", final_position, time).set_trans(trans_type) + tween.play() + + while not get_mouse_position().is_equal_approx(final_position): + simulate_mouse_move(_curent_mouse_position) + await _scene_tree().process_frame + return self + + +func simulate_mouse_move_absolute(position: Vector2, time: float = 1.0, trans_type: Tween.TransitionType = Tween.TRANS_LINEAR) -> GdUnitSceneRunner: + var tween := _scene_tree().create_tween() + _curent_mouse_position = get_mouse_position() + tween.tween_property(self, "_curent_mouse_position", position, time).set_trans(trans_type) + tween.play() + + while not get_mouse_position().is_equal_approx(position): + simulate_mouse_move(_curent_mouse_position) + await _scene_tree().process_frame + return self + + +func simulate_mouse_button_pressed(buttonIndex :MouseButton, double_click := false) -> GdUnitSceneRunner: + simulate_mouse_button_press(buttonIndex, double_click) + simulate_mouse_button_release(buttonIndex) + return self + + +func simulate_mouse_button_press(buttonIndex :MouseButton, double_click := false) -> GdUnitSceneRunner: + var event := InputEventMouseButton.new() + event.button_index = buttonIndex + event.pressed = true + event.double_click = double_click + _apply_input_mouse_position(event) + _apply_input_mouse_mask(event) + _apply_input_modifiers(event) + _mouse_button_on_press.append(buttonIndex) + return _handle_input_event(event) + + +func simulate_mouse_button_release(buttonIndex :MouseButton) -> GdUnitSceneRunner: + var event := InputEventMouseButton.new() + event.button_index = buttonIndex + event.pressed = false + _apply_input_mouse_position(event) + _apply_input_mouse_mask(event) + _apply_input_modifiers(event) + _mouse_button_on_press.erase(buttonIndex) + return _handle_input_event(event) + + +func set_time_factor(time_factor := 1.0) -> GdUnitSceneRunner: + _time_factor = min(9.0, time_factor) + __activate_time_factor() + __print("set time factor: %f" % _time_factor) + __print("set physics physics_ticks_per_second: %d" % (_saved_iterations_per_second*_time_factor)) + return self + + +func simulate_frames(frames: int, delta_milli :int = -1) -> GdUnitSceneRunner: + var time_shift_frames :int = max(1, frames / _time_factor) + for frame in time_shift_frames: + if delta_milli == -1: + await _scene_tree().process_frame + else: + await _scene_tree().create_timer(delta_milli * 0.001).timeout + return self + + +func simulate_until_signal( + signal_name :String, + arg0 :Variant = NO_ARG, + arg1 :Variant = NO_ARG, + arg2 :Variant = NO_ARG, + arg3 :Variant = NO_ARG, + arg4 :Variant = NO_ARG, + arg5 :Variant = NO_ARG, + arg6 :Variant = NO_ARG, + arg7 :Variant = NO_ARG, + arg8 :Variant = NO_ARG, + arg9 :Variant = NO_ARG) -> GdUnitSceneRunner: + var args :Array = GdArrayTools.filter_value([arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9], NO_ARG) + await _awaiter.await_signal_idle_frames(scene(), signal_name, args, 10000) + return self + + +func simulate_until_object_signal( + source :Object, + signal_name :String, + arg0 :Variant = NO_ARG, + arg1 :Variant = NO_ARG, + arg2 :Variant = NO_ARG, + arg3 :Variant = NO_ARG, + arg4 :Variant = NO_ARG, + arg5 :Variant = NO_ARG, + arg6 :Variant = NO_ARG, + arg7 :Variant = NO_ARG, + arg8 :Variant = NO_ARG, + arg9 :Variant = NO_ARG) -> GdUnitSceneRunner: + var args :Array = GdArrayTools.filter_value([arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9], NO_ARG) + await _awaiter.await_signal_idle_frames(source, signal_name, args, 10000) + return self + + +func await_func(func_name :String, args := []) -> GdUnitFuncAssert: + return GdUnitFuncAssertImpl.new(scene(), func_name, args) + + +func await_func_on(instance :Object, func_name :String, args := []) -> GdUnitFuncAssert: + return GdUnitFuncAssertImpl.new(instance, func_name, args) + + +func await_signal(signal_name :String, args := [], timeout := 2000 ) -> void: + await _awaiter.await_signal_on(scene(), signal_name, args, timeout) + + +func await_signal_on(source :Object, signal_name :String, args := [], timeout := 2000 ) -> void: + await _awaiter.await_signal_on(source, signal_name, args, timeout) + + +# maximizes the window to bring the scene visible +func maximize_view() -> GdUnitSceneRunner: + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) + DisplayServer.window_move_to_foreground() + return self + + +func _property_exists(name :String) -> bool: + return scene().get_property_list().any(func(properties :Dictionary) -> bool: return properties["name"] == name) + + +func get_property(name :String) -> Variant: + if not _property_exists(name): + return "The property '%s' not exist checked loaded scene." % name + return scene().get(name) + + +func set_property(name :String, value :Variant) -> bool: + if not _property_exists(name): + push_error("The property named '%s' cannot be set, it does not exist!" % name) + return false; + scene().set(name, value) + return true + + +func invoke( + name :String, + arg0 :Variant = NO_ARG, + arg1 :Variant = NO_ARG, + arg2 :Variant = NO_ARG, + arg3 :Variant = NO_ARG, + arg4 :Variant = NO_ARG, + arg5 :Variant = NO_ARG, + arg6 :Variant = NO_ARG, + arg7 :Variant = NO_ARG, + arg8 :Variant = NO_ARG, + arg9 :Variant = NO_ARG) -> Variant: + var args :Array = GdArrayTools.filter_value([arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9], NO_ARG) + if scene().has_method(name): + return scene().callv(name, args) + return "The method '%s' not exist checked loaded scene." % name + + +func find_child(name :String, recursive :bool = true, owned :bool = false) -> Node: + return scene().find_child(name, recursive, owned) + + +func _scene_name() -> String: + var scene_script :GDScript = scene().get_script() + var scene_name :String = scene().get_name() + if not scene_script: + return scene_name + if not scene_name.begins_with("@"): + return scene_name + return scene_script.resource_name.get_basename() + + +func __activate_time_factor() -> void: + Engine.set_time_scale(_time_factor) + Engine.set_physics_ticks_per_second((_saved_iterations_per_second * _time_factor) as int) + + +func __deactivate_time_factor() -> void: + Engine.set_time_scale(1) + Engine.set_physics_ticks_per_second(_saved_iterations_per_second as int) + + +# copy over current active modifiers +func _apply_input_modifiers(event :InputEvent) -> void: + if _last_input_event is InputEventWithModifiers and event is InputEventWithModifiers: + event.meta_pressed = event.meta_pressed or _last_input_event.meta_pressed + event.alt_pressed = event.alt_pressed or _last_input_event.alt_pressed + event.shift_pressed = event.shift_pressed or _last_input_event.shift_pressed + event.ctrl_pressed = event.ctrl_pressed or _last_input_event.ctrl_pressed + # this line results into reset the control_pressed state!!! + #event.command_or_control_autoremap = event.command_or_control_autoremap or _last_input_event.command_or_control_autoremap + + +# copy over current active mouse mask and combine with curren mask +func _apply_input_mouse_mask(event :InputEvent) -> void: + # first apply last mask + if _last_input_event is InputEventMouse and event is InputEventMouse: + event.button_mask |= _last_input_event.button_mask + if event is InputEventMouseButton: + var button_mask :int = MAP_MOUSE_BUTTON_MASKS.get(event.get_button_index(), 0) + if event.is_pressed(): + event.button_mask |= button_mask + else: + event.button_mask ^= button_mask + + +# copy over last mouse position if need +func _apply_input_mouse_position(event :InputEvent) -> void: + if _last_input_event is InputEventMouse and event is InputEventMouseButton: + event.position = _last_input_event.position + + +## handle input action via Input modifieres +func _handle_actions(event :InputEventAction) -> bool: + if not InputMap.event_is_action(event, event.action, true): + return false + __print(" process action %s (%s) <- %s" % [scene(), _scene_name(), event.as_text()]) + if event.is_pressed(): + Input.action_press(event.action, InputMap.action_get_deadzone(event.action)) + else: + Input.action_release(event.action) + return true + + +# for handling read https://docs.godotengine.org/en/stable/tutorials/inputs/inputevent.html?highlight=inputevent#how-does-it-work +func _handle_input_event(event :InputEvent) -> GdUnitSceneRunner: + if event is InputEventMouse: + Input.warp_mouse(event.position) + Input.parse_input_event(event) + + if event is InputEventAction: + _handle_actions(event) + + Input.flush_buffered_events() + var current_scene := scene() + if is_instance_valid(current_scene): + __print(" process event %s (%s) <- %s" % [current_scene, _scene_name(), event.as_text()]) + if(current_scene.has_method("_gui_input")): + current_scene._gui_input(event) + if(current_scene.has_method("_unhandled_input")): + current_scene._unhandled_input(event) + current_scene.get_viewport().set_input_as_handled() + + # save last input event needs to be merged with next InputEventMouseButton + _last_input_event = event + return self + + +func _reset_input_to_default() -> void: + # reset all mouse button to inital state if need + for m_button :int in _mouse_button_on_press.duplicate(): + if Input.is_mouse_button_pressed(m_button): + simulate_mouse_button_release(m_button) + _mouse_button_on_press.clear() + + for key_scancode :int in _key_on_press.duplicate(): + if Input.is_key_pressed(key_scancode): + simulate_key_release(key_scancode) + _key_on_press.clear() + + for action :String in _action_on_press.duplicate(): + if Input.is_action_pressed(action): + simulate_action_release(action) + _action_on_press.clear() + + Input.flush_buffered_events() + _last_input_event = null + + +func __print(message :String) -> void: + if _verbose: + prints(message) + + +func __print_current_focus() -> void: + if not _verbose: + return + var focused_node := scene().get_viewport().gui_get_focus_owner() + if focused_node: + prints(" focus checked %s" % focused_node) + else: + prints(" no focus set") + + +func scene() -> Node: + if is_instance_valid(_current_scene): + return _current_scene + if not _is_disposed: + push_error("The current scene instance is not valid anymore! check your test is valid. e.g. check for missing awaits.") + return null diff --git a/addons/gdUnit4/src/core/GdUnitScriptType.gd b/addons/gdUnit4/src/core/GdUnitScriptType.gd new file mode 100644 index 0000000..7e1be51 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitScriptType.gd @@ -0,0 +1,16 @@ +class_name GdUnitScriptType +extends RefCounted + +const UNKNOWN := "" +const CS := "cs" +const GD := "gd" + + +static func type_of(script :Script) -> String: + if script == null: + return UNKNOWN + if GdObjects.is_gd_script(script): + return GD + if GdObjects.is_cs_script(script): + return CS + return UNKNOWN diff --git a/addons/gdUnit4/src/core/GdUnitSettings.gd b/addons/gdUnit4/src/core/GdUnitSettings.gd new file mode 100644 index 0000000..cbb6abc --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitSettings.gd @@ -0,0 +1,378 @@ +@tool +class_name GdUnitSettings +extends RefCounted + + +const MAIN_CATEGORY = "gdunit4" +# Common Settings +const COMMON_SETTINGS = MAIN_CATEGORY + "/settings" + +const GROUP_COMMON = COMMON_SETTINGS + "/common" +const UPDATE_NOTIFICATION_ENABLED = GROUP_COMMON + "/update_notification_enabled" +const SERVER_TIMEOUT = GROUP_COMMON + "/server_connection_timeout_minutes" + +const GROUP_TEST = COMMON_SETTINGS + "/test" +const TEST_TIMEOUT = GROUP_TEST + "/test_timeout_seconds" +const TEST_LOOKUP_FOLDER = GROUP_TEST + "/test_lookup_folder" +const TEST_SITE_NAMING_CONVENTION = GROUP_TEST + "/test_suite_naming_convention" +const TEST_DISCOVER_ENABLED = GROUP_TEST + "/test_discovery" + + +# Report Setiings +const REPORT_SETTINGS = MAIN_CATEGORY + "/report" +const GROUP_GODOT = REPORT_SETTINGS + "/godot" +const REPORT_PUSH_ERRORS = GROUP_GODOT + "/push_error" +const REPORT_SCRIPT_ERRORS = GROUP_GODOT + "/script_error" +const REPORT_ORPHANS = REPORT_SETTINGS + "/verbose_orphans" +const GROUP_ASSERT = REPORT_SETTINGS + "/assert" +const REPORT_ASSERT_WARNINGS = GROUP_ASSERT + "/verbose_warnings" +const REPORT_ASSERT_ERRORS = GROUP_ASSERT + "/verbose_errors" +const REPORT_ASSERT_STRICT_NUMBER_TYPE_COMPARE = GROUP_ASSERT + "/strict_number_type_compare" + +# Godot debug stdout/logging settings +const CATEGORY_LOGGING := "debug/file_logging/" +const STDOUT_ENABLE_TO_FILE = CATEGORY_LOGGING + "enable_file_logging" +const STDOUT_WITE_TO_FILE = CATEGORY_LOGGING + "log_path" + + +# GdUnit Templates +const TEMPLATES = MAIN_CATEGORY + "/templates" +const TEMPLATES_TS = TEMPLATES + "/testsuite" +const TEMPLATE_TS_GD = TEMPLATES_TS + "/GDScript" +const TEMPLATE_TS_CS = TEMPLATES_TS + "/CSharpScript" + + +# UI Setiings +const UI_SETTINGS = MAIN_CATEGORY + "/ui" +const GROUP_UI_INSPECTOR = UI_SETTINGS + "/inspector" +const INSPECTOR_NODE_COLLAPSE = GROUP_UI_INSPECTOR + "/node_collapse" +const INSPECTOR_TREE_VIEW_MODE = GROUP_UI_INSPECTOR + "/tree_view_mode" +const INSPECTOR_TREE_SORT_MODE = GROUP_UI_INSPECTOR + "/tree_sort_mode" + + +# Shortcut Setiings +const SHORTCUT_SETTINGS = MAIN_CATEGORY + "/Shortcuts" +const GROUP_SHORTCUT_INSPECTOR = SHORTCUT_SETTINGS + "/inspector" +const SHORTCUT_INSPECTOR_RERUN_TEST = GROUP_SHORTCUT_INSPECTOR + "/rerun_test" +const SHORTCUT_INSPECTOR_RERUN_TEST_DEBUG = GROUP_SHORTCUT_INSPECTOR + "/rerun_test_debug" +const SHORTCUT_INSPECTOR_RUN_TEST_OVERALL = GROUP_SHORTCUT_INSPECTOR + "/run_test_overall" +const SHORTCUT_INSPECTOR_RUN_TEST_STOP = GROUP_SHORTCUT_INSPECTOR + "/run_test_stop" + +const GROUP_SHORTCUT_EDITOR = SHORTCUT_SETTINGS + "/editor" +const SHORTCUT_EDITOR_RUN_TEST = GROUP_SHORTCUT_EDITOR + "/run_test" +const SHORTCUT_EDITOR_RUN_TEST_DEBUG = GROUP_SHORTCUT_EDITOR + "/run_test_debug" +const SHORTCUT_EDITOR_CREATE_TEST = GROUP_SHORTCUT_EDITOR + "/create_test" + +const GROUP_SHORTCUT_FILESYSTEM = SHORTCUT_SETTINGS + "/filesystem" +const SHORTCUT_FILESYSTEM_RUN_TEST = GROUP_SHORTCUT_FILESYSTEM + "/run_test" +const SHORTCUT_FILESYSTEM_RUN_TEST_DEBUG = GROUP_SHORTCUT_FILESYSTEM + "/run_test_debug" + + +# Toolbar Setiings +const GROUP_UI_TOOLBAR = UI_SETTINGS + "/toolbar" +const INSPECTOR_TOOLBAR_BUTTON_RUN_OVERALL = GROUP_UI_TOOLBAR + "/run_overall" + +# defaults +# server connection timeout in minutes +const DEFAULT_SERVER_TIMEOUT :int = 30 +# test case runtime timeout in seconds +const DEFAULT_TEST_TIMEOUT :int = 60*5 +# the folder to create new test-suites +const DEFAULT_TEST_LOOKUP_FOLDER := "test" + +# help texts +const HELP_TEST_LOOKUP_FOLDER := "Sets the subfolder for the search/creation of test suites. (leave empty to use source folder)" + +enum NAMING_CONVENTIONS { + AUTO_DETECT, + SNAKE_CASE, + PASCAL_CASE, +} + + +static func setup() -> void: + create_property_if_need(UPDATE_NOTIFICATION_ENABLED, true, "Enables/Disables the update notification checked startup.") + create_property_if_need(SERVER_TIMEOUT, DEFAULT_SERVER_TIMEOUT, "Sets the server connection timeout in minutes.") + create_property_if_need(TEST_TIMEOUT, DEFAULT_TEST_TIMEOUT, "Sets the test case runtime timeout in seconds.") + create_property_if_need(TEST_LOOKUP_FOLDER, DEFAULT_TEST_LOOKUP_FOLDER, HELP_TEST_LOOKUP_FOLDER) + create_property_if_need(TEST_SITE_NAMING_CONVENTION, NAMING_CONVENTIONS.AUTO_DETECT, "Sets test-suite genrate script name convention.", NAMING_CONVENTIONS.keys()) + create_property_if_need(TEST_DISCOVER_ENABLED, false, "Enables/Disables the automatic detection of tests by finding tests in test lookup folders at runtime.") + create_property_if_need(REPORT_PUSH_ERRORS, false, "Enables/Disables report of push_error() as failure!") + create_property_if_need(REPORT_SCRIPT_ERRORS, true, "Enables/Disables report of script errors as failure!") + create_property_if_need(REPORT_ORPHANS, true, "Enables/Disables orphan reporting.") + create_property_if_need(REPORT_ASSERT_ERRORS, true, "Enables/Disables error reporting checked asserts.") + create_property_if_need(REPORT_ASSERT_WARNINGS, true, "Enables/Disables warning reporting checked asserts") + create_property_if_need(REPORT_ASSERT_STRICT_NUMBER_TYPE_COMPARE, true, "Enabled/disabled number values will be compared strictly by type. (real vs int)") + # inspector + create_property_if_need(INSPECTOR_NODE_COLLAPSE, true, + "Enables/Disables that the testsuite node is closed after a successful test run.") + create_property_if_need(INSPECTOR_TREE_VIEW_MODE, GdUnitInspectorTreeConstants.TREE_VIEW_MODE.TREE, + "Sets the inspector panel presentation.", GdUnitInspectorTreeConstants.TREE_VIEW_MODE.keys()) + create_property_if_need(INSPECTOR_TREE_SORT_MODE, GdUnitInspectorTreeConstants.SORT_MODE.UNSORTED, + "Sets the inspector panel presentation.", GdUnitInspectorTreeConstants.SORT_MODE.keys()) + create_property_if_need(INSPECTOR_TOOLBAR_BUTTON_RUN_OVERALL, false, + "Shows/Hides the 'Run overall Tests' button in the inspector toolbar.") + create_property_if_need(TEMPLATE_TS_GD, GdUnitTestSuiteTemplate.default_GD_template(), "Defines the test suite template") + create_shortcut_properties_if_need() + migrate_properties() + + +static func migrate_properties() -> void: + var TEST_ROOT_FOLDER := "gdunit4/settings/test/test_root_folder" + if get_property(TEST_ROOT_FOLDER) != null: + migrate_property(TEST_ROOT_FOLDER,\ + TEST_LOOKUP_FOLDER,\ + DEFAULT_TEST_LOOKUP_FOLDER,\ + HELP_TEST_LOOKUP_FOLDER,\ + func(value :Variant) -> String: return DEFAULT_TEST_LOOKUP_FOLDER if value == null else value) + + +static func create_shortcut_properties_if_need() -> void: + # inspector + create_property_if_need(SHORTCUT_INSPECTOR_RERUN_TEST, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.RERUN_TESTS), "Rerun of the last tests performed.") + create_property_if_need(SHORTCUT_INSPECTOR_RERUN_TEST_DEBUG, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG), "Rerun of the last tests performed (Debug).") + create_property_if_need(SHORTCUT_INSPECTOR_RUN_TEST_OVERALL, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL), "Runs all tests (Debug).") + create_property_if_need(SHORTCUT_INSPECTOR_RUN_TEST_STOP, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.STOP_TEST_RUN), "Stops the current test execution.") + # script editor + create_property_if_need(SHORTCUT_EDITOR_RUN_TEST, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.RUN_TESTCASE), "Runs the currently selected test.") + create_property_if_need(SHORTCUT_EDITOR_RUN_TEST_DEBUG, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.RUN_TESTCASE_DEBUG), "Runs the currently selected test (Debug).") + create_property_if_need(SHORTCUT_EDITOR_CREATE_TEST, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.CREATE_TEST), "Creates a new test case for the currently selected function.") + # filesystem + create_property_if_need(SHORTCUT_FILESYSTEM_RUN_TEST, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.NONE), "Runs all test suites on the selected folder or file.") + create_property_if_need(SHORTCUT_FILESYSTEM_RUN_TEST_DEBUG, GdUnitShortcut.default_keys(GdUnitShortcut.ShortCut.NONE), "Runs all test suites on the selected folder or file (Debug).") + + +static func create_property_if_need(name :String, default :Variant, help :="", value_set := PackedStringArray()) -> void: + if not ProjectSettings.has_setting(name): + #prints("GdUnit4: Set inital settings '%s' to '%s'." % [name, str(default)]) + ProjectSettings.set_setting(name, default) + + ProjectSettings.set_initial_value(name, default) + help += "" if value_set.is_empty() else " %s" % value_set + set_help(name, default, help) + + +static func set_help(property_name :String, value :Variant, help :String) -> void: + ProjectSettings.add_property_info({ + "name": property_name, + "type": typeof(value), + "hint": PROPERTY_HINT_TYPE_STRING, + "hint_string": help + }) + + +static func get_setting(name :String, default :Variant) -> Variant: + if ProjectSettings.has_setting(name): + return ProjectSettings.get_setting(name) + return default + + +static func is_update_notification_enabled() -> bool: + if ProjectSettings.has_setting(UPDATE_NOTIFICATION_ENABLED): + return ProjectSettings.get_setting(UPDATE_NOTIFICATION_ENABLED) + return false + + +static func set_update_notification(enable :bool) -> void: + ProjectSettings.set_setting(UPDATE_NOTIFICATION_ENABLED, enable) + ProjectSettings.save() + + +static func get_log_path() -> String: + return ProjectSettings.get_setting(STDOUT_WITE_TO_FILE) + + +static func set_log_path(path :String) -> void: + ProjectSettings.set_setting(STDOUT_ENABLE_TO_FILE, true) + ProjectSettings.set_setting(STDOUT_WITE_TO_FILE, path) + ProjectSettings.save() + + +static func set_inspector_tree_sort_mode(sort_mode: GdUnitInspectorTreeConstants.SORT_MODE) -> void: + var property := get_property(INSPECTOR_TREE_SORT_MODE) + property.set_value(sort_mode) + update_property(property) + + +static func get_inspector_tree_sort_mode() -> GdUnitInspectorTreeConstants.SORT_MODE: + var property := get_property(INSPECTOR_TREE_SORT_MODE) + return property.value() if property != null else GdUnitInspectorTreeConstants.SORT_MODE.UNSORTED + + +static func set_inspector_tree_view_mode(tree_view_mode: GdUnitInspectorTreeConstants.TREE_VIEW_MODE) -> void: + var property := get_property(INSPECTOR_TREE_VIEW_MODE) + property.set_value(tree_view_mode) + update_property(property) + + +static func get_inspector_tree_view_mode() -> GdUnitInspectorTreeConstants.TREE_VIEW_MODE: + var property := get_property(INSPECTOR_TREE_VIEW_MODE) + return property.value() if property != null else GdUnitInspectorTreeConstants.TREE_VIEW_MODE.TREE + + +# the configured server connection timeout in ms +static func server_timeout() -> int: + return get_setting(SERVER_TIMEOUT, DEFAULT_SERVER_TIMEOUT) * 60 * 1000 + + +# the configured test case timeout in ms +static func test_timeout() -> int: + return get_setting(TEST_TIMEOUT, DEFAULT_TEST_TIMEOUT) * 1000 + + +# the root folder to store/generate test-suites +static func test_root_folder() -> String: + return get_setting(TEST_LOOKUP_FOLDER, DEFAULT_TEST_LOOKUP_FOLDER) + + +static func is_verbose_assert_warnings() -> bool: + return get_setting(REPORT_ASSERT_WARNINGS, true) + + +static func is_verbose_assert_errors() -> bool: + return get_setting(REPORT_ASSERT_ERRORS, true) + + +static func is_verbose_orphans() -> bool: + return get_setting(REPORT_ORPHANS, true) + + +static func is_strict_number_type_compare() -> bool: + return get_setting(REPORT_ASSERT_STRICT_NUMBER_TYPE_COMPARE, true) + + +static func is_report_push_errors() -> bool: + return get_setting(REPORT_PUSH_ERRORS, false) + + +static func is_report_script_errors() -> bool: + return get_setting(REPORT_SCRIPT_ERRORS, true) + + +static func is_inspector_node_collapse() -> bool: + return get_setting(INSPECTOR_NODE_COLLAPSE, true) + + +static func is_inspector_toolbar_button_show() -> bool: + return get_setting(INSPECTOR_TOOLBAR_BUTTON_RUN_OVERALL, true) + + +static func is_test_discover_enabled() -> bool: + return get_setting(TEST_DISCOVER_ENABLED, false) + + +static func set_test_discover_enabled(enable :bool) -> void: + var property := get_property(TEST_DISCOVER_ENABLED) + property.set_value(enable) + update_property(property) + + +static func is_log_enabled() -> bool: + return ProjectSettings.get_setting(STDOUT_ENABLE_TO_FILE) + + +static func list_settings(category :String) -> Array[GdUnitProperty]: + var settings :Array[GdUnitProperty] = [] + for property in ProjectSettings.get_property_list(): + var property_name :String = property["name"] + if property_name.begins_with(category): + var value :Variant = ProjectSettings.get_setting(property_name) + var default :Variant = ProjectSettings.property_get_revert(property_name) + var help :String = property["hint_string"] + var value_set := extract_value_set_from_help(help) + settings.append(GdUnitProperty.new(property_name, property["type"], value, default, help, value_set)) + return settings + + +static func extract_value_set_from_help(value :String) -> PackedStringArray: + var regex := RegEx.new() + regex.compile("\\[(.+)\\]") + var matches := regex.search_all(value) + if matches.is_empty(): + return PackedStringArray() + var values :String = matches[0].get_string(1) + return values.replacen(" ", "").replacen("\"", "").split(",", false) + + +static func update_property(property :GdUnitProperty) -> Variant: + var current_value :Variant = ProjectSettings.get_setting(property.name()) + if current_value != property.value(): + var error :Variant = validate_property_value(property) + if error != null: + return error + ProjectSettings.set_setting(property.name(), property.value()) + GdUnitSignals.instance().gdunit_settings_changed.emit(property) + _save_settings() + return null + + +static func reset_property(property :GdUnitProperty) -> void: + ProjectSettings.set_setting(property.name(), property.default()) + GdUnitSignals.instance().gdunit_settings_changed.emit(property) + _save_settings() + + +static func validate_property_value(property :GdUnitProperty) -> Variant: + match property.name(): + TEST_LOOKUP_FOLDER: + return validate_lookup_folder(property.value()) + _: return null + + +static func validate_lookup_folder(value :String) -> Variant: + if value.is_empty() or value == "/": + return null + if value.contains("res:"): + return "Test Lookup Folder: do not allowed to contains 'res://'" + if not value.is_valid_filename(): + return "Test Lookup Folder: contains invalid characters! e.g (: / \\ ? * \" | % < >)" + return null + + +static func save_property(name :String, value :Variant) -> void: + ProjectSettings.set_setting(name, value) + _save_settings() + + +static func _save_settings() -> void: + var err := ProjectSettings.save() + if err != OK: + push_error("Save GdUnit4 settings failed : %s" % error_string(err)) + return + + +static func has_property(name :String) -> bool: + return ProjectSettings.get_property_list().any(func(property :Dictionary) -> bool: return property["name"] == name) + + +static func get_property(name :String) -> GdUnitProperty: + for property in ProjectSettings.get_property_list(): + var property_name :String = property["name"] + if property_name == name: + var value :Variant = ProjectSettings.get_setting(property_name) + var default :Variant = ProjectSettings.property_get_revert(property_name) + var help :String = property["hint_string"] + var value_set := extract_value_set_from_help(help) + return GdUnitProperty.new(property_name, property["type"], value, default, help, value_set) + return null + + +static func migrate_property(old_property :String, new_property :String, default_value :Variant, help :String, converter := Callable()) -> void: + var property := get_property(old_property) + if property == null: + prints("Migration not possible, property '%s' not found" % old_property) + return + var value :Variant = converter.call(property.value()) if converter.is_valid() else property.value() + ProjectSettings.set_setting(new_property, value) + ProjectSettings.set_initial_value(new_property, default_value) + set_help(new_property, value, help) + ProjectSettings.clear(old_property) + prints("Succesfull migrated property '%s' -> '%s' value: %s" % [old_property, new_property, value]) + + +static func dump_to_tmp() -> void: + ProjectSettings.save_custom("user://project_settings.godot") + + +static func restore_dump_from_tmp() -> void: + DirAccess.copy_absolute("user://project_settings.godot", "res://project.godot") diff --git a/addons/gdUnit4/src/core/GdUnitSignalAwaiter.gd b/addons/gdUnit4/src/core/GdUnitSignalAwaiter.gd new file mode 100644 index 0000000..b2bb834 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitSignalAwaiter.gd @@ -0,0 +1,76 @@ +class_name GdUnitSignalAwaiter +extends RefCounted + +signal signal_emitted(action :Variant) + +const NO_ARG :Variant = GdUnitConstants.NO_ARG + +var _wait_on_idle_frame := false +var _interrupted := false +var _time_left :float = 0 +var _timeout_millis :int + + +func _init(timeout_millis :int, wait_on_idle_frame := false) -> void: + _timeout_millis = timeout_millis + _wait_on_idle_frame = wait_on_idle_frame + + +func _on_signal_emmited( + arg0 :Variant = NO_ARG, + arg1 :Variant = NO_ARG, + arg2 :Variant = NO_ARG, + arg3 :Variant = NO_ARG, + arg4 :Variant = NO_ARG, + arg5 :Variant = NO_ARG, + arg6 :Variant = NO_ARG, + arg7 :Variant = NO_ARG, + arg8 :Variant = NO_ARG, + arg9 :Variant = NO_ARG) -> void: + var signal_args :Variant = GdArrayTools.filter_value([arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9], NO_ARG) + signal_emitted.emit(signal_args) + + +func is_interrupted() -> bool: + return _interrupted + + +func elapsed_time() -> float: + return _time_left + + +func on_signal(source :Object, signal_name :String, expected_signal_args :Array) -> Variant: + # register checked signal to wait for + source.connect(signal_name, _on_signal_emmited) + # install timeout timer + var timer := Timer.new() + Engine.get_main_loop().root.add_child(timer) + timer.add_to_group("GdUnitTimers") + timer.set_one_shot(true) + timer.timeout.connect(_do_interrupt, CONNECT_DEFERRED) + timer.start(_timeout_millis * 0.001 * Engine.get_time_scale()) + + # holds the emited value + var value :Variant + # wait for signal is emitted or a timeout is happen + while true: + value = await signal_emitted + if _interrupted: + break + if not (value is Array): + value = [value] + if expected_signal_args.size() == 0 or GdObjects.equals(value, expected_signal_args): + break + await Engine.get_main_loop().process_frame + + source.disconnect(signal_name, _on_signal_emmited) + _time_left = timer.time_left + await Engine.get_main_loop().process_frame + if value is Array and value.size() == 1: + return value[0] + return value + + +func _do_interrupt() -> void: + _interrupted = true + signal_emitted.emit(null) diff --git a/addons/gdUnit4/src/core/GdUnitSignalCollector.gd b/addons/gdUnit4/src/core/GdUnitSignalCollector.gd new file mode 100644 index 0000000..12e22b0 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitSignalCollector.gd @@ -0,0 +1,115 @@ +# It connects to all signals of given emitter and collects received signals and arguments +# The collected signals are cleand finally when the emitter is freed. +class_name GdUnitSignalCollector +extends RefCounted + +const NO_ARG :Variant = GdUnitConstants.NO_ARG +const SIGNAL_BLACK_LIST = []#["tree_exiting", "tree_exited", "child_exiting_tree"] + +# { +# emitter : { +# signal_name : [signal_args], +# ... +# } +# } +var _collected_signals :Dictionary = {} + + +func clear() -> void: + for emitter :Object in _collected_signals.keys(): + if is_instance_valid(emitter): + unregister_emitter(emitter) + + +# connect to all possible signals defined by the emitter +# prepares the signal collection to store received signals and arguments +func register_emitter(emitter :Object) -> void: + if is_instance_valid(emitter): + # check emitter is already registerd + if _collected_signals.has(emitter): + return + _collected_signals[emitter] = Dictionary() + # connect to 'tree_exiting' of the emitter to finally release all acquired resources/connections. + if emitter is Node and !emitter.tree_exiting.is_connected(unregister_emitter): + emitter.tree_exiting.connect(unregister_emitter.bind(emitter)) + # connect to all signals of the emitter we want to collect + for signal_def in emitter.get_signal_list(): + var signal_name :String = signal_def["name"] + # set inital collected to empty + if not is_signal_collecting(emitter, signal_name): + _collected_signals[emitter][signal_name] = Array() + if SIGNAL_BLACK_LIST.find(signal_name) != -1: + continue + if !emitter.is_connected(signal_name, _on_signal_emmited): + var err := emitter.connect(signal_name, _on_signal_emmited.bind(emitter, signal_name)) + if err != OK: + push_error("Can't connect to signal %s on %s. Error: %s" % [signal_name, emitter, error_string(err)]) + + +# unregister all acquired resources/connections, otherwise it ends up in orphans +# is called when the emitter is removed from the parent +func unregister_emitter(emitter :Object) -> void: + if is_instance_valid(emitter): + for signal_def in emitter.get_signal_list(): + var signal_name :String = signal_def["name"] + if emitter.is_connected(signal_name, _on_signal_emmited): + emitter.disconnect(signal_name, _on_signal_emmited.bind(emitter, signal_name)) + _collected_signals.erase(emitter) + + +# receives the signal from the emitter with all emitted signal arguments and additional the emitter and signal_name as last two arguements +func _on_signal_emmited( + arg0 :Variant= NO_ARG, + arg1 :Variant= NO_ARG, + arg2 :Variant= NO_ARG, + arg3 :Variant= NO_ARG, + arg4 :Variant= NO_ARG, + arg5 :Variant= NO_ARG, + arg6 :Variant= NO_ARG, + arg7 :Variant= NO_ARG, + arg8 :Variant= NO_ARG, + arg9 :Variant= NO_ARG, + arg10 :Variant= NO_ARG, + arg11 :Variant= NO_ARG) -> void: + var signal_args :Array = GdArrayTools.filter_value([arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11], NO_ARG) + # extract the emitter and signal_name from the last two arguments (see line 61 where is added) + var signal_name :String = signal_args.pop_back() + var emitter :Object = signal_args.pop_back() + #prints("_on_signal_emmited:", emitter, signal_name, signal_args) + if is_signal_collecting(emitter, signal_name): + _collected_signals[emitter][signal_name].append(signal_args) + + +func reset_received_signals(emitter :Object, signal_name: String, signal_args :Array) -> void: + #_debug_signal_list("before claer"); + if _collected_signals.has(emitter): + var signals_by_emitter :Dictionary = _collected_signals[emitter] + if signals_by_emitter.has(signal_name): + _collected_signals[emitter][signal_name].erase(signal_args) + #_debug_signal_list("after claer"); + + +func is_signal_collecting(emitter :Object, signal_name :String) -> bool: + return _collected_signals.has(emitter) and _collected_signals[emitter].has(signal_name) + + +func match(emitter :Object, signal_name :String, args :Array) -> bool: + #prints("match", signal_name, _collected_signals[emitter][signal_name]); + if _collected_signals.is_empty() or not _collected_signals.has(emitter): + return false + for received_args :Variant in _collected_signals[emitter][signal_name]: + #prints("testing", signal_name, received_args, "vs", args) + if GdObjects.equals(received_args, args): + return true + return false + + +func _debug_signal_list(message :String) -> void: + prints("-----", message, "-------") + prints("senders {") + for emitter :Object in _collected_signals: + prints("\t", emitter) + for signal_name :String in _collected_signals[emitter]: + var args :Variant = _collected_signals[emitter][signal_name] + prints("\t\t", signal_name, args) + prints("}") diff --git a/addons/gdUnit4/src/core/GdUnitSignals.gd b/addons/gdUnit4/src/core/GdUnitSignals.gd new file mode 100644 index 0000000..a21c795 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitSignals.gd @@ -0,0 +1,36 @@ +class_name GdUnitSignals +extends RefCounted + +signal gdunit_client_connected(client_id :int) +signal gdunit_client_disconnected(client_id :int) +signal gdunit_client_terminated() + +signal gdunit_event(event :GdUnitEvent) +signal gdunit_event_debug(event :GdUnitEvent) +signal gdunit_add_test_suite(test_suite :GdUnitTestSuiteDto) +signal gdunit_message(message :String) +signal gdunit_report(execution_context_id :int, report :GdUnitReport) +signal gdunit_set_test_failed(is_failed :bool) + +signal gdunit_settings_changed(property :GdUnitProperty) + +const META_KEY := "GdUnitSignals" + + +static func instance() -> GdUnitSignals: + if Engine.has_meta(META_KEY): + return Engine.get_meta(META_KEY) + var instance_ := GdUnitSignals.new() + Engine.set_meta(META_KEY, instance_) + return instance_ + + +static func dispose() -> void: + var signals := instance() + # cleanup connected signals + for signal_ in signals.get_signal_list(): + for connection in signals.get_signal_connection_list(signal_["name"]): + connection["signal"].disconnect(connection["callable"]) + Engine.remove_meta(META_KEY) + while signals.get_reference_count() > 0: + signals.unreference() diff --git a/addons/gdUnit4/src/core/GdUnitSingleton.gd b/addons/gdUnit4/src/core/GdUnitSingleton.gd new file mode 100644 index 0000000..fc63b48 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitSingleton.gd @@ -0,0 +1,53 @@ +################################################################################ +# Provides access to a global accessible singleton +# +# This is a workarount to the existing auto load singleton because of some bugs +# around plugin handling +################################################################################ +class_name GdUnitSingleton +extends Object + + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") +const MEATA_KEY := "GdUnitSingletons" + + +static func instance(name :String, clazz :Callable) -> Variant: + if Engine.has_meta(name): + return Engine.get_meta(name) + var singleton :Variant = clazz.call() + if is_instance_of(singleton, RefCounted): + push_error("Invalid singleton implementation detected for '%s' is `%s`!" % [name, singleton.get_class()]) + return + + Engine.set_meta(name, singleton) + GdUnitTools.prints_verbose("Register singleton '%s:%s'" % [name, singleton]) + var singletons :PackedStringArray = Engine.get_meta(MEATA_KEY, PackedStringArray()) + singletons.append(name) + Engine.set_meta(MEATA_KEY, singletons) + return singleton + + +static func unregister(p_singleton :String) -> void: + var singletons :PackedStringArray = Engine.get_meta(MEATA_KEY, PackedStringArray()) + if singletons.has(p_singleton): + GdUnitTools.prints_verbose("\n Unregister singleton '%s'" % p_singleton); + var index := singletons.find(p_singleton) + singletons.remove_at(index) + var instance_ :Object = Engine.get_meta(p_singleton) + GdUnitTools.prints_verbose(" Free singleton instance '%s:%s'" % [p_singleton, instance_]) + GdUnitTools.free_instance(instance_) + Engine.remove_meta(p_singleton) + GdUnitTools.prints_verbose(" Successfully freed '%s'" % p_singleton) + Engine.set_meta(MEATA_KEY, singletons) + + +static func dispose() -> void: + # use a copy because unregister is modify the singletons array + var singletons := PackedStringArray(Engine.get_meta(MEATA_KEY, PackedStringArray())) + GdUnitTools.prints_verbose("----------------------------------------------------------------") + GdUnitTools.prints_verbose("Cleanup singletons %s" % singletons) + for singleton in singletons: + unregister(singleton) + Engine.remove_meta(MEATA_KEY) + GdUnitTools.prints_verbose("----------------------------------------------------------------") diff --git a/addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd b/addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd new file mode 100644 index 0000000..6cd2ee4 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd @@ -0,0 +1,18 @@ +class_name GdUnitTestSuiteBuilder +extends RefCounted + + +static func create(source :Script, line_number :int) -> GdUnitResult: + var test_suite_path := GdUnitTestSuiteScanner.resolve_test_suite_path(source.resource_path, GdUnitSettings.test_root_folder()) + # we need to save and close the testsuite and source if is current opened before modify + ScriptEditorControls.save_an_open_script(source.resource_path) + ScriptEditorControls.save_an_open_script(test_suite_path, true) + if GdObjects.is_cs_script(source): + return GdUnit4CSharpApiLoader.create_test_suite(source.resource_path, line_number+1, test_suite_path) + var parser := GdScriptParser.new() + var lines := source.source_code.split("\n") + var current_line := lines[line_number] + var func_name := parser.parse_func_name(current_line) + if func_name.is_empty(): + return GdUnitResult.error("No function found at line: %d." % line_number) + return GdUnitTestSuiteScanner.create_test_case(test_suite_path, func_name, source.resource_path) diff --git a/addons/gdUnit4/src/core/GdUnitTestSuiteScanner.gd b/addons/gdUnit4/src/core/GdUnitTestSuiteScanner.gd new file mode 100644 index 0000000..0f88209 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitTestSuiteScanner.gd @@ -0,0 +1,368 @@ +class_name GdUnitTestSuiteScanner +extends RefCounted + +const TEST_FUNC_TEMPLATE =""" + +func test_${func_name}() -> void: + # remove this line and complete your test + assert_not_yet_implemented() +""" + + +# we exclude the gdunit source directorys by default +const exclude_scan_directories = [ + "res://addons/gdUnit4/bin", + "res://addons/gdUnit4/src", + "res://reports"] + + +var _script_parser := GdScriptParser.new() +var _included_resources :PackedStringArray = [] +var _excluded_resources :PackedStringArray = [] +var _expression_runner := GdUnitExpressionRunner.new() +var _regex_extends_clazz_name := RegEx.create_from_string("extends[\\s]+([\\S]+)") + + +func prescan_testsuite_classes() -> void: + # scan and cache extends GdUnitTestSuite by class name an resource paths + var script_classes :Array[Dictionary] = ProjectSettings.get_global_class_list() + for script_meta in script_classes: + var base_class :String = script_meta["base"] + var resource_path :String = script_meta["path"] + if base_class == "GdUnitTestSuite": + _included_resources.append(resource_path) + elif ClassDB.class_exists(base_class): + _excluded_resources.append(resource_path) + + +func scan(resource_path :String) -> Array[Node]: + prescan_testsuite_classes() + # if single testsuite requested + if FileAccess.file_exists(resource_path): + var test_suite := _parse_is_test_suite(resource_path) + if test_suite != null: + return [test_suite] + return [] as Array[Node] + var base_dir := DirAccess.open(resource_path) + if base_dir == null: + prints("Given directory or file does not exists:", resource_path) + return [] + return _scan_test_suites(base_dir, []) + + +func _scan_test_suites(dir :DirAccess, collected_suites :Array[Node]) -> Array[Node]: + if exclude_scan_directories.has(dir.get_current_dir()): + return collected_suites + prints("Scanning for test suites in:", dir.get_current_dir()) + dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547 + var file_name := dir.get_next() + while file_name != "": + var resource_path := GdUnitTestSuiteScanner._file(dir, file_name) + if dir.current_is_dir(): + var sub_dir := DirAccess.open(resource_path) + if sub_dir != null: + _scan_test_suites(sub_dir, collected_suites) + else: + var time := LocalTime.now() + var test_suite := _parse_is_test_suite(resource_path) + if test_suite: + collected_suites.append(test_suite) + if OS.is_stdout_verbose() and time.elapsed_since_ms() > 300: + push_warning("Scanning of test-suite '%s' took more than 300ms: " % resource_path, time.elapsed_since()) + file_name = dir.get_next() + return collected_suites + + +static func _file(dir :DirAccess, file_name :String) -> String: + var current_dir := dir.get_current_dir() + if current_dir.ends_with("/"): + return current_dir + file_name + return current_dir + "/" + file_name + + +func _parse_is_test_suite(resource_path :String) -> Node: + if not GdUnitTestSuiteScanner._is_script_format_supported(resource_path): + return null + if GdUnit4CSharpApiLoader.is_test_suite(resource_path): + return GdUnit4CSharpApiLoader.parse_test_suite(resource_path) + + # We use the global cache to fast scan for test suites. + if _excluded_resources.has(resource_path): + return null + # Check in the global class cache whether the GdUnitTestSuite class has been extended. + if _included_resources.has(resource_path): + return _parse_test_suite(ResourceLoader.load(resource_path)) + + # Otherwise we need to scan manual, we need to exclude classes where direct extends form Godot classes + # the resource loader can fail to load e.g. plugin classes with do preload other scripts + var extends_from := get_extends_classname(resource_path) + # If not extends is defined or extends from a Godot class + if extends_from.is_empty() or ClassDB.class_exists(extends_from): + return null + # Finally, we need to load the class to determine it is a test suite + var script := ResourceLoader.load(resource_path) + if not GdObjects.is_test_suite(script): + return null + return _parse_test_suite(ResourceLoader.load(resource_path)) + + +static func _is_script_format_supported(resource_path :String) -> bool: + var ext := resource_path.get_extension() + if ext == "gd": + return true + return GdUnit4CSharpApiLoader.is_csharp_file(resource_path) + + +func _parse_test_suite(script :GDScript) -> GdUnitTestSuite: + if not GdObjects.is_test_suite(script): + return null + + var test_suite :GdUnitTestSuite = script.new() + test_suite.set_name(GdUnitTestSuiteScanner.parse_test_suite_name(script)) + # add test cases to test suite and parse test case line nummber + var test_case_names := _extract_test_case_names(script) + _parse_and_add_test_cases(test_suite, script, test_case_names) + # not all test case parsed? + # we have to scan the base class to + if not test_case_names.is_empty(): + var base_script :GDScript = test_suite.get_script().get_base_script() + while base_script is GDScript: + # do not parse testsuite itself + if base_script.resource_path.find("GdUnitTestSuite") == -1: + _parse_and_add_test_cases(test_suite, base_script, test_case_names) + base_script = base_script.get_base_script() + return test_suite + + +func _extract_test_case_names(script :GDScript) -> PackedStringArray: + var names := PackedStringArray() + for method in script.get_script_method_list(): + var funcName :String = method["name"] + if funcName.begins_with("test"): + names.append(funcName) + return names + + +static func parse_test_suite_name(script :Script) -> String: + return script.resource_path.get_file().replace(".gd", "") + + +func _handle_test_suite_arguments(test_suite :Node, script :GDScript, fd :GdFunctionDescriptor) -> void: + for arg in fd.args(): + match arg.name(): + _TestCase.ARGUMENT_SKIP: + var result :Variant = _expression_runner.execute(script, arg.value_as_string()) + if result is bool: + test_suite.__is_skipped = result + else: + push_error("Test expression '%s' cannot be evaluated because it is not of type bool!" % arg.value_as_string()) + _TestCase.ARGUMENT_SKIP_REASON: + test_suite.__skip_reason = arg.value_as_string() + _: + push_error("Unsuported argument `%s` found on before() at '%s'!" % [arg.name(), script.resource_path]) + + +func _handle_test_case_arguments(test_suite :Node, script :GDScript, fd :GdFunctionDescriptor) -> void: + var timeout := _TestCase.DEFAULT_TIMEOUT + var iterations := Fuzzer.ITERATION_DEFAULT_COUNT + var seed_value := -1 + var is_skipped := false + var skip_reason := "Unknown." + var fuzzers :Array[GdFunctionArgument] = [] + var test := _TestCase.new() + + for arg in fd.args(): + # verify argument is allowed + # is test using fuzzers? + if arg.type() == GdObjects.TYPE_FUZZER: + fuzzers.append(arg) + elif arg.has_default(): + match arg.name(): + _TestCase.ARGUMENT_TIMEOUT: + timeout = arg.default() + _TestCase.ARGUMENT_SKIP: + var result :Variant = _expression_runner.execute(script, arg.value_as_string()) + if result is bool: + is_skipped = result + else: + push_error("Test expression '%s' cannot be evaluated because it is not of type bool!" % arg.value_as_string()) + _TestCase.ARGUMENT_SKIP_REASON: + skip_reason = arg.value_as_string() + Fuzzer.ARGUMENT_ITERATIONS: + iterations = arg.default() + Fuzzer.ARGUMENT_SEED: + seed_value = arg.default() + # create new test + test.configure(fd.name(), fd.line_number(), script.resource_path, timeout, fuzzers, iterations, seed_value) + test.set_function_descriptor(fd) + test.skip(is_skipped, skip_reason) + _validate_argument(fd, test) + test_suite.add_child(test) + + +func _parse_and_add_test_cases(test_suite :Node, script :GDScript, test_case_names :PackedStringArray) -> void: + var test_cases_to_find := Array(test_case_names) + var functions_to_scan := test_case_names.duplicate() + functions_to_scan.append("before") + var source := _script_parser.load_source_code(script, [script.resource_path]) + var function_descriptors := _script_parser.parse_functions(source, "", [script.resource_path], functions_to_scan) + for fd in function_descriptors: + if fd.name() == "before": + _handle_test_suite_arguments(test_suite, script, fd) + if test_cases_to_find.has(fd.name()): + _handle_test_case_arguments(test_suite, script, fd) + + +const TEST_CASE_ARGUMENTS = [_TestCase.ARGUMENT_TIMEOUT, _TestCase.ARGUMENT_SKIP, _TestCase.ARGUMENT_SKIP_REASON, Fuzzer.ARGUMENT_ITERATIONS, Fuzzer.ARGUMENT_SEED] + +func _validate_argument(fd :GdFunctionDescriptor, test_case :_TestCase) -> void: + if fd.is_parameterized(): + return + for argument in fd.args(): + if argument.type() == GdObjects.TYPE_FUZZER or argument.name() in TEST_CASE_ARGUMENTS: + continue + test_case.skip(true, "Unknown test case argument '%s' found." % argument.name()) + + +# converts given file name by configured naming convention +static func _to_naming_convention(file_name :String) -> String: + var nc :int = GdUnitSettings.get_setting(GdUnitSettings.TEST_SITE_NAMING_CONVENTION, 0) + match nc: + GdUnitSettings.NAMING_CONVENTIONS.AUTO_DETECT: + if GdObjects.is_snake_case(file_name): + return GdObjects.to_snake_case(file_name + "Test") + return GdObjects.to_pascal_case(file_name + "Test") + GdUnitSettings.NAMING_CONVENTIONS.SNAKE_CASE: + return GdObjects.to_snake_case(file_name + "Test") + GdUnitSettings.NAMING_CONVENTIONS.PASCAL_CASE: + return GdObjects.to_pascal_case(file_name + "Test") + push_error("Unexpected case") + return "--" + + +static func resolve_test_suite_path(source_script_path :String, test_root_folder :String = "test") -> String: + var file_name := source_script_path.get_basename().get_file() + var suite_name := _to_naming_convention(file_name) + if test_root_folder.is_empty() or test_root_folder == "/": + return source_script_path.replace(file_name, suite_name) + + # is user tmp + if source_script_path.begins_with("user://tmp"): + return normalize_path(source_script_path.replace("user://tmp", "user://tmp/" + test_root_folder)).replace(file_name, suite_name) + + # at first look up is the script under a "src" folder located + var test_suite_path :String + var src_folder := source_script_path.find("/src/") + if src_folder != -1: + test_suite_path = source_script_path.replace("/src/", "/"+test_root_folder+"/") + else: + var paths := source_script_path.split("/", false) + # is a plugin script? + if paths[1] == "addons": + test_suite_path = "%s//addons/%s/%s" % [paths[0], paths[2], test_root_folder] + # rebuild plugin path + for index in range(3, paths.size()): + test_suite_path += "/" + paths[index] + else: + test_suite_path = paths[0] + "//" + test_root_folder + for index in range(1, paths.size()): + test_suite_path += "/" + paths[index] + return normalize_path(test_suite_path).replace(file_name, suite_name) + + +static func normalize_path(path :String) -> String: + return path.replace("///", "/") + + +static func create_test_suite(test_suite_path :String, source_path :String) -> GdUnitResult: + # create directory if not exists + if not DirAccess.dir_exists_absolute(test_suite_path.get_base_dir()): + var error_ := DirAccess.make_dir_recursive_absolute(test_suite_path.get_base_dir()) + if error_ != OK: + return GdUnitResult.error("Can't create directoy at: %s. Error code %s" % [test_suite_path.get_base_dir(), error_]) + var script := GDScript.new() + script.source_code = GdUnitTestSuiteTemplate.build_template(source_path) + var error := ResourceSaver.save(script, test_suite_path) + if error != OK: + return GdUnitResult.error("Can't create test suite at: %s. Error code %s" % [test_suite_path, error]) + return GdUnitResult.success(test_suite_path) + + +static func get_test_case_line_number(resource_path :String, func_name :String) -> int: + var file := FileAccess.open(resource_path, FileAccess.READ) + if file != null: + var script_parser := GdScriptParser.new() + var line_number := 0 + while not file.eof_reached(): + var row := GdScriptParser.clean_up_row(file.get_line()) + line_number += 1 + # ignore comments and empty lines and not test functions + if row.begins_with("#") || row.length() == 0 || row.find("functest") == -1: + continue + # abort if test case name found + if script_parser.parse_func_name(row) == "test_" + func_name: + return line_number + return -1 + + +func get_extends_classname(resource_path :String) -> String: + var file := FileAccess.open(resource_path, FileAccess.READ) + if file != null: + while not file.eof_reached(): + var row := file.get_line() + # skip comments and empty lines + if row.begins_with("#") || row.length() == 0: + continue + # Stop at first function + if row.contains("func"): + return "" + var result := _regex_extends_clazz_name.search(row) + if result != null: + return result.get_string(1) + return "" + + +static func add_test_case(resource_path :String, func_name :String) -> GdUnitResult: + var script := load(resource_path) as GDScript + # count all exiting lines and add two as space to add new test case + var line_number := count_lines(script) + 2 + var func_body := TEST_FUNC_TEMPLATE.replace("${func_name}", func_name) + if Engine.is_editor_hint(): + var settings := EditorInterface.get_editor_settings() + var ident_type :int = settings.get_setting("text_editor/behavior/indent/type") + var ident_size :int = settings.get_setting("text_editor/behavior/indent/size") + if ident_type == 1: + func_body = func_body.replace(" ", "".lpad(ident_size, " ")) + script.source_code += func_body + var error := ResourceSaver.save(script, resource_path) + if error != OK: + return GdUnitResult.error("Can't add test case at: %s to '%s'. Error code %s" % [func_name, resource_path, error]) + return GdUnitResult.success({ "path" : resource_path, "line" : line_number}) + + +static func count_lines(script : GDScript) -> int: + return script.source_code.split("\n").size() + + +static func test_suite_exists(test_suite_path :String) -> bool: + return FileAccess.file_exists(test_suite_path) + +static func test_case_exists(test_suite_path :String, func_name :String) -> bool: + if not test_suite_exists(test_suite_path): + return false + var script := ResourceLoader.load(test_suite_path) as GDScript + for f in script.get_script_method_list(): + if f["name"] == "test_" + func_name: + return true + return false + +static func create_test_case(test_suite_path :String, func_name :String, source_script_path :String) -> GdUnitResult: + if test_case_exists(test_suite_path, func_name): + var line_number := get_test_case_line_number(test_suite_path, func_name) + return GdUnitResult.success({ "path" : test_suite_path, "line" : line_number}) + + if not test_suite_exists(test_suite_path): + var result := create_test_suite(test_suite_path, source_script_path) + if result.is_error(): + return result + return add_test_case(test_suite_path, func_name) diff --git a/addons/gdUnit4/src/core/GdUnitTools.gd b/addons/gdUnit4/src/core/GdUnitTools.gd new file mode 100644 index 0000000..a9bba12 --- /dev/null +++ b/addons/gdUnit4/src/core/GdUnitTools.gd @@ -0,0 +1,115 @@ +extends RefCounted + + +static var _richtext_normalize: RegEx + + +static func normalize_text(text :String) -> String: + return text.replace("\r", ""); + + +static func richtext_normalize(input :String) -> String: + if _richtext_normalize == null: + _richtext_normalize = to_regex("\\[/?(b|color|bgcolor|right|table|cell).*?\\]") + return _richtext_normalize.sub(input, "", true).replace("\r", "") + + +static func to_regex(pattern :String) -> RegEx: + var regex := RegEx.new() + var err := regex.compile(pattern) + if err != OK: + push_error("Can't compiling regx '%s'.\n ERROR: %s" % [pattern, error_string(err)]) + return regex + + +static func prints_verbose(message :String) -> void: + if OS.is_stdout_verbose(): + prints(message) + + +static func free_instance(instance :Variant, is_stdout_verbose :=false) -> bool: + if instance is Array: + for element :Variant in instance: + free_instance(element) + instance.clear() + return true + # do not free an already freed instance + if not is_instance_valid(instance): + return false + # do not free a class refernece + if typeof(instance) == TYPE_OBJECT and (instance as Object).is_class("GDScriptNativeClass"): + return false + if is_stdout_verbose: + print_verbose("GdUnit4:gc():free instance ", instance) + release_double(instance) + if instance is RefCounted: + instance.notification(Object.NOTIFICATION_PREDELETE) + return true + else: + # is instance already freed? + #if not is_instance_valid(instance) or ClassDB.class_get_property(instance, "new"): + # return false + #release_connections(instance) + if instance is Timer: + instance.stop() + instance.call_deferred("free") + await Engine.get_main_loop().process_frame + return true + if instance is Node and instance.get_parent() != null: + if is_stdout_verbose: + print_verbose("GdUnit4:gc():remove node from parent ", instance.get_parent(), instance) + instance.get_parent().remove_child(instance) + instance.set_owner(null) + instance.free() + return !is_instance_valid(instance) + + +static func _release_connections(instance :Object) -> void: + if is_instance_valid(instance): + # disconnect from all connected signals to force freeing, otherwise it ends up in orphans + for connection in instance.get_incoming_connections(): + var signal_ :Signal = connection["signal"] + var callable_ :Callable = connection["callable"] + #prints(instance, connection) + #prints("signal", signal_.get_name(), signal_.get_object()) + #prints("callable", callable_.get_object()) + if instance.has_signal(signal_.get_name()) and instance.is_connected(signal_.get_name(), callable_): + #prints("disconnect signal", signal_.get_name(), callable_) + instance.disconnect(signal_.get_name(), callable_) + release_timers() + + +static func release_timers() -> void: + # we go the new way to hold all gdunit timers in group 'GdUnitTimers' + if Engine.get_main_loop().root == null: + return + for node :Node in Engine.get_main_loop().root.get_children(): + if is_instance_valid(node) and node.is_in_group("GdUnitTimers"): + if is_instance_valid(node): + Engine.get_main_loop().root.remove_child(node) + node.stop() + node.free() + + +# the finally cleaup unfreed resources and singletons +static func dispose_all() -> void: + release_timers() + GdUnitSignals.dispose() + GdUnitSingleton.dispose() + + +# if instance an mock or spy we need manually freeing the self reference +static func release_double(instance :Object) -> void: + if instance.has_method("__release_double"): + instance.call("__release_double") + + +static func clear_push_errors() -> void: + var runner :Node = Engine.get_meta("GdUnitRunner") + if runner != null: + runner.clear_push_errors() + + +static func register_expect_interupted_by_timeout(test_suite :Node, test_case_name :String) -> void: + var test_case :Node = test_suite.find_child(test_case_name, false, false) + test_case.expect_to_interupt() diff --git a/addons/gdUnit4/src/core/GodotVersionFixures.gd b/addons/gdUnit4/src/core/GodotVersionFixures.gd new file mode 100644 index 0000000..a34cd83 --- /dev/null +++ b/addons/gdUnit4/src/core/GodotVersionFixures.gd @@ -0,0 +1,29 @@ +## This service class contains helpers to wrap Godot functions and handle them carefully depending on the current Godot version +class_name GodotVersionFixures +extends RefCounted + + +@warning_ignore("shadowed_global_identifier") +static func type_convert(value: Variant, type: int) -> Variant: + return convert(value, type) + + +@warning_ignore("shadowed_global_identifier") +static func convert(value: Variant, type: int) -> Variant: + return type_convert(value, type) + + +# handle global_position fixed by https://github.com/godotengine/godot/pull/88473 +static func set_event_global_position(event: InputEventMouseMotion, global_position: Vector2) -> void: + if Engine.get_version_info().hex >= 0x40202 or Engine.get_version_info().hex == 0x40104: + event.global_position = event.position + else: + event.global_position = global_position + + +# we crash on macOS when using free() inside the plugin _exit_tree +static func free_fix(instance: Object) -> void: + if OS.get_distribution_name().contains("mac"): + instance.queue_free() + else: + instance.free() diff --git a/addons/gdUnit4/src/core/LocalTime.gd b/addons/gdUnit4/src/core/LocalTime.gd new file mode 100644 index 0000000..68900b5 --- /dev/null +++ b/addons/gdUnit4/src/core/LocalTime.gd @@ -0,0 +1,110 @@ +# This class provides Date/Time functionallity to Godot +class_name LocalTime +extends Resource + +enum TimeUnit { + MILLIS = 1, + SECOND = 2, + MINUTE = 3, + HOUR = 4, + DAY = 5, + MONTH = 6, + YEAR = 7 +} + +const SECONDS_PER_MINUTE:int = 60 +const MINUTES_PER_HOUR:int = 60 +const HOURS_PER_DAY:int = 24 +const MILLIS_PER_SECOND:int = 1000 +const MILLIS_PER_MINUTE:int = MILLIS_PER_SECOND * SECONDS_PER_MINUTE +const MILLIS_PER_HOUR:int = MILLIS_PER_MINUTE * MINUTES_PER_HOUR + +var _time :int +var _hour :int +var _minute :int +var _second :int +var _millisecond :int + + +static func now() -> LocalTime: + return LocalTime.new(_get_system_time_msecs()) + + +static func of_unix_time(time_ms :int) -> LocalTime: + return LocalTime.new(time_ms) + + +static func local_time(hours :int, minutes :int, seconds :int, milliseconds :int) -> LocalTime: + return LocalTime.new(MILLIS_PER_HOUR * hours\ + + MILLIS_PER_MINUTE * minutes\ + + MILLIS_PER_SECOND * seconds\ + + milliseconds) + + +func elapsed_since() -> String: + return LocalTime.elapsed(LocalTime._get_system_time_msecs() - _time) + + +func elapsed_since_ms() -> int: + return LocalTime._get_system_time_msecs() - _time + + +func plus(time_unit :TimeUnit, value :int) -> LocalTime: + var addValue:int = 0 + match time_unit: + TimeUnit.MILLIS: + addValue = value + TimeUnit.SECOND: + addValue = value * MILLIS_PER_SECOND + TimeUnit.MINUTE: + addValue = value * MILLIS_PER_MINUTE + TimeUnit.HOUR: + addValue = value * MILLIS_PER_HOUR + _init(_time + addValue) + return self + + +static func elapsed(p_time_ms :int) -> String: + var local_time_ := LocalTime.new(p_time_ms) + if local_time_._hour > 0: + return "%dh %dmin %ds %dms" % [local_time_._hour, local_time_._minute, local_time_._second, local_time_._millisecond] + if local_time_._minute > 0: + return "%dmin %ds %dms" % [local_time_._minute, local_time_._second, local_time_._millisecond] + if local_time_._second > 0: + return "%ds %dms" % [local_time_._second, local_time_._millisecond] + return "%dms" % local_time_._millisecond + + +@warning_ignore("integer_division") +# create from epoch timestamp in ms +func _init(time :int) -> void: + _time = time + _hour = (time / MILLIS_PER_HOUR) % 24 + _minute = (time / MILLIS_PER_MINUTE) % 60 + _second = (time / MILLIS_PER_SECOND) % 60 + _millisecond = time % 1000 + + +func hour() -> int: + return _hour + + +func minute() -> int: + return _minute + + +func second() -> int: + return _second + + +func millis() -> int: + return _millisecond + + +func _to_string() -> String: + return "%02d:%02d:%02d.%03d" % [_hour, _minute, _second, _millisecond] + + +# wraper to old OS.get_system_time_msecs() function +static func _get_system_time_msecs() -> int: + return Time.get_unix_time_from_system() * 1000 as int diff --git a/addons/gdUnit4/src/core/_TestCase.gd b/addons/gdUnit4/src/core/_TestCase.gd new file mode 100644 index 0000000..31be781 --- /dev/null +++ b/addons/gdUnit4/src/core/_TestCase.gd @@ -0,0 +1,238 @@ +class_name _TestCase +extends Node + +signal completed() + +# default timeout 5min +const DEFAULT_TIMEOUT := -1 +const ARGUMENT_TIMEOUT := "timeout" +const ARGUMENT_SKIP := "do_skip" +const ARGUMENT_SKIP_REASON := "skip_reason" + +var _iterations: int = 1 +var _current_iteration: int = -1 +var _seed: int +var _fuzzers: Array[GdFunctionArgument] = [] +var _test_param_index := -1 +var _line_number: int = -1 +var _script_path: String +var _skipped := false +var _skip_reason := "" +var _expect_to_interupt := false +var _timer: Timer +var _interupted: bool = false +var _failed := false +var _report: GdUnitReport = null +var _parameter_set_resolver: GdUnitTestParameterSetResolver +var _is_disposed := false + +var timeout: int = DEFAULT_TIMEOUT: + set(value): + timeout = value + get: + if timeout == DEFAULT_TIMEOUT: + timeout = GdUnitSettings.test_timeout() + return timeout + + +@warning_ignore("shadowed_variable_base_class") +func configure(p_name: String, p_line_number: int, p_script_path: String, p_timeout: int=DEFAULT_TIMEOUT, p_fuzzers: Array[GdFunctionArgument]=[], p_iterations: int=1, p_seed: int=-1) -> _TestCase: + set_name(p_name) + _line_number = p_line_number + _fuzzers = p_fuzzers + _iterations = p_iterations + _seed = p_seed + _script_path = p_script_path + timeout = p_timeout + return self + + +func execute(p_test_parameter := Array(), p_iteration := 0) -> void: + _failure_received(false) + _current_iteration = p_iteration - 1 + if _current_iteration == - 1: + _set_failure_handler() + set_timeout() + if not p_test_parameter.is_empty(): + update_fuzzers(p_test_parameter, p_iteration) + _execute_test_case(name, p_test_parameter) + else: + _execute_test_case(name, []) + await completed + + +func execute_paramaterized(p_test_parameter: Array) -> void: + _failure_received(false) + set_timeout() + # We need here to add a empty array to override the `test_parameters` to prevent initial "default" parameters from being used. + # This prevents objects in the argument list from being unnecessarily re-instantiated. + var test_parameters := p_test_parameter.duplicate() # is strictly need to duplicate the paramters before extend + test_parameters.append([]) + _execute_test_case(name, test_parameters) + await completed + + +func dispose() -> void: + if _is_disposed: + return + _is_disposed = true + Engine.remove_meta("GD_TEST_FAILURE") + stop_timer() + _remove_failure_handler() + _fuzzers.clear() + _report = null + + +@warning_ignore("shadowed_variable_base_class", "redundant_await") +func _execute_test_case(name: String, test_parameter: Array) -> void: + # needs at least on await otherwise it breaks the awaiting chain + await get_parent().callv(name, test_parameter) + await Engine.get_main_loop().process_frame + completed.emit() + + +func update_fuzzers(input_values: Array, iteration: int) -> void: + for fuzzer :Variant in input_values: + if fuzzer is Fuzzer: + fuzzer._iteration_index = iteration + 1 + + +func set_timeout() -> void: + if is_instance_valid(_timer): + return + var time: float = timeout / 1000.0 + _timer = Timer.new() + add_child(_timer) + _timer.set_name("gdunit_test_case_timer_%d" % _timer.get_instance_id()) + _timer.timeout.connect(func do_interrupt() -> void: + if is_fuzzed(): + _report = GdUnitReport.new().create(GdUnitReport.INTERUPTED, line_number(), GdAssertMessages.fuzzer_interuped(_current_iteration, "timedout")) + else: + _report = GdUnitReport.new().create(GdUnitReport.INTERUPTED, line_number(), GdAssertMessages.test_timeout(timeout)) + _interupted = true + completed.emit() + , CONNECT_DEFERRED) + _timer.set_one_shot(true) + _timer.set_wait_time(time) + _timer.set_autostart(false) + _timer.start() + + +func _set_failure_handler() -> void: + if not GdUnitSignals.instance().gdunit_set_test_failed.is_connected(_failure_received): + GdUnitSignals.instance().gdunit_set_test_failed.connect(_failure_received) + + +func _remove_failure_handler() -> void: + if GdUnitSignals.instance().gdunit_set_test_failed.is_connected(_failure_received): + GdUnitSignals.instance().gdunit_set_test_failed.disconnect(_failure_received) + + +func _failure_received(is_failed: bool) -> void: + # is already failed? + if _failed: + return + _failed = is_failed + Engine.set_meta("GD_TEST_FAILURE", is_failed) + + +func stop_timer() -> void: + # finish outstanding timeouts + if is_instance_valid(_timer): + _timer.stop() + _timer.call_deferred("free") + _timer = null + + +func expect_to_interupt() -> void: + _expect_to_interupt = true + + +func is_interupted() -> bool: + return _interupted + + +func is_expect_interupted() -> bool: + return _expect_to_interupt + + +func is_parameterized() -> bool: + return _parameter_set_resolver.is_parameterized() + + +func is_skipped() -> bool: + return _skipped + + +func report() -> GdUnitReport: + return _report + + +func skip_info() -> String: + return _skip_reason + + +func line_number() -> int: + return _line_number + + +func iterations() -> int: + return _iterations + + +func seed_value() -> int: + return _seed + + +func is_fuzzed() -> bool: + return not _fuzzers.is_empty() + + +func fuzzer_arguments() -> Array[GdFunctionArgument]: + return _fuzzers + + +func script_path() -> String: + return _script_path + + +func ResourcePath() -> String: + return _script_path + + +func generate_seed() -> void: + if _seed != -1: + seed(_seed) + + +func skip(skipped: bool, reason: String="") -> void: + _skipped = skipped + _skip_reason = reason + + +func set_function_descriptor(fd: GdFunctionDescriptor) -> void: + _parameter_set_resolver = GdUnitTestParameterSetResolver.new(fd) + + +func set_test_parameter_index(index: int) -> void: + _test_param_index = index + + +func test_parameter_index() -> int: + return _test_param_index + + +func test_case_names() -> PackedStringArray: + return _parameter_set_resolver.build_test_case_names(self) + + +func load_parameter_sets() -> Array: + return _parameter_set_resolver.load_parameter_sets(self, true) + + +func parameter_set_resolver() -> GdUnitTestParameterSetResolver: + return _parameter_set_resolver + + +func _to_string() -> String: + return "%s :%d (%dms)" % [get_name(), _line_number, timeout] diff --git a/addons/gdUnit4/src/core/command/GdUnitCommand.gd b/addons/gdUnit4/src/core/command/GdUnitCommand.gd new file mode 100644 index 0000000..659b6a3 --- /dev/null +++ b/addons/gdUnit4/src/core/command/GdUnitCommand.gd @@ -0,0 +1,41 @@ +class_name GdUnitCommand +extends RefCounted + + +func _init(p_name :String, p_is_enabled: Callable, p_runnable: Callable, p_shortcut :GdUnitShortcut.ShortCut = GdUnitShortcut.ShortCut.NONE) -> void: + assert(p_name != null, "(%s) missing parameter 'name'" % p_name) + assert(p_is_enabled != null, "(%s) missing parameter 'is_enabled'" % p_name) + assert(p_runnable != null, "(%s) missing parameter 'runnable'" % p_name) + assert(p_shortcut != null, "(%s) missing parameter 'shortcut'" % p_name) + self.name = p_name + self.is_enabled = p_is_enabled + self.shortcut = p_shortcut + self.runnable = p_runnable + + +var name: String: + set(value): + name = value + get: + return name + + +var shortcut: GdUnitShortcut.ShortCut: + set(value): + shortcut = value + get: + return shortcut + + +var is_enabled: Callable: + set(value): + is_enabled = value + get: + return is_enabled + + +var runnable: Callable: + set(value): + runnable = value + get: + return runnable diff --git a/addons/gdUnit4/src/core/command/GdUnitCommandHandler.gd b/addons/gdUnit4/src/core/command/GdUnitCommandHandler.gd new file mode 100644 index 0000000..4ee99cf --- /dev/null +++ b/addons/gdUnit4/src/core/command/GdUnitCommandHandler.gd @@ -0,0 +1,364 @@ +class_name GdUnitCommandHandler +extends Object + +signal gdunit_runner_start() +signal gdunit_runner_stop(client_id :int) + + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +const CMD_RUN_OVERALL = "Debug Overall TestSuites" +const CMD_RUN_TESTCASE = "Run TestCases" +const CMD_RUN_TESTCASE_DEBUG = "Run TestCases (Debug)" +const CMD_RUN_TESTSUITE = "Run TestSuites" +const CMD_RUN_TESTSUITE_DEBUG = "Run TestSuites (Debug)" +const CMD_RERUN_TESTS = "ReRun Tests" +const CMD_RERUN_TESTS_DEBUG = "ReRun Tests (Debug)" +const CMD_STOP_TEST_RUN = "Stop Test Run" +const CMD_CREATE_TESTCASE = "Create TestCase" + +const SETTINGS_SHORTCUT_MAPPING := { + "N/A" : GdUnitShortcut.ShortCut.NONE, + GdUnitSettings.SHORTCUT_INSPECTOR_RERUN_TEST : GdUnitShortcut.ShortCut.RERUN_TESTS, + GdUnitSettings.SHORTCUT_INSPECTOR_RERUN_TEST_DEBUG : GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG, + GdUnitSettings.SHORTCUT_INSPECTOR_RUN_TEST_OVERALL : GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL, + GdUnitSettings.SHORTCUT_INSPECTOR_RUN_TEST_STOP : GdUnitShortcut.ShortCut.STOP_TEST_RUN, + GdUnitSettings.SHORTCUT_EDITOR_RUN_TEST : GdUnitShortcut.ShortCut.RUN_TESTCASE, + GdUnitSettings.SHORTCUT_EDITOR_RUN_TEST_DEBUG : GdUnitShortcut.ShortCut.RUN_TESTCASE_DEBUG, + GdUnitSettings.SHORTCUT_EDITOR_CREATE_TEST : GdUnitShortcut.ShortCut.CREATE_TEST, + GdUnitSettings.SHORTCUT_FILESYSTEM_RUN_TEST : GdUnitShortcut.ShortCut.RUN_TESTCASE, + GdUnitSettings.SHORTCUT_FILESYSTEM_RUN_TEST_DEBUG : GdUnitShortcut.ShortCut.RUN_TESTCASE_DEBUG +} + +# the current test runner config +var _runner_config := GdUnitRunnerConfig.new() + +# holds the current connected gdUnit runner client id +var _client_id :int +# if no debug mode we have an process id +var _current_runner_process_id :int = 0 +# hold is current an test running +var _is_running :bool = false +# holds if the current running tests started in debug mode +var _running_debug_mode :bool + +var _commands := {} +var _shortcuts := {} + + +static func instance() -> GdUnitCommandHandler: + return GdUnitSingleton.instance("GdUnitCommandHandler", func() -> GdUnitCommandHandler: return GdUnitCommandHandler.new()) + + +func _init() -> void: + assert_shortcut_mappings(SETTINGS_SHORTCUT_MAPPING) + + GdUnitSignals.instance().gdunit_event.connect(_on_event) + GdUnitSignals.instance().gdunit_client_connected.connect(_on_client_connected) + GdUnitSignals.instance().gdunit_client_disconnected.connect(_on_client_disconnected) + GdUnitSignals.instance().gdunit_settings_changed.connect(_on_settings_changed) + # preload previous test execution + _runner_config.load_config() + + init_shortcuts() + var is_running := func(_script :Script) -> bool: return _is_running + var is_not_running := func(_script :Script) -> bool: return !_is_running + register_command(GdUnitCommand.new(CMD_RUN_OVERALL, is_not_running, cmd_run_overall.bind(true), GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL)) + register_command(GdUnitCommand.new(CMD_RUN_TESTCASE, is_not_running, cmd_editor_run_test.bind(false), GdUnitShortcut.ShortCut.RUN_TESTCASE)) + register_command(GdUnitCommand.new(CMD_RUN_TESTCASE_DEBUG, is_not_running, cmd_editor_run_test.bind(true), GdUnitShortcut.ShortCut.RUN_TESTCASE_DEBUG)) + register_command(GdUnitCommand.new(CMD_RUN_TESTSUITE, is_not_running, cmd_run_test_suites.bind(false))) + register_command(GdUnitCommand.new(CMD_RUN_TESTSUITE_DEBUG, is_not_running, cmd_run_test_suites.bind(true))) + register_command(GdUnitCommand.new(CMD_RERUN_TESTS, is_not_running, cmd_run.bind(false), GdUnitShortcut.ShortCut.RERUN_TESTS)) + register_command(GdUnitCommand.new(CMD_RERUN_TESTS_DEBUG, is_not_running, cmd_run.bind(true), GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG)) + register_command(GdUnitCommand.new(CMD_CREATE_TESTCASE, is_not_running, cmd_create_test, GdUnitShortcut.ShortCut.CREATE_TEST)) + register_command(GdUnitCommand.new(CMD_STOP_TEST_RUN, is_running, cmd_stop.bind(_client_id), GdUnitShortcut.ShortCut.STOP_TEST_RUN)) + + + # do not reschedule inside of test run (called on GdUnitCommandHandlerTest) + if Engine.has_meta("GdUnitRunner"): + return + # schedule discover tests if enabled + if GdUnitSettings.is_test_discover_enabled(): + var timer :SceneTreeTimer = Engine.get_main_loop().create_timer(5) + timer.timeout.connect(cmd_discover_tests) + + +func _notification(what :int) -> void: + if what == NOTIFICATION_PREDELETE: + _commands.clear() + _shortcuts.clear() + + +func _do_process() -> void: + check_test_run_stopped_manually() + + +# is checking if the user has press the editor stop scene +func check_test_run_stopped_manually() -> void: + if is_test_running_but_stop_pressed(): + if GdUnitSettings.is_verbose_assert_warnings(): + push_warning("Test Runner scene was stopped manually, force stopping the current test run!") + cmd_stop(_client_id) + + +func is_test_running_but_stop_pressed() -> bool: + return _running_debug_mode and _is_running and not EditorInterface.is_playing_scene() + + +func assert_shortcut_mappings(mappings :Dictionary) -> void: + for shortcut :int in GdUnitShortcut.ShortCut.values(): + assert(mappings.values().has(shortcut), "missing settings mapping for shortcut '%s'!" % GdUnitShortcut.ShortCut.keys()[shortcut]) + + +func init_shortcuts() -> void: + for shortcut :int in GdUnitShortcut.ShortCut.values(): + if shortcut == GdUnitShortcut.ShortCut.NONE: + continue + var property_name :String = SETTINGS_SHORTCUT_MAPPING.find_key(shortcut) + var property := GdUnitSettings.get_property(property_name) + var keys := GdUnitShortcut.default_keys(shortcut) + if property != null: + keys = property.value() + var inputEvent := create_shortcut_input_even(keys) + register_shortcut(shortcut, inputEvent) + + +func create_shortcut_input_even(key_codes : PackedInt32Array) -> InputEventKey: + var inputEvent :InputEventKey = InputEventKey.new() + inputEvent.pressed = true + for key_code in key_codes: + match key_code: + KEY_ALT: + inputEvent.alt_pressed = true + KEY_SHIFT: + inputEvent.shift_pressed = true + KEY_CTRL: + inputEvent.ctrl_pressed = true + _: + inputEvent.keycode = key_code as Key + inputEvent.physical_keycode = key_code as Key + return inputEvent + + +func register_shortcut(p_shortcut :GdUnitShortcut.ShortCut, p_input_event :InputEvent) -> void: + GdUnitTools.prints_verbose("register shortcut: '%s' to '%s'" % [GdUnitShortcut.ShortCut.keys()[p_shortcut], p_input_event.as_text()]) + var shortcut := Shortcut.new() + shortcut.set_events([p_input_event]) + var command_name :String = get_shortcut_command(p_shortcut) + _shortcuts[p_shortcut] = GdUnitShortcutAction.new(p_shortcut, shortcut, command_name) + + +func get_shortcut(shortcut_type :GdUnitShortcut.ShortCut) -> Shortcut: + return get_shortcut_action(shortcut_type).shortcut + + +func get_shortcut_action(shortcut_type :GdUnitShortcut.ShortCut) -> GdUnitShortcutAction: + return _shortcuts.get(shortcut_type) + + +func get_shortcut_command(p_shortcut :GdUnitShortcut.ShortCut) -> String: + return GdUnitShortcut.CommandMapping.get(p_shortcut, "unknown command") + + +func register_command(p_command :GdUnitCommand) -> void: + _commands[p_command.name] = p_command + + +func command(cmd_name :String) -> GdUnitCommand: + return _commands.get(cmd_name) + + +func cmd_run_test_suites(test_suite_paths :PackedStringArray, debug :bool, rerun := false) -> void: + # create new runner runner_config for fresh run otherwise use saved one + if not rerun: + var result := _runner_config.clear()\ + .add_test_suites(test_suite_paths)\ + .save_config() + if result.is_error(): + push_error(result.error_message()) + return + cmd_run(debug) + + +func cmd_run_test_case(test_suite_resource_path :String, test_case :String, test_param_index :int, debug :bool, rerun := false) -> void: + # create new runner config for fresh run otherwise use saved one + if not rerun: + var result := _runner_config.clear()\ + .add_test_case(test_suite_resource_path, test_case, test_param_index)\ + .save_config() + if result.is_error(): + push_error(result.error_message()) + return + cmd_run(debug) + + +func cmd_run_overall(debug :bool) -> void: + var test_suite_paths :PackedStringArray = GdUnitCommandHandler.scan_test_directorys("res://" , GdUnitSettings.test_root_folder(), []) + var result := _runner_config.clear()\ + .add_test_suites(test_suite_paths)\ + .save_config() + if result.is_error(): + push_error(result.error_message()) + return + cmd_run(debug) + + +func cmd_run(debug :bool) -> void: + # don't start is already running + if _is_running: + return + # save current selected excution config + var result := _runner_config.set_server_port(Engine.get_meta("gdunit_server_port")).save_config() + if result.is_error(): + push_error(result.error_message()) + return + # before start we have to save all changes + ScriptEditorControls.save_all_open_script() + gdunit_runner_start.emit() + _current_runner_process_id = -1 + _running_debug_mode = debug + if debug: + run_debug_mode() + else: + run_release_mode() + + +func cmd_stop(client_id :int) -> void: + # don't stop if is already stopped + if not _is_running: + return + _is_running = false + gdunit_runner_stop.emit(client_id) + if _running_debug_mode: + EditorInterface.stop_playing_scene() + else: if _current_runner_process_id > 0: + var result := OS.kill(_current_runner_process_id) + if result != OK: + push_error("ERROR checked stopping GdUnit Test Runner. error code: %s" % result) + _current_runner_process_id = -1 + + +func cmd_editor_run_test(debug :bool) -> void: + var cursor_line := active_base_editor().get_caret_line() + #run test case? + var regex := RegEx.new() + regex.compile("(^func[ ,\t])(test_[a-zA-Z0-9_]*)") + var result := regex.search(active_base_editor().get_line(cursor_line)) + if result: + var func_name := result.get_string(2).strip_edges() + prints("Run test:", func_name, "debug", debug) + if func_name.begins_with("test_"): + cmd_run_test_case(active_script().resource_path, func_name, -1, debug) + return + # otherwise run the full test suite + var selected_test_suites := [active_script().resource_path] + cmd_run_test_suites(selected_test_suites, debug) + + +func cmd_create_test() -> void: + var cursor_line := active_base_editor().get_caret_line() + var result := GdUnitTestSuiteBuilder.create(active_script(), cursor_line) + if result.is_error(): + # show error dialog + push_error("Failed to create test case: %s" % result.error_message()) + return + var info := result.value() as Dictionary + ScriptEditorControls.edit_script(info.get("path"), info.get("line")) + + +func cmd_discover_tests() -> void: + await GdUnitTestDiscoverer.run() + + +static func scan_test_directorys(base_directory :String, test_directory: String, test_suite_paths :PackedStringArray) -> PackedStringArray: + print_verbose("Scannning for test directory '%s' at %s" % [test_directory, base_directory]) + for directory in DirAccess.get_directories_at(base_directory): + if directory.begins_with("."): + continue + var current_directory := normalize_path(base_directory + "/" + directory) + if GdUnitTestSuiteScanner.exclude_scan_directories.has(current_directory): + continue + if match_test_directory(directory, test_directory): + test_suite_paths.append(current_directory) + else: + scan_test_directorys(current_directory, test_directory, test_suite_paths) + return test_suite_paths + + +static func normalize_path(path :String) -> String: + return path.replace("///", "//") + + +static func match_test_directory(directory :String, test_directory: String) -> bool: + return directory == test_directory or test_directory.is_empty() or test_directory == "/" or test_directory == "res://" + + +func run_debug_mode() -> void: + EditorInterface.play_custom_scene("res://addons/gdUnit4/src/core/GdUnitRunner.tscn") + _is_running = true + + +func run_release_mode() -> void: + var arguments := Array() + if OS.is_stdout_verbose(): + arguments.append("--verbose") + arguments.append("--no-window") + arguments.append("--path") + arguments.append(ProjectSettings.globalize_path("res://")) + arguments.append("res://addons/gdUnit4/src/core/GdUnitRunner.tscn") + _current_runner_process_id = OS.create_process(OS.get_executable_path(), arguments, false); + _is_running = true + + +func active_base_editor() -> TextEdit: + return EditorInterface.get_script_editor().get_current_editor().get_base_editor() + + +func active_script() -> Script: + return EditorInterface.get_script_editor().get_current_script() + + + +################################################################################ +# signals handles +################################################################################ +func _on_event(event :GdUnitEvent) -> void: + if event.type() == GdUnitEvent.STOP: + cmd_stop(_client_id) + + +func _on_stop_pressed() -> void: + cmd_stop(_client_id) + + +func _on_run_pressed(debug := false) -> void: + cmd_run(debug) + + +func _on_run_overall_pressed(_debug := false) -> void: + cmd_run_overall(true) + + +func _on_settings_changed(property :GdUnitProperty) -> void: + if SETTINGS_SHORTCUT_MAPPING.has(property.name()): + var shortcut :GdUnitShortcut.ShortCut = SETTINGS_SHORTCUT_MAPPING.get(property.name()) + var input_event := create_shortcut_input_even(property.value()) + prints("Shortcut changed: '%s' to '%s'" % [GdUnitShortcut.ShortCut.keys()[shortcut], input_event.as_text()]) + register_shortcut(shortcut, input_event) + if property.name() == GdUnitSettings.TEST_DISCOVER_ENABLED: + var timer :SceneTreeTimer = Engine.get_main_loop().create_timer(3) + timer.timeout.connect(cmd_discover_tests) + + +################################################################################ +# Network stuff +################################################################################ +func _on_client_connected(client_id :int) -> void: + _client_id = client_id + + +func _on_client_disconnected(client_id :int) -> void: + # only stops is not in debug mode running and the current client + if not _running_debug_mode and _client_id == client_id: + cmd_stop(client_id) + _client_id = -1 diff --git a/addons/gdUnit4/src/core/command/GdUnitShortcut.gd b/addons/gdUnit4/src/core/command/GdUnitShortcut.gd new file mode 100644 index 0000000..bf8ac83 --- /dev/null +++ b/addons/gdUnit4/src/core/command/GdUnitShortcut.gd @@ -0,0 +1,58 @@ +class_name GdUnitShortcut +extends RefCounted + + +enum ShortCut { + NONE, + RUN_TESTS_OVERALL, + RUN_TESTCASE, + RUN_TESTCASE_DEBUG, + RERUN_TESTS, + RERUN_TESTS_DEBUG, + STOP_TEST_RUN, + CREATE_TEST, +} + + +const CommandMapping = { + ShortCut.RUN_TESTS_OVERALL: GdUnitCommandHandler.CMD_RUN_OVERALL, + ShortCut.RUN_TESTCASE: GdUnitCommandHandler.CMD_RUN_TESTCASE, + ShortCut.RUN_TESTCASE_DEBUG: GdUnitCommandHandler.CMD_RUN_TESTCASE_DEBUG, + ShortCut.RERUN_TESTS: GdUnitCommandHandler.CMD_RERUN_TESTS, + ShortCut.RERUN_TESTS_DEBUG: GdUnitCommandHandler.CMD_RERUN_TESTS_DEBUG, + ShortCut.STOP_TEST_RUN: GdUnitCommandHandler.CMD_STOP_TEST_RUN, + ShortCut.CREATE_TEST: GdUnitCommandHandler.CMD_CREATE_TESTCASE, +} + + +const DEFAULTS_MACOS := { + ShortCut.NONE : [], + ShortCut.RUN_TESTCASE : [Key.KEY_META, Key.KEY_ALT, Key.KEY_F5], + ShortCut.RUN_TESTCASE_DEBUG : [Key.KEY_META, Key.KEY_ALT, Key.KEY_F6], + ShortCut.RUN_TESTS_OVERALL : [Key.KEY_META, Key.KEY_F7], + ShortCut.STOP_TEST_RUN : [Key.KEY_META, Key.KEY_F8], + ShortCut.RERUN_TESTS : [Key.KEY_META, Key.KEY_F5], + ShortCut.RERUN_TESTS_DEBUG : [Key.KEY_META, Key.KEY_F6], + ShortCut.CREATE_TEST : [Key.KEY_META, Key.KEY_ALT, Key.KEY_F10], +} + +const DEFAULTS_WINDOWS := { + ShortCut.NONE : [], + ShortCut.RUN_TESTCASE : [Key.KEY_CTRL, Key.KEY_ALT, Key.KEY_F5], + ShortCut.RUN_TESTCASE_DEBUG : [Key.KEY_CTRL,Key.KEY_ALT, Key.KEY_F6], + ShortCut.RUN_TESTS_OVERALL : [Key.KEY_CTRL, Key.KEY_F7], + ShortCut.STOP_TEST_RUN : [Key.KEY_CTRL, Key.KEY_F8], + ShortCut.RERUN_TESTS : [Key.KEY_CTRL, Key.KEY_F5], + ShortCut.RERUN_TESTS_DEBUG : [Key.KEY_CTRL, Key.KEY_F6], + ShortCut.CREATE_TEST : [Key.KEY_CTRL, Key.KEY_ALT, Key.KEY_F10], +} + + +static func default_keys(shortcut :ShortCut) -> PackedInt32Array: + match OS.get_name().to_lower(): + 'windows': + return DEFAULTS_WINDOWS[shortcut] + 'macos': + return DEFAULTS_MACOS[shortcut] + _: + return DEFAULTS_WINDOWS[shortcut] diff --git a/addons/gdUnit4/src/core/command/GdUnitShortcutAction.gd b/addons/gdUnit4/src/core/command/GdUnitShortcutAction.gd new file mode 100644 index 0000000..94b082e --- /dev/null +++ b/addons/gdUnit4/src/core/command/GdUnitShortcutAction.gd @@ -0,0 +1,36 @@ +class_name GdUnitShortcutAction +extends RefCounted + + +func _init(p_type :GdUnitShortcut.ShortCut, p_shortcut :Shortcut, p_command :String) -> void: + assert(p_type != null, "missing parameter 'type'") + assert(p_shortcut != null, "missing parameter 'shortcut'") + assert(p_command != null, "missing parameter 'command'") + self.type = p_type + self.shortcut = p_shortcut + self.command = p_command + + +var type: GdUnitShortcut.ShortCut: + set(value): + type = value + get: + return type + + +var shortcut: Shortcut: + set(value): + shortcut = value + get: + return shortcut + + +var command: String: + set(value): + command = value + get: + return command + + +func _to_string() -> String: + return "GdUnitShortcutAction: %s (%s) -> %s" % [GdUnitShortcut.ShortCut.keys()[type], shortcut.get_as_text(), command] diff --git a/addons/gdUnit4/src/core/discovery/GdUnitTestDiscoverGuard.gd b/addons/gdUnit4/src/core/discovery/GdUnitTestDiscoverGuard.gd new file mode 100644 index 0000000..fa9a65c --- /dev/null +++ b/addons/gdUnit4/src/core/discovery/GdUnitTestDiscoverGuard.gd @@ -0,0 +1,86 @@ +extends RefCounted + +# contains all tracked test suites where discovered since editor start +# key : test suite resource_path +# value: the list of discovered test case names +var _discover_cache := {} + + +func _init() -> void: + # Register for discovery events to sync the cache + GdUnitSignals.instance().gdunit_add_test_suite.connect(sync_cache) + + +func sync_cache(dto :GdUnitTestSuiteDto) -> void: + var resource_path := dto.path() + var discovered_test_cases :Array[String] = [] + for test_case in dto.test_cases(): + discovered_test_cases.append(test_case.name()) + _discover_cache[resource_path] = discovered_test_cases + + +func discover(script: Script) -> void: + if GdObjects.is_test_suite(script): + # a new test suite is discovered + if not _discover_cache.has(script.resource_path): + var scanner := GdUnitTestSuiteScanner.new() + var test_suite := scanner._parse_test_suite(script) + var dto :GdUnitTestSuiteDto = GdUnitTestSuiteDto.of(test_suite) + GdUnitSignals.instance().gdunit_event.emit(GdUnitEventTestDiscoverTestSuiteAdded.new(script.resource_path, test_suite.get_name(), dto)) + sync_cache(dto) + test_suite.queue_free() + return + + var tests_added :Array[String] = [] + var tests_removed := PackedStringArray() + var script_test_cases := extract_test_functions(script) + var discovered_test_cases :Array[String] = _discover_cache.get(script.resource_path, [] as Array[String]) + + # first detect removed/renamed tests + for test_case in discovered_test_cases: + if not script_test_cases.has(test_case): + tests_removed.append(test_case) + # second detect new added tests + for test_case in script_test_cases: + if not discovered_test_cases.has(test_case): + tests_added.append(test_case) + + # finally notify changes to the inspector + if not tests_removed.is_empty() or not tests_added.is_empty(): + var scanner := GdUnitTestSuiteScanner.new() + var test_suite := scanner._parse_test_suite(script) + var suite_name := test_suite.get_name() + + # emit deleted tests + for test_name in tests_removed: + discovered_test_cases.erase(test_name) + GdUnitSignals.instance().gdunit_event.emit(GdUnitEventTestDiscoverTestRemoved.new(script.resource_path, suite_name, test_name)) + + # emit new discovered tests + for test_name in tests_added: + discovered_test_cases.append(test_name) + var test_case := test_suite.find_child(test_name, false, false) + var dto := GdUnitTestCaseDto.new() + dto = dto.deserialize(dto.serialize(test_case)) + GdUnitSignals.instance().gdunit_event.emit(GdUnitEventTestDiscoverTestAdded.new(script.resource_path, suite_name, dto)) + # update the cache + _discover_cache[script.resource_path] = discovered_test_cases + test_suite.queue_free() + + +func extract_test_functions(script :Script) -> PackedStringArray: + return script.get_script_method_list()\ + .map(map_func_names)\ + .filter(filter_test_cases) + + +func map_func_names(method_info :Dictionary) -> String: + return method_info["name"] + + +func filter_test_cases(value :String) -> bool: + return value.begins_with("test_") + + +func filter_by_test_cases(method_info :Dictionary, value :String) -> bool: + return method_info["name"] == value diff --git a/addons/gdUnit4/src/core/discovery/GdUnitTestDiscoverer.gd b/addons/gdUnit4/src/core/discovery/GdUnitTestDiscoverer.gd new file mode 100644 index 0000000..1e92a4d --- /dev/null +++ b/addons/gdUnit4/src/core/discovery/GdUnitTestDiscoverer.gd @@ -0,0 +1,25 @@ +class_name GdUnitTestDiscoverer +extends RefCounted + + +static func run() -> void: + prints("Running test discovery ..") + GdUnitSignals.instance().gdunit_event.emit(GdUnitEventTestDiscoverStart.new()) + await Engine.get_main_loop().create_timer(.5).timeout + + var test_suite_directories :PackedStringArray = GdUnitCommandHandler.scan_test_directorys("res://" , GdUnitSettings.test_root_folder(), []) + var scanner := GdUnitTestSuiteScanner.new() + var _test_suites_to_process :Array[Node] = [] + for test_suite_dir in test_suite_directories: + _test_suites_to_process.append_array(scanner.scan(test_suite_dir)) + + var test_case_count :int = _test_suites_to_process.reduce(func (accum :int, test_suite :Node) -> int: + return accum + test_suite.get_child_count(), 0) + + for test_suite in _test_suites_to_process: + var ts_dto := GdUnitTestSuiteDto.of(test_suite) + GdUnitSignals.instance().gdunit_add_test_suite.emit(ts_dto) + + prints("%d test suites discovered." % _test_suites_to_process.size()) + GdUnitSignals.instance().gdunit_event.emit(GdUnitEventTestDiscoverEnd.new(_test_suites_to_process.size(), test_case_count)) + await Engine.get_main_loop().process_frame diff --git a/addons/gdUnit4/src/core/event/GdUnitEvent.gd b/addons/gdUnit4/src/core/event/GdUnitEvent.gd new file mode 100644 index 0000000..0f8ad7d --- /dev/null +++ b/addons/gdUnit4/src/core/event/GdUnitEvent.gd @@ -0,0 +1,190 @@ +class_name GdUnitEvent +extends Resource + +const WARNINGS = "warnings" +const FAILED = "failed" +const ERRORS = "errors" +const SKIPPED = "skipped" +const ELAPSED_TIME = "elapsed_time" +const ORPHAN_NODES = "orphan_nodes" +const ERROR_COUNT = "error_count" +const FAILED_COUNT = "failed_count" +const SKIPPED_COUNT = "skipped_count" + +enum { + INIT, + STOP, + TESTSUITE_BEFORE, + TESTSUITE_AFTER, + TESTCASE_BEFORE, + TESTCASE_AFTER, + DISCOVER_START, + DISCOVER_END, + DISCOVER_SUITE_ADDED, + DISCOVER_TEST_ADDED, + DISCOVER_TEST_REMOVED, +} + +var _event_type :int +var _resource_path :String +var _suite_name :String +var _test_name :String +var _total_count :int = 0 +var _statistics := Dictionary() +var _reports :Array[GdUnitReport] = [] + + +func suite_before(p_resource_path :String, p_suite_name :String, p_total_count :int) -> GdUnitEvent: + _event_type = TESTSUITE_BEFORE + _resource_path = p_resource_path + _suite_name = p_suite_name + _test_name = "before" + _total_count = p_total_count + return self + + +func suite_after(p_resource_path :String, p_suite_name :String, p_statistics :Dictionary = {}, p_reports :Array[GdUnitReport] = []) -> GdUnitEvent: + _event_type = TESTSUITE_AFTER + _resource_path = p_resource_path + _suite_name = p_suite_name + _test_name = "after" + _statistics = p_statistics + _reports = p_reports + return self + + +func test_before(p_resource_path :String, p_suite_name :String, p_test_name :String) -> GdUnitEvent: + _event_type = TESTCASE_BEFORE + _resource_path = p_resource_path + _suite_name = p_suite_name + _test_name = p_test_name + return self + + +func test_after(p_resource_path :String, p_suite_name :String, p_test_name :String, p_statistics :Dictionary = {}, p_reports :Array[GdUnitReport] = []) -> GdUnitEvent: + _event_type = TESTCASE_AFTER + _resource_path = p_resource_path + _suite_name = p_suite_name + _test_name = p_test_name + _statistics = p_statistics + _reports = p_reports + return self + + +func type() -> int: + return _event_type + + +func suite_name() -> String: + return _suite_name + + +func test_name() -> String: + return _test_name + + +func elapsed_time() -> int: + return _statistics.get(ELAPSED_TIME, 0) + + +func orphan_nodes() -> int: + return _statistics.get(ORPHAN_NODES, 0) + + +func statistic(p_type :String) -> int: + return _statistics.get(p_type, 0) + + +func total_count() -> int: + return _total_count + + +func success_count() -> int: + return total_count() - error_count() - failed_count() - skipped_count() + + +func error_count() -> int: + return _statistics.get(ERROR_COUNT, 0) + + +func failed_count() -> int: + return _statistics.get(FAILED_COUNT, 0) + + +func skipped_count() -> int: + return _statistics.get(SKIPPED_COUNT, 0) + + +func resource_path() -> String: + return _resource_path + + +func is_success() -> bool: + return not is_warning() and not is_failed() and not is_error() and not is_skipped() + + +func is_warning() -> bool: + return _statistics.get(WARNINGS, false) + + +func is_failed() -> bool: + return _statistics.get(FAILED, false) + + +func is_error() -> bool: + return _statistics.get(ERRORS, false) + + +func is_skipped() -> bool: + return _statistics.get(SKIPPED, false) + + +func reports() -> Array[GdUnitReport]: + return _reports + + +func _to_string() -> String: + return "Event: %s %s:%s, %s, %s" % [_event_type, _suite_name, _test_name, _statistics, _reports] + + +func serialize() -> Dictionary: + var serialized := { + "type" : _event_type, + "resource_path": _resource_path, + "suite_name" : _suite_name, + "test_name" : _test_name, + "total_count" : _total_count, + "statistics" : _statistics + } + serialized["reports"] = _serialize_TestReports() + return serialized + + +func deserialize(serialized :Dictionary) -> GdUnitEvent: + _event_type = serialized.get("type", null) + _resource_path = serialized.get("resource_path", null) + _suite_name = serialized.get("suite_name", null) + _test_name = serialized.get("test_name", "unknown") + _total_count = serialized.get("total_count", 0) + _statistics = serialized.get("statistics", Dictionary()) + if serialized.has("reports"): + # needs this workaround to copy typed values in the array + var reports_to_deserializ :Array[Dictionary] = [] + reports_to_deserializ.append_array(serialized.get("reports")) + _reports = _deserialize_reports(reports_to_deserializ) + return self + + +func _serialize_TestReports() -> Array[Dictionary]: + var serialized_reports :Array[Dictionary] = [] + for report in _reports: + serialized_reports.append(report.serialize()) + return serialized_reports + + +func _deserialize_reports(p_reports :Array[Dictionary]) -> Array[GdUnitReport]: + var deserialized_reports :Array[GdUnitReport] = [] + for report in p_reports: + var test_report := GdUnitReport.new().deserialize(report) + deserialized_reports.append(test_report) + return deserialized_reports diff --git a/addons/gdUnit4/src/core/event/GdUnitEventInit.gd b/addons/gdUnit4/src/core/event/GdUnitEventInit.gd new file mode 100644 index 0000000..8bb1d49 --- /dev/null +++ b/addons/gdUnit4/src/core/event/GdUnitEventInit.gd @@ -0,0 +1,19 @@ +class_name GdUnitInit +extends GdUnitEvent + + +var _total_testsuites :int + + +func _init(p_total_testsuites :int, p_total_count :int) -> void: + _event_type = INIT + _total_testsuites = p_total_testsuites + _total_count = p_total_count + + +func total_test_suites() -> int: + return _total_testsuites + + +func total_tests() -> int: + return _total_count diff --git a/addons/gdUnit4/src/core/event/GdUnitEventStop.gd b/addons/gdUnit4/src/core/event/GdUnitEventStop.gd new file mode 100644 index 0000000..d7a3c11 --- /dev/null +++ b/addons/gdUnit4/src/core/event/GdUnitEventStop.gd @@ -0,0 +1,6 @@ +class_name GdUnitStop +extends GdUnitEvent + + +func _init() -> void: + _event_type = STOP diff --git a/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverEnd.gd b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverEnd.gd new file mode 100644 index 0000000..c6194ef --- /dev/null +++ b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverEnd.gd @@ -0,0 +1,19 @@ +class_name GdUnitEventTestDiscoverEnd +extends GdUnitEvent + + +var _total_testsuites: int + + +func _init(testsuite_count: int, test_count: int) -> void: + _event_type = DISCOVER_END + _total_testsuites = testsuite_count + _total_count = test_count + + +func total_test_suites() -> int: + return _total_testsuites + + +func total_tests() -> int: + return _total_count diff --git a/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverStart.gd b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverStart.gd new file mode 100644 index 0000000..c7dd36f --- /dev/null +++ b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverStart.gd @@ -0,0 +1,6 @@ +class_name GdUnitEventTestDiscoverStart +extends GdUnitEvent + + +func _init() -> void: + _event_type = DISCOVER_START diff --git a/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestAdded.gd b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestAdded.gd new file mode 100644 index 0000000..c5f4459 --- /dev/null +++ b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestAdded.gd @@ -0,0 +1,17 @@ +class_name GdUnitEventTestDiscoverTestAdded +extends GdUnitEvent + + +var _test_case_dto: GdUnitTestCaseDto + + +func _init(arg_resource_path: String, arg_suite_name: String, arg_test_case_dto: GdUnitTestCaseDto) -> void: + _event_type = DISCOVER_TEST_ADDED + _resource_path = arg_resource_path + _suite_name = arg_suite_name + _test_name = arg_test_case_dto.name() + _test_case_dto = arg_test_case_dto + + +func test_case_dto() -> GdUnitTestCaseDto: + return _test_case_dto diff --git a/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestRemoved.gd b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestRemoved.gd new file mode 100644 index 0000000..77617d0 --- /dev/null +++ b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestRemoved.gd @@ -0,0 +1,9 @@ +class_name GdUnitEventTestDiscoverTestRemoved +extends GdUnitEvent + + +func _init(arg_resource_path: String, arg_suite_name: String, arg_test_name: String) -> void: + _event_type = DISCOVER_TEST_REMOVED + _resource_path = arg_resource_path + _suite_name = arg_suite_name + _test_name = arg_test_name diff --git a/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestSuiteAdded.gd b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestSuiteAdded.gd new file mode 100644 index 0000000..b0e23f5 --- /dev/null +++ b/addons/gdUnit4/src/core/event/GdUnitEventTestDiscoverTestSuiteAdded.gd @@ -0,0 +1,16 @@ +class_name GdUnitEventTestDiscoverTestSuiteAdded +extends GdUnitEvent + + +var _dto: GdUnitTestSuiteDto + + +func _init(arg_resource_path: String, arg_suite_name: String, arg_dto: GdUnitTestSuiteDto) -> void: + _event_type = DISCOVER_SUITE_ADDED + _resource_path = arg_resource_path + _suite_name = arg_suite_name + _dto = arg_dto + + +func suite_dto() -> GdUnitTestSuiteDto: + return _dto diff --git a/addons/gdUnit4/src/core/execution/GdUnitExecutionContext.gd b/addons/gdUnit4/src/core/execution/GdUnitExecutionContext.gd new file mode 100644 index 0000000..25d69b0 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/GdUnitExecutionContext.gd @@ -0,0 +1,196 @@ +## The execution context +## It contains all the necessary information about the executed stage, such as memory observers, reports, orphan monitor +class_name GdUnitExecutionContext + +var _parent_context :GdUnitExecutionContext +var _sub_context :Array[GdUnitExecutionContext] = [] +var _orphan_monitor :GdUnitOrphanNodesMonitor +var _memory_observer :GdUnitMemoryObserver +var _report_collector :GdUnitTestReportCollector +var _timer :LocalTime +var _test_case_name: StringName +var _name :String + + +var error_monitor : GodotGdErrorMonitor = null: + set (value): + error_monitor = value + get: + if _parent_context != null: + return _parent_context.error_monitor + return error_monitor + + +var test_suite : GdUnitTestSuite = null: + set (value): + test_suite = value + get: + if _parent_context != null: + return _parent_context.test_suite + return test_suite + + +var test_case : _TestCase = null: + get: + if _test_case_name.is_empty(): + return null + return test_suite.find_child(_test_case_name, false, false) + + +func _init(name :String, parent_context :GdUnitExecutionContext = null) -> void: + _name = name + _parent_context = parent_context + _timer = LocalTime.now() + _orphan_monitor = GdUnitOrphanNodesMonitor.new(name) + _orphan_monitor.start() + _memory_observer = GdUnitMemoryObserver.new() + error_monitor = GodotGdErrorMonitor.new() + _report_collector = GdUnitTestReportCollector.new(get_instance_id()) + if parent_context != null: + parent_context._sub_context.append(self) + + +func dispose() -> void: + _timer = null + _orphan_monitor = null + _report_collector = null + _memory_observer = null + _parent_context = null + test_suite = null + test_case = null + for context in _sub_context: + context.dispose() + _sub_context.clear() + + +func set_active() -> void: + test_suite.__execution_context = self + GdUnitThreadManager.get_current_context().set_execution_context(self) + + +static func of_test_suite(test_suite_ :GdUnitTestSuite) -> GdUnitExecutionContext: + assert(test_suite_, "test_suite is null") + var context := GdUnitExecutionContext.new(test_suite_.get_name()) + context.test_suite = test_suite_ + context.set_active() + return context + + +static func of_test_case(pe :GdUnitExecutionContext, test_case_name :StringName) -> GdUnitExecutionContext: + var context := GdUnitExecutionContext.new(test_case_name, pe) + context._test_case_name = test_case_name + context.set_active() + return context + + +static func of(pe :GdUnitExecutionContext) -> GdUnitExecutionContext: + var context := GdUnitExecutionContext.new(pe._test_case_name, pe) + context._test_case_name = pe._test_case_name + context.set_active() + return context + + +func test_failed() -> bool: + return has_failures() or has_errors() + + +func error_monitor_start() -> void: + error_monitor.start() + + +func error_monitor_stop() -> void: + await error_monitor.scan() + for error_report in error_monitor.to_reports(): + if error_report.is_error(): + _report_collector._reports.append(error_report) + + +func orphan_monitor_start() -> void: + _orphan_monitor.start() + + +func orphan_monitor_stop() -> void: + _orphan_monitor.stop() + + +func reports() -> Array[GdUnitReport]: + return _report_collector.reports() + + +func build_report_statistics(orphans :int, recursive := true) -> Dictionary: + return { + GdUnitEvent.ORPHAN_NODES: orphans, + GdUnitEvent.ELAPSED_TIME: _timer.elapsed_since_ms(), + GdUnitEvent.FAILED: has_failures(), + GdUnitEvent.ERRORS: has_errors(), + GdUnitEvent.WARNINGS: has_warnings(), + GdUnitEvent.SKIPPED: has_skipped(), + GdUnitEvent.FAILED_COUNT: count_failures(recursive), + GdUnitEvent.ERROR_COUNT: count_errors(recursive), + GdUnitEvent.SKIPPED_COUNT: count_skipped(recursive) + } + + +func has_failures() -> bool: + return _sub_context.any(func(c :GdUnitExecutionContext) -> bool: + return c.has_failures()) or _report_collector.has_failures() + + +func has_errors() -> bool: + return _sub_context.any(func(c :GdUnitExecutionContext) -> bool: + return c.has_errors()) or _report_collector.has_errors() + + +func has_warnings() -> bool: + return _sub_context.any(func(c :GdUnitExecutionContext) -> bool: + return c.has_warnings()) or _report_collector.has_warnings() + + +func has_skipped() -> bool: + return _sub_context.any(func(c :GdUnitExecutionContext) -> bool: + return c.has_skipped()) or _report_collector.has_skipped() + + +func count_failures(recursive :bool) -> int: + if not recursive: + return _report_collector.count_failures() + return _sub_context\ + .map(func(c :GdUnitExecutionContext) -> int: + return c.count_failures(recursive)).reduce(sum, _report_collector.count_failures()) + + +func count_errors(recursive :bool) -> int: + if not recursive: + return _report_collector.count_errors() + return _sub_context\ + .map(func(c :GdUnitExecutionContext) -> int: + return c.count_errors(recursive)).reduce(sum, _report_collector.count_errors()) + + +func count_skipped(recursive :bool) -> int: + if not recursive: + return _report_collector.count_skipped() + return _sub_context\ + .map(func(c :GdUnitExecutionContext) -> int: + return c.count_skipped(recursive)).reduce(sum, _report_collector.count_skipped()) + + +func count_orphans() -> int: + var orphans := 0 + for c in _sub_context: + orphans += c._orphan_monitor.orphan_nodes() + return _orphan_monitor.orphan_nodes() - orphans + + +func sum(accum :int, number :int) -> int: + return accum + number + + +func register_auto_free(obj :Variant) -> Variant: + return _memory_observer.register_auto_free(obj) + + +## Runs the gdunit garbage collector to free registered object +func gc() -> void: + await _memory_observer.gc() + orphan_monitor_stop() diff --git a/addons/gdUnit4/src/core/execution/GdUnitMemoryObserver.gd b/addons/gdUnit4/src/core/execution/GdUnitMemoryObserver.gd new file mode 100644 index 0000000..69b15f8 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/GdUnitMemoryObserver.gd @@ -0,0 +1,131 @@ +## The memory watcher for objects that have been registered and are released when 'gc' is called. +class_name GdUnitMemoryObserver +extends RefCounted + +const TAG_OBSERVE_INSTANCE := "GdUnit4_observe_instance_" +const TAG_AUTO_FREE = "GdUnit4_marked_auto_free" +const GdUnitTools = preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + + +var _store :Array[Variant] = [] +# enable for debugging purposes +var _is_stdout_verbose := false +const _show_debug := false + + +## Registration of an instance to be released when an execution phase is completed +func register_auto_free(obj :Variant) -> Variant: + if not is_instance_valid(obj): + return obj + # do not register on GDScriptNativeClass + if typeof(obj) == TYPE_OBJECT and (obj as Object).is_class("GDScriptNativeClass") : + return obj + #if obj is GDScript or obj is ScriptExtension: + # return obj + if obj is MainLoop: + push_error("GdUnit4: Avoid to add mainloop to auto_free queue %s" % obj) + return + if _is_stdout_verbose: + print_verbose("GdUnit4:gc():register auto_free(%s)" % obj) + # only register pure objects + if obj is GdUnitSceneRunner: + _store.push_back(obj) + else: + _store.append(obj) + _tag_object(obj) + return obj + + +# to disable instance guard when run into issues. +static func _is_instance_guard_enabled() -> bool: + return false + + +static func debug_observe(name :String, obj :Object, indent :int = 0) -> void: + if not _show_debug: + return + var script :GDScript= obj if obj is GDScript else obj.get_script() + if script: + var base_script :GDScript = script.get_base_script() + prints("".lpad(indent, " "), name, obj, obj.get_class(), "reference_count:", obj.get_reference_count() if obj is RefCounted else 0, "script:", script, script.resource_path) + if base_script: + debug_observe("+", base_script, indent+1) + else: + prints(name, obj, obj.get_class(), obj.get_name()) + + +static func guard_instance(obj :Object) -> Object: + if not _is_instance_guard_enabled(): + return + var tag := TAG_OBSERVE_INSTANCE + str(abs(obj.get_instance_id())) + if Engine.has_meta(tag): + return + debug_observe("Gard on instance", obj) + Engine.set_meta(tag, obj) + return obj + + +static func unguard_instance(obj :Object, verbose := true) -> void: + if not _is_instance_guard_enabled(): + return + var tag := TAG_OBSERVE_INSTANCE + str(abs(obj.get_instance_id())) + if verbose: + debug_observe("unguard instance", obj) + if Engine.has_meta(tag): + Engine.remove_meta(tag) + + +static func gc_guarded_instance(name :String, instance :Object) -> void: + if not _is_instance_guard_enabled(): + return + await Engine.get_main_loop().process_frame + unguard_instance(instance, false) + if is_instance_valid(instance) and instance is RefCounted: + # finally do this very hacky stuff + # we need to manually unreferece to avoid leaked scripts + # but still leaked GDScriptFunctionState exists + #var script :GDScript = instance.get_script() + #if script: + # var base_script :GDScript = script.get_base_script() + # if base_script: + # base_script.unreference() + debug_observe(name, instance) + instance.unreference() + await Engine.get_main_loop().process_frame + + +static func gc_on_guarded_instances() -> void: + if not _is_instance_guard_enabled(): + return + for tag in Engine.get_meta_list(): + if tag.begins_with(TAG_OBSERVE_INSTANCE): + var instance :Object = Engine.get_meta(tag) + await gc_guarded_instance("Leaked instance detected:", instance) + await GdUnitTools.free_instance(instance, false) + + +# store the object into global store aswell to be verified by 'is_marked_auto_free' +func _tag_object(obj :Variant) -> void: + var tagged_object := Engine.get_meta(TAG_AUTO_FREE, []) as Array + tagged_object.append(obj) + Engine.set_meta(TAG_AUTO_FREE, tagged_object) + + +## Runs over all registered objects and releases them +func gc() -> void: + if _store.is_empty(): + return + # give engine time to free objects to process objects marked by queue_free() + await Engine.get_main_loop().process_frame + if _is_stdout_verbose: + print_verbose("GdUnit4:gc():running", " freeing %d objects .." % _store.size()) + var tagged_objects := Engine.get_meta(TAG_AUTO_FREE, []) as Array + while not _store.is_empty(): + var value :Variant = _store.pop_front() + tagged_objects.erase(value) + await GdUnitTools.free_instance(value, _is_stdout_verbose) + + +## Checks whether the specified object is registered for automatic release +static func is_marked_auto_free(obj :Object) -> bool: + return Engine.get_meta(TAG_AUTO_FREE, []).has(obj) diff --git a/addons/gdUnit4/src/core/execution/GdUnitTestReportCollector.gd b/addons/gdUnit4/src/core/execution/GdUnitTestReportCollector.gd new file mode 100644 index 0000000..8484f0d --- /dev/null +++ b/addons/gdUnit4/src/core/execution/GdUnitTestReportCollector.gd @@ -0,0 +1,70 @@ +# Collects all reports seperated as warnings, failures and errors +class_name GdUnitTestReportCollector +extends RefCounted + + +var _execution_context_id :int +var _reports :Array[GdUnitReport] = [] + + +static func __filter_is_error(report :GdUnitReport) -> bool: + return report.is_error() + + +static func __filter_is_failure(report :GdUnitReport) -> bool: + return report.is_failure() + + +static func __filter_is_warning(report :GdUnitReport) -> bool: + return report.is_warning() + + +static func __filter_is_skipped(report :GdUnitReport) -> bool: + return report.is_skipped() + + +func _init(execution_context_id :int) -> void: + _execution_context_id = execution_context_id + GdUnitSignals.instance().gdunit_report.connect(on_reports) + + +func count_failures() -> int: + return _reports.filter(__filter_is_failure).size() + + +func count_errors() -> int: + return _reports.filter(__filter_is_error).size() + + +func count_warnings() -> int: + return _reports.filter(__filter_is_warning).size() + + +func count_skipped() -> int: + return _reports.filter(__filter_is_skipped).size() + + +func has_failures() -> bool: + return _reports.any(__filter_is_failure) + + +func has_errors() -> bool: + return _reports.any(__filter_is_error) + + +func has_warnings() -> bool: + return _reports.any(__filter_is_warning) + + +func has_skipped() -> bool: + return _reports.any(__filter_is_skipped) + + +func reports() -> Array[GdUnitReport]: + return _reports + + +# Consumes reports emitted by tests +func on_reports(execution_context_id :int, report :GdUnitReport) -> void: + if execution_context_id == _execution_context_id: + _reports.append(report) diff --git a/addons/gdUnit4/src/core/execution/GdUnitTestSuiteExecutor.gd b/addons/gdUnit4/src/core/execution/GdUnitTestSuiteExecutor.gd new file mode 100644 index 0000000..c919469 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/GdUnitTestSuiteExecutor.gd @@ -0,0 +1,26 @@ +## The executor to run a test-suite +class_name GdUnitTestSuiteExecutor + + +# preload all asserts here +@warning_ignore("unused_private_class_variable") +var _assertions := GdUnitAssertions.new() +var _executeStage :IGdUnitExecutionStage = GdUnitTestSuiteExecutionStage.new() + + +func _init(debug_mode :bool = false) -> void: + _executeStage.set_debug_mode(debug_mode) + + +func execute(test_suite :GdUnitTestSuite) -> void: + var orphan_detection_enabled := GdUnitSettings.is_verbose_orphans() + if not orphan_detection_enabled: + prints("!!! Reporting orphan nodes is disabled. Please check GdUnit settings.") + + Engine.get_main_loop().root.call_deferred("add_child", test_suite) + await Engine.get_main_loop().process_frame + await _executeStage.execute(GdUnitExecutionContext.of_test_suite(test_suite)) + + +func fail_fast(enabled :bool) -> void: + _executeStage.fail_fast(enabled) diff --git a/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseAfterStage.gd b/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseAfterStage.gd new file mode 100644 index 0000000..5069975 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseAfterStage.gd @@ -0,0 +1,100 @@ +## The test case shutdown hook implementation.[br] +## It executes the 'test_after()' block from the test-suite. +class_name GdUnitTestCaseAfterStage +extends IGdUnitExecutionStage + + +var _test_name :StringName = "" +var _call_stage :bool + + +func _init(call_stage := true) -> void: + _call_stage = call_stage + + +func _execute(context :GdUnitExecutionContext) -> void: + var test_suite := context.test_suite + if _call_stage: + @warning_ignore("redundant_await") + await test_suite.after_test() + # unreference last used assert form the test to prevent memory leaks + GdUnitThreadManager.get_current_context().set_assert(null) + await context.gc() + await context.error_monitor_stop() + if context.test_case.is_skipped(): + fire_test_skipped(context) + else: + fire_test_ended(context) + if is_instance_valid(context.test_case): + context.test_case.dispose() + + +func set_test_name(test_name :StringName) -> void: + _test_name = test_name + + +func fire_test_ended(context :GdUnitExecutionContext) -> void: + var test_suite := context.test_suite + var test_name := context._test_case_name if _test_name.is_empty() else _test_name + var reports := collect_reports(context) + var orphans := collect_orphans(context, reports) + + fire_event(GdUnitEvent.new()\ + .test_after(test_suite.get_script().resource_path, test_suite.get_name(), test_name, context.build_report_statistics(orphans), reports)) + + +func collect_orphans(context :GdUnitExecutionContext, reports :Array[GdUnitReport]) -> int: + var orphans := 0 + if not context._sub_context.is_empty(): + orphans += add_orphan_report_test(context._sub_context[0], reports) + orphans += add_orphan_report_teststage(context, reports) + return orphans + + +func collect_reports(context :GdUnitExecutionContext) -> Array[GdUnitReport]: + var reports := context.reports() + var test_case := context.test_case + if test_case.is_interupted() and not test_case.is_expect_interupted() and test_case.report() != null: + reports.push_back(test_case.report()) + # we combine the reports of test_before(), test_after() and test() to be reported by `fire_test_ended` + if not context._sub_context.is_empty(): + reports.append_array(context._sub_context[0].reports()) + # needs finally to clean the test reports to avoid counting twice + context._sub_context[0].reports().clear() + return reports + + +func add_orphan_report_test(context :GdUnitExecutionContext, reports :Array[GdUnitReport]) -> int: + var orphans := context.count_orphans() + if orphans > 0: + reports.push_front(GdUnitReport.new()\ + .create(GdUnitReport.WARN, context.test_case.line_number(), GdAssertMessages.orphan_detected_on_test(orphans))) + return orphans + + +func add_orphan_report_teststage(context :GdUnitExecutionContext, reports :Array[GdUnitReport]) -> int: + var orphans := context.count_orphans() + if orphans > 0: + reports.push_front(GdUnitReport.new()\ + .create(GdUnitReport.WARN, context.test_case.line_number(), GdAssertMessages.orphan_detected_on_test_setup(orphans))) + return orphans + + +func fire_test_skipped(context :GdUnitExecutionContext) -> void: + var test_suite := context.test_suite + var test_case := context.test_case + var test_case_name := context._test_case_name if _test_name.is_empty() else _test_name + var statistics := { + GdUnitEvent.ORPHAN_NODES: 0, + GdUnitEvent.ELAPSED_TIME: 0, + GdUnitEvent.WARNINGS: false, + GdUnitEvent.ERRORS: false, + GdUnitEvent.ERROR_COUNT: 0, + GdUnitEvent.FAILED: false, + GdUnitEvent.FAILED_COUNT: 0, + GdUnitEvent.SKIPPED: true, + GdUnitEvent.SKIPPED_COUNT: 1, + } + var report := GdUnitReport.new().create(GdUnitReport.SKIPPED, test_case.line_number(), GdAssertMessages.test_skipped(test_case.skip_info())) + fire_event(GdUnitEvent.new()\ + .test_after(test_suite.get_script().resource_path, test_suite.get_name(), test_case_name, statistics, [report])) diff --git a/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseBeforeStage.gd b/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseBeforeStage.gd new file mode 100644 index 0000000..ebbd6d5 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseBeforeStage.gd @@ -0,0 +1,29 @@ +## The test case startup hook implementation.[br] +## It executes the 'test_before()' block from the test-suite. +class_name GdUnitTestCaseBeforeStage +extends IGdUnitExecutionStage + + +var _test_name :StringName = "" +var _call_stage :bool + + +func _init(call_stage := true) -> void: + _call_stage = call_stage + + +func _execute(context :GdUnitExecutionContext) -> void: + var test_suite := context.test_suite + var test_case_name := context._test_case_name if _test_name.is_empty() else _test_name + + fire_event(GdUnitEvent.new()\ + .test_before(test_suite.get_script().resource_path, test_suite.get_name(), test_case_name)) + + if _call_stage: + @warning_ignore("redundant_await") + await test_suite.before_test() + context.error_monitor_start() + + +func set_test_name(test_name :StringName) -> void: + _test_name = test_name diff --git a/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseExecutionStage.gd b/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseExecutionStage.gd new file mode 100644 index 0000000..148d9af --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/GdUnitTestCaseExecutionStage.gd @@ -0,0 +1,31 @@ +## The test case execution stage.[br] +class_name GdUnitTestCaseExecutionStage +extends IGdUnitExecutionStage + + +var _stage_single_test :IGdUnitExecutionStage = GdUnitTestCaseSingleExecutionStage.new() +var _stage_fuzzer_test :IGdUnitExecutionStage = GdUnitTestCaseFuzzedExecutionStage.new() +var _stage_parameterized_test :IGdUnitExecutionStage= GdUnitTestCaseParameterizedExecutionStage.new() + + +## Executes the test case 'test_()'.[br] +## It executes synchronized following stages[br] +## -> test_before() [br] +## -> test_case() [br] +## -> test_after() [br] +@warning_ignore("redundant_await") +func _execute(context :GdUnitExecutionContext) -> void: + var test_case := context.test_case + if test_case.is_parameterized(): + await _stage_parameterized_test.execute(context) + elif test_case.is_fuzzed(): + await _stage_fuzzer_test.execute(context) + else: + await _stage_single_test.execute(context) + + +func set_debug_mode(debug_mode :bool = false) -> void: + super.set_debug_mode(debug_mode) + _stage_single_test.set_debug_mode(debug_mode) + _stage_fuzzer_test.set_debug_mode(debug_mode) + _stage_parameterized_test.set_debug_mode(debug_mode) diff --git a/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteAfterStage.gd b/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteAfterStage.gd new file mode 100644 index 0000000..a6de318 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteAfterStage.gd @@ -0,0 +1,28 @@ +## The test suite shutdown hook implementation.[br] +## It executes the 'after()' block from the test-suite. +class_name GdUnitTestSuiteAfterStage +extends IGdUnitExecutionStage + + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + + +func _execute(context :GdUnitExecutionContext) -> void: + var test_suite := context.test_suite + + @warning_ignore("redundant_await") + await test_suite.after() + # unreference last used assert form the test to prevent memory leaks + GdUnitThreadManager.get_current_context().set_assert(null) + await context.gc() + + var reports := context.reports() + var orphans := context.count_orphans() + if orphans > 0: + reports.push_front(GdUnitReport.new() \ + .create(GdUnitReport.WARN, 1, GdAssertMessages.orphan_detected_on_suite_setup(orphans))) + fire_event(GdUnitEvent.new().suite_after(test_suite.get_script().resource_path, test_suite.get_name(), context.build_report_statistics(orphans, false), reports)) + + GdUnitFileAccess.clear_tmp() + # Guard that checks if all doubled (spy/mock) objects are released + GdUnitClassDoubler.check_leaked_instances() diff --git a/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteBeforeStage.gd b/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteBeforeStage.gd new file mode 100644 index 0000000..2260edb --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteBeforeStage.gd @@ -0,0 +1,14 @@ +## The test suite startup hook implementation.[br] +## It executes the 'before()' block from the test-suite. +class_name GdUnitTestSuiteBeforeStage +extends IGdUnitExecutionStage + + +func _execute(context :GdUnitExecutionContext) -> void: + var test_suite := context.test_suite + + fire_event(GdUnitEvent.new()\ + .suite_before(test_suite.get_script().resource_path, test_suite.get_name(), test_suite.get_child_count())) + + @warning_ignore("redundant_await") + await test_suite.before() diff --git a/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteExecutionStage.gd b/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteExecutionStage.gd new file mode 100644 index 0000000..ba22391 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/GdUnitTestSuiteExecutionStage.gd @@ -0,0 +1,114 @@ +## The test suite main execution stage.[br] +class_name GdUnitTestSuiteExecutionStage +extends IGdUnitExecutionStage + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +var _stage_before :IGdUnitExecutionStage = GdUnitTestSuiteBeforeStage.new() +var _stage_after :IGdUnitExecutionStage = GdUnitTestSuiteAfterStage.new() +var _stage_test :IGdUnitExecutionStage = GdUnitTestCaseExecutionStage.new() +var _fail_fast := false + + +## Executes all tests of an test suite.[br] +## It executes synchronized following stages[br] +## -> before() [br] +## -> run all test cases [br] +## -> after() [br] +func _execute(context :GdUnitExecutionContext) -> void: + if context.test_suite.__is_skipped: + await fire_test_suite_skipped(context) + else: + GdUnitMemoryObserver.guard_instance(context.test_suite.__awaiter) + await _stage_before.execute(context) + for test_case_index in context.test_suite.get_child_count(): + # iterate only over test cases + var test_case := context.test_suite.get_child(test_case_index) as _TestCase + if not is_instance_valid(test_case): + continue + context.test_suite.set_active_test_case(test_case.get_name()) + await _stage_test.execute(GdUnitExecutionContext.of_test_case(context, test_case.get_name())) + # stop on first error or if fail fast is enabled + if _fail_fast and context.test_failed(): + break + if test_case.is_interupted(): + # it needs to go this hard way to kill the outstanding awaits of a test case when the test timed out + # we delete the current test suite where is execute the current test case to kill the function state + # and replace it by a clone without function state + context.test_suite = await clone_test_suite(context.test_suite) + await _stage_after.execute(context) + GdUnitMemoryObserver.unguard_instance(context.test_suite.__awaiter) + await Engine.get_main_loop().process_frame + context.test_suite.free() + context.dispose() + + +# clones a test suite and moves the test cases to new instance +func clone_test_suite(test_suite :GdUnitTestSuite) -> GdUnitTestSuite: + await Engine.get_main_loop().process_frame + dispose_timers(test_suite) + await GdUnitMemoryObserver.gc_guarded_instance("Manually free on awaiter", test_suite.__awaiter) + var parent := test_suite.get_parent() + var _test_suite := GdUnitTestSuite.new() + parent.remove_child(test_suite) + copy_properties(test_suite, _test_suite) + for child in test_suite.get_children(): + test_suite.remove_child(child) + _test_suite.add_child(child) + parent.add_child(_test_suite) + GdUnitMemoryObserver.guard_instance(_test_suite.__awaiter) + # finally free current test suite instance + test_suite.free() + await Engine.get_main_loop().process_frame + return _test_suite + + +func dispose_timers(test_suite :GdUnitTestSuite) -> void: + GdUnitTools.release_timers() + for child in test_suite.get_children(): + if child is Timer: + child.stop() + test_suite.remove_child(child) + child.free() + + +func copy_properties(source :Object, target :Object) -> void: + if not source is _TestCase and not source is GdUnitTestSuite: + return + for property in source.get_property_list(): + var property_name :String = property["name"] + if property_name == "__awaiter": + continue + target.set(property_name, source.get(property_name)) + + +func fire_test_suite_skipped(context :GdUnitExecutionContext) -> void: + var test_suite := context.test_suite + var skip_count := test_suite.get_child_count() + fire_event(GdUnitEvent.new()\ + .suite_before(test_suite.get_script().resource_path, test_suite.get_name(), skip_count)) + var statistics := { + GdUnitEvent.ORPHAN_NODES: 0, + GdUnitEvent.ELAPSED_TIME: 0, + GdUnitEvent.WARNINGS: false, + GdUnitEvent.ERRORS: false, + GdUnitEvent.ERROR_COUNT: 0, + GdUnitEvent.FAILED: false, + GdUnitEvent.FAILED_COUNT: 0, + GdUnitEvent.SKIPPED_COUNT: skip_count, + GdUnitEvent.SKIPPED: true + } + var report := GdUnitReport.new().create(GdUnitReport.SKIPPED, -1, GdAssertMessages.test_suite_skipped(test_suite.__skip_reason, skip_count)) + fire_event(GdUnitEvent.new().suite_after(test_suite.get_script().resource_path, test_suite.get_name(), statistics, [report])) + await Engine.get_main_loop().process_frame + + +func set_debug_mode(debug_mode :bool = false) -> void: + super.set_debug_mode(debug_mode) + _stage_before.set_debug_mode(debug_mode) + _stage_after.set_debug_mode(debug_mode) + _stage_test.set_debug_mode(debug_mode) + + +func fail_fast(enabled :bool) -> void: + _fail_fast = enabled diff --git a/addons/gdUnit4/src/core/execution/stages/IGdUnitExecutionStage.gd b/addons/gdUnit4/src/core/execution/stages/IGdUnitExecutionStage.gd new file mode 100644 index 0000000..0f6ae93 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/IGdUnitExecutionStage.gd @@ -0,0 +1,39 @@ +## The interface of execution stage.[br] +## An execution stage is defined as an encapsulated task that can execute 1-n substages covered by its own execution context.[br] +## Execution stage are always called synchronously. +class_name IGdUnitExecutionStage +extends RefCounted + +var _debug_mode := false + + +## Executes synchronized the implemented stage in its own execution context.[br] +## example:[br] +## [codeblock] +## # waits for 100ms +## await MyExecutionStage.new().execute() +## [/codeblock][br] +func execute(context :GdUnitExecutionContext) -> void: + context.set_active() + @warning_ignore("redundant_await") + await _execute(context) + + +## Sends the event to registered listeners +func fire_event(event :GdUnitEvent) -> void: + if _debug_mode: + GdUnitSignals.instance().gdunit_event_debug.emit(event) + else: + GdUnitSignals.instance().gdunit_event.emit(event) + + +## Internal testing stuff.[br] +## Sets the executor into debug mode to emit `GdUnitEvent` via signal `gdunit_event_debug` +func set_debug_mode(debug_mode :bool) -> void: + _debug_mode = debug_mode + + +## The execution phase to be carried out. +func _execute(_context :GdUnitExecutionContext) -> void: + @warning_ignore("assert_always_false") + assert(false, "The execution stage is not implemented") diff --git a/addons/gdUnit4/src/core/execution/stages/fuzzed/GdUnitTestCaseFuzzedExecutionStage.gd b/addons/gdUnit4/src/core/execution/stages/fuzzed/GdUnitTestCaseFuzzedExecutionStage.gd new file mode 100644 index 0000000..d438b57 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/fuzzed/GdUnitTestCaseFuzzedExecutionStage.gd @@ -0,0 +1,21 @@ +## The test case execution stage.[br] +class_name GdUnitTestCaseFuzzedExecutionStage +extends IGdUnitExecutionStage + +var _stage_before :IGdUnitExecutionStage = GdUnitTestCaseBeforeStage.new(false) +var _stage_after :IGdUnitExecutionStage = GdUnitTestCaseAfterStage.new(false) +var _stage_test :IGdUnitExecutionStage = GdUnitTestCaseFuzzedTestStage.new() + + +func _execute(context :GdUnitExecutionContext) -> void: + await _stage_before.execute(context) + if not context.test_case.is_skipped(): + await _stage_test.execute(GdUnitExecutionContext.of(context)) + await _stage_after.execute(context) + + +func set_debug_mode(debug_mode :bool = false) -> void: + super.set_debug_mode(debug_mode) + _stage_before.set_debug_mode(debug_mode) + _stage_after.set_debug_mode(debug_mode) + _stage_test.set_debug_mode(debug_mode) diff --git a/addons/gdUnit4/src/core/execution/stages/fuzzed/GdUnitTestCaseFuzzedTestStage.gd b/addons/gdUnit4/src/core/execution/stages/fuzzed/GdUnitTestCaseFuzzedTestStage.gd new file mode 100644 index 0000000..e6d9852 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/fuzzed/GdUnitTestCaseFuzzedTestStage.gd @@ -0,0 +1,53 @@ +## The fuzzed test case execution stage.[br] +class_name GdUnitTestCaseFuzzedTestStage +extends IGdUnitExecutionStage + +var _expression_runner := GdUnitExpressionRunner.new() + + +## Executes a test case with given fuzzers 'test_()' iterative.[br] +## It executes synchronized following stages[br] +## -> test_case() [br] +func _execute(context :GdUnitExecutionContext) -> void: + var test_suite := context.test_suite + var test_case := context.test_case + var fuzzers := create_fuzzers(test_suite, test_case) + + # guard on fuzzers + for fuzzer in fuzzers: + GdUnitMemoryObserver.guard_instance(fuzzer) + + for iteration in test_case.iterations(): + @warning_ignore("redundant_await") + await test_suite.before_test() + await test_case.execute(fuzzers, iteration) + @warning_ignore("redundant_await") + await test_suite.after_test() + if test_case.is_interupted(): + break + # interrupt at first failure + var reports := context.reports() + if not reports.is_empty(): + var report :GdUnitReport = reports.pop_front() + reports.append(GdUnitReport.new() \ + .create(GdUnitReport.FAILURE, report.line_number(), GdAssertMessages.fuzzer_interuped(iteration, report.message()))) + break + await context.gc() + + # unguard on fuzzers + if not test_case.is_interupted(): + for fuzzer in fuzzers: + GdUnitMemoryObserver.unguard_instance(fuzzer) + + +func create_fuzzers(test_suite :GdUnitTestSuite, test_case :_TestCase) -> Array[Fuzzer]: + if not test_case.is_fuzzed(): + return Array() + test_case.generate_seed() + var fuzzers :Array[Fuzzer] = [] + for fuzzer_arg in test_case.fuzzer_arguments(): + var fuzzer := _expression_runner.to_fuzzer(test_suite.get_script(), fuzzer_arg.value_as_string()) + fuzzer._iteration_index = 0 + fuzzer._iteration_limit = test_case.iterations() + fuzzers.append(fuzzer) + return fuzzers diff --git a/addons/gdUnit4/src/core/execution/stages/parameterized/GdUnitTestCaseParameterizedExecutionStage.gd b/addons/gdUnit4/src/core/execution/stages/parameterized/GdUnitTestCaseParameterizedExecutionStage.gd new file mode 100644 index 0000000..eb0dc27 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/parameterized/GdUnitTestCaseParameterizedExecutionStage.gd @@ -0,0 +1,22 @@ +## The test case execution stage.[br] +class_name GdUnitTestCaseParameterizedExecutionStage +extends IGdUnitExecutionStage + + +var _stage_before :IGdUnitExecutionStage = GdUnitTestCaseBeforeStage.new(false) +var _stage_after :IGdUnitExecutionStage = GdUnitTestCaseAfterStage.new(false) +var _stage_test :IGdUnitExecutionStage = GdUnitTestCaseParamaterizedTestStage.new() + + +func _execute(context :GdUnitExecutionContext) -> void: + await _stage_before.execute(context) + if not context.test_case.is_skipped(): + await _stage_test.execute(GdUnitExecutionContext.of(context)) + await _stage_after.execute(context) + + +func set_debug_mode(debug_mode :bool = false) -> void: + super.set_debug_mode(debug_mode) + _stage_before.set_debug_mode(debug_mode) + _stage_after.set_debug_mode(debug_mode) + _stage_test.set_debug_mode(debug_mode) diff --git a/addons/gdUnit4/src/core/execution/stages/parameterized/GdUnitTestCaseParameterizedTestStage.gd b/addons/gdUnit4/src/core/execution/stages/parameterized/GdUnitTestCaseParameterizedTestStage.gd new file mode 100644 index 0000000..99d616e --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/parameterized/GdUnitTestCaseParameterizedTestStage.gd @@ -0,0 +1,76 @@ +## The parameterized test case execution stage.[br] +class_name GdUnitTestCaseParamaterizedTestStage +extends IGdUnitExecutionStage + +var _stage_before: IGdUnitExecutionStage = GdUnitTestCaseBeforeStage.new() +var _stage_after: IGdUnitExecutionStage = GdUnitTestCaseAfterStage.new() + + +## Executes a parameterized test case.[br] +## It executes synchronized following stages[br] +## -> test_case( ) [br] +func _execute(context: GdUnitExecutionContext) -> void: + var test_case := context.test_case + var test_parameter_index := test_case.test_parameter_index() + var is_fail := false + var is_error := false + var failing_index := 0 + var parameter_set_resolver := test_case.parameter_set_resolver() + var test_names := parameter_set_resolver.build_test_case_names(test_case) + + # if all parameter sets has static values we can preload and reuse it for better performance + var parameter_sets :Array = [] + if parameter_set_resolver.is_parameter_sets_static(): + parameter_sets = parameter_set_resolver.load_parameter_sets(test_case, true) + + for parameter_set_index in test_names.size(): + # is test_parameter_index is set, we run this parameterized test only + if test_parameter_index != -1 and test_parameter_index != parameter_set_index: + continue + var current_test_case_name := test_names[parameter_set_index] + _stage_before.set_test_name(current_test_case_name) + _stage_after.set_test_name(current_test_case_name) + + var test_context := GdUnitExecutionContext.of(context) + await _stage_before.execute(test_context) + var current_parameter_set :Array + if parameter_set_resolver.is_parameter_set_static(parameter_set_index): + current_parameter_set = parameter_sets[parameter_set_index] + else: + current_parameter_set = _load_parameter_set(context, parameter_set_index) + if not test_case.is_interupted(): + await test_case.execute_paramaterized(current_parameter_set) + await _stage_after.execute(test_context) + # we need to clean up the reports here so they are not reported twice + is_fail = is_fail or test_context.count_failures(false) > 0 + is_error = is_error or test_context.count_errors(false) > 0 + failing_index = parameter_set_index - 1 + test_context.reports().clear() + if test_case.is_interupted(): + break + # add report to parent execution context if failed or an error is found + if is_fail: + context.reports().append(GdUnitReport.new().create(GdUnitReport.FAILURE, test_case.line_number(), "Test failed at parameterized index %d." % failing_index)) + if is_error: + context.reports().append(GdUnitReport.new().create(GdUnitReport.ABORT, test_case.line_number(), "Test aborted at parameterized index %d." % failing_index)) + await context.gc() + + +func _load_parameter_set(context: GdUnitExecutionContext, parameter_set_index: int) -> Array: + var test_case := context.test_case + var test_suite := context.test_suite + # we need to exchange temporary for parameter resolving the execution context + # this is necessary because of possible usage of `auto_free` and needs to run in the parent execution context + var save_execution_context: GdUnitExecutionContext = test_suite.__execution_context + context.set_active() + var parameters := test_case.load_parameter_sets() + # restore the original execution context and restart the orphan monitor to get new instances into account + save_execution_context.set_active() + save_execution_context.orphan_monitor_start() + return parameters[parameter_set_index] + + +func set_debug_mode(debug_mode: bool=false) -> void: + super.set_debug_mode(debug_mode) + _stage_before.set_debug_mode(debug_mode) + _stage_after.set_debug_mode(debug_mode) diff --git a/addons/gdUnit4/src/core/execution/stages/single/GdUnitTestCaseSingleExecutionStage.gd b/addons/gdUnit4/src/core/execution/stages/single/GdUnitTestCaseSingleExecutionStage.gd new file mode 100644 index 0000000..b54d6a5 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/single/GdUnitTestCaseSingleExecutionStage.gd @@ -0,0 +1,22 @@ +## The test case execution stage.[br] +class_name GdUnitTestCaseSingleExecutionStage +extends IGdUnitExecutionStage + + +var _stage_before :IGdUnitExecutionStage = GdUnitTestCaseBeforeStage.new() +var _stage_after :IGdUnitExecutionStage = GdUnitTestCaseAfterStage.new() +var _stage_test :IGdUnitExecutionStage = GdUnitTestCaseSingleTestStage.new() + + +func _execute(context :GdUnitExecutionContext) -> void: + await _stage_before.execute(context) + if not context.test_case.is_skipped(): + await _stage_test.execute(GdUnitExecutionContext.of(context)) + await _stage_after.execute(context) + + +func set_debug_mode(debug_mode :bool = false) -> void: + super.set_debug_mode(debug_mode) + _stage_before.set_debug_mode(debug_mode) + _stage_after.set_debug_mode(debug_mode) + _stage_test.set_debug_mode(debug_mode) diff --git a/addons/gdUnit4/src/core/execution/stages/single/GdUnitTestCaseSingleTestStage.gd b/addons/gdUnit4/src/core/execution/stages/single/GdUnitTestCaseSingleTestStage.gd new file mode 100644 index 0000000..6882fe2 --- /dev/null +++ b/addons/gdUnit4/src/core/execution/stages/single/GdUnitTestCaseSingleTestStage.gd @@ -0,0 +1,11 @@ +## The single test case execution stage.[br] +class_name GdUnitTestCaseSingleTestStage +extends IGdUnitExecutionStage + + +## Executes a single test case 'test_()'.[br] +## It executes synchronized following stages[br] +## -> test_case() [br] +func _execute(context :GdUnitExecutionContext) -> void: + await context.test_case.execute() + await context.gc() diff --git a/addons/gdUnit4/src/core/parse/GdClassDescriptor.gd b/addons/gdUnit4/src/core/parse/GdClassDescriptor.gd new file mode 100644 index 0000000..87b1aeb --- /dev/null +++ b/addons/gdUnit4/src/core/parse/GdClassDescriptor.gd @@ -0,0 +1,34 @@ +class_name GdClassDescriptor +extends RefCounted + + +var _name :String +var _parent :GdClassDescriptor = null +var _is_inner_class :bool +var _functions :Array[GdFunctionDescriptor] + + +func _init(p_name :String, p_is_inner_class :bool, p_functions :Array[GdFunctionDescriptor]) -> void: + _name = p_name + _is_inner_class = p_is_inner_class + _functions = p_functions + + +func set_parent_clazz(p_parent :GdClassDescriptor) -> void: + _parent = p_parent + + +func name() -> String: + return _name + + +func parent() -> GdClassDescriptor: + return _parent + + +func is_inner_class() -> bool: + return _is_inner_class + + +func functions() -> Array[GdFunctionDescriptor]: + return _functions diff --git a/addons/gdUnit4/src/core/parse/GdDefaultValueDecoder.gd b/addons/gdUnit4/src/core/parse/GdDefaultValueDecoder.gd new file mode 100644 index 0000000..b504530 --- /dev/null +++ b/addons/gdUnit4/src/core/parse/GdDefaultValueDecoder.gd @@ -0,0 +1,255 @@ +# holds all decodings for default values +class_name GdDefaultValueDecoder +extends GdUnitSingleton + + +@warning_ignore("unused_parameter") +var _decoders := { + TYPE_NIL: func(value :Variant) -> String: return "null", + TYPE_STRING: func(value :Variant) -> String: return '"%s"' % value, + TYPE_STRING_NAME: _on_type_StringName, + TYPE_BOOL: func(value :Variant) -> String: return str(value).to_lower(), + TYPE_FLOAT: func(value :Variant) -> String: return '%f' % value, + TYPE_COLOR: _on_type_Color, + TYPE_ARRAY: _on_type_Array.bind(TYPE_ARRAY), + TYPE_PACKED_BYTE_ARRAY: _on_type_Array.bind(TYPE_PACKED_BYTE_ARRAY), + TYPE_PACKED_STRING_ARRAY: _on_type_Array.bind(TYPE_PACKED_STRING_ARRAY), + TYPE_PACKED_FLOAT32_ARRAY: _on_type_Array.bind(TYPE_PACKED_FLOAT32_ARRAY), + TYPE_PACKED_FLOAT64_ARRAY: _on_type_Array.bind(TYPE_PACKED_FLOAT64_ARRAY), + TYPE_PACKED_INT32_ARRAY: _on_type_Array.bind(TYPE_PACKED_INT32_ARRAY), + TYPE_PACKED_INT64_ARRAY: _on_type_Array.bind(TYPE_PACKED_INT64_ARRAY), + TYPE_PACKED_COLOR_ARRAY: _on_type_Array.bind(TYPE_PACKED_COLOR_ARRAY), + TYPE_PACKED_VECTOR2_ARRAY: _on_type_Array.bind(TYPE_PACKED_VECTOR2_ARRAY), + TYPE_PACKED_VECTOR3_ARRAY: _on_type_Array.bind(TYPE_PACKED_VECTOR3_ARRAY), + TYPE_DICTIONARY: _on_type_Dictionary, + TYPE_RID: _on_type_RID, + TYPE_NODE_PATH: _on_type_NodePath, + TYPE_VECTOR2: _on_type_Vector.bind(TYPE_VECTOR2), + TYPE_VECTOR2I: _on_type_Vector.bind(TYPE_VECTOR2I), + TYPE_VECTOR3: _on_type_Vector.bind(TYPE_VECTOR3), + TYPE_VECTOR3I: _on_type_Vector.bind(TYPE_VECTOR3I), + TYPE_VECTOR4: _on_type_Vector.bind(TYPE_VECTOR4), + TYPE_VECTOR4I: _on_type_Vector.bind(TYPE_VECTOR4I), + TYPE_RECT2: _on_type_Rect2, + TYPE_RECT2I: _on_type_Rect2i, + TYPE_PLANE: _on_type_Plane, + TYPE_QUATERNION: _on_type_Quaternion, + TYPE_AABB: _on_type_AABB, + TYPE_BASIS: _on_type_Basis, + TYPE_CALLABLE: _on_type_Callable, + TYPE_SIGNAL: _on_type_Signal, + TYPE_TRANSFORM2D: _on_type_Transform2D, + TYPE_TRANSFORM3D: _on_type_Transform3D, + TYPE_PROJECTION: _on_type_Projection, + TYPE_OBJECT: _on_type_Object +} + +static func _regex(pattern :String) -> RegEx: + var regex := RegEx.new() + var err := regex.compile(pattern) + if err != OK: + push_error("error '%s' checked pattern '%s'" % [err, pattern]) + return null + return regex + + +func get_decoder(type :int) -> Callable: + return _decoders.get(type, func(value :Variant) -> String: return '%s' % value) + + +func _on_type_StringName(value :StringName) -> String: + if value.is_empty(): + return 'StringName()' + return 'StringName("%s")' % value + + +func _on_type_Object(value :Object, type :int) -> String: + return str(value) + + +func _on_type_Color(color :Color) -> String: + if color == Color.BLACK: + return "Color()" + return "Color%s" % color + + +func _on_type_NodePath(path :NodePath) -> String: + if path.is_empty(): + return 'NodePath()' + return 'NodePath("%s")' % path + + +func _on_type_Callable(cb :Callable) -> String: + return 'Callable()' + + +func _on_type_Signal(s :Signal) -> String: + return 'Signal()' + + +func _on_type_Dictionary(dict :Dictionary) -> String: + if dict.is_empty(): + return '{}' + return str(dict) + + +func _on_type_Array(value :Variant, type :int) -> String: + match type: + TYPE_ARRAY: + return str(value) + + TYPE_PACKED_COLOR_ARRAY: + var colors := PackedStringArray() + for color in value as PackedColorArray: + colors.append(_on_type_Color(color)) + if colors.is_empty(): + return "PackedColorArray()" + return "PackedColorArray([%s])" % ", ".join(colors) + + TYPE_PACKED_VECTOR2_ARRAY: + var vectors := PackedStringArray() + for vector in value as PackedVector2Array: + vectors.append(_on_type_Vector(vector, TYPE_VECTOR2)) + if vectors.is_empty(): + return "PackedVector2Array()" + return "PackedVector2Array([%s])" % ", ".join(vectors) + + TYPE_PACKED_VECTOR3_ARRAY: + var vectors := PackedStringArray() + for vector in value as PackedVector3Array: + vectors.append(_on_type_Vector(vector, TYPE_VECTOR3)) + if vectors.is_empty(): + return "PackedVector3Array()" + return "PackedVector3Array([%s])" % ", ".join(vectors) + + TYPE_PACKED_STRING_ARRAY: + var values := PackedStringArray() + for v in value as PackedStringArray: + values.append('"%s"' % v) + if values.is_empty(): + return "PackedStringArray()" + return "PackedStringArray([%s])" % ", ".join(values) + + TYPE_PACKED_BYTE_ARRAY,\ + TYPE_PACKED_FLOAT32_ARRAY,\ + TYPE_PACKED_FLOAT64_ARRAY,\ + TYPE_PACKED_INT32_ARRAY,\ + TYPE_PACKED_INT64_ARRAY: + var vectors := PackedStringArray() + for vector :Variant in value as Array: + vectors.append(str(vector)) + if vectors.is_empty(): + return GdObjects.type_as_string(type) + "()" + return "%s([%s])" % [GdObjects.type_as_string(type), ", ".join(vectors)] + return "unknown array type %d" % type + + +func _on_type_Vector(value :Variant, type :int) -> String: + match type: + TYPE_VECTOR2: + if value == Vector2(): + return "Vector2()" + return "Vector2%s" % value + TYPE_VECTOR2I: + if value == Vector2i(): + return "Vector2i()" + return "Vector2i%s" % value + TYPE_VECTOR3: + if value == Vector3(): + return "Vector3()" + return "Vector3%s" % value + TYPE_VECTOR3I: + if value == Vector3i(): + return "Vector3i()" + return "Vector3i%s" % value + TYPE_VECTOR4: + if value == Vector4(): + return "Vector4()" + return "Vector4%s" % value + TYPE_VECTOR4I: + if value == Vector4i(): + return "Vector4i()" + return "Vector4i%s" % value + return "unknown vector type %d" % type + + +func _on_type_Transform2D(transform :Transform2D) -> String: + if transform == Transform2D(): + return "Transform2D()" + return "Transform2D(Vector2%s, Vector2%s, Vector2%s)" % [transform.x, transform.y, transform.origin] + + +func _on_type_Transform3D(transform :Transform3D) -> String: + if transform == Transform3D(): + return "Transform3D()" + return "Transform3D(Vector3%s, Vector3%s, Vector3%s, Vector3%s)" % [transform.basis.x, transform.basis.y, transform.basis.z, transform.origin] + + +func _on_type_Projection(projection :Projection) -> String: + return "Projection(Vector4%s, Vector4%s, Vector4%s, Vector4%s)" % [projection.x, projection.y, projection.z, projection.w] + + +@warning_ignore("unused_parameter") +func _on_type_RID(value :RID) -> String: + return "RID()" + + +func _on_type_Rect2(rect :Rect2) -> String: + if rect == Rect2(): + return "Rect2()" + return "Rect2(Vector2%s, Vector2%s)" % [rect.position, rect.size] + + +func _on_type_Rect2i(rect :Variant) -> String: + if rect == Rect2i(): + return "Rect2i()" + return "Rect2i(Vector2i%s, Vector2i%s)" % [rect.position, rect.size] + + +func _on_type_Plane(plane :Plane) -> String: + if plane == Plane(): + return "Plane()" + return "Plane(%d, %d, %d, %d)" % [plane.x, plane.y, plane.z, plane.d] + + +func _on_type_Quaternion(quaternion :Quaternion) -> String: + if quaternion == Quaternion(): + return "Quaternion()" + return "Quaternion(%d, %d, %d, %d)" % [quaternion.x, quaternion.y, quaternion.z, quaternion.w] + + +func _on_type_AABB(aabb :AABB) -> String: + if aabb == AABB(): + return "AABB()" + return "AABB(Vector3%s, Vector3%s)" % [aabb.position, aabb.size] + + +func _on_type_Basis(basis :Basis) -> String: + if basis == Basis(): + return "Basis()" + return "Basis(Vector3%s, Vector3%s, Vector3%s)" % [basis.x, basis.y, basis.z] + + +static func decode(value :Variant) -> String: + var type := typeof(value) + if GdArrayTools.is_type_array(type) and value.is_empty(): + return "" + var decoder :Callable = instance("GdUnitDefaultValueDecoders", func() -> GdDefaultValueDecoder: return GdDefaultValueDecoder.new()).get_decoder(type) + if decoder == null: + push_error("No value decoder registered for type '%d'! Please open a Bug issue at 'https://github.com/MikeSchulze/gdUnit4/issues/new/choose'." % type) + return "null" + if type == TYPE_OBJECT: + return decoder.call(value, type) + return decoder.call(value) + + +static func decode_typed(type :int, value :Variant) -> String: + if value == null: + return "null" + var decoder :Callable = instance("GdUnitDefaultValueDecoders", func() -> GdDefaultValueDecoder: return GdDefaultValueDecoder.new()).get_decoder(type) + if decoder == null: + push_error("No value decoder registered for type '%d'! Please open a Bug issue at 'https://github.com/MikeSchulze/gdUnit4/issues/new/choose'." % type) + return "null" + if type == TYPE_OBJECT: + return decoder.call(value, type) + return decoder.call(value) diff --git a/addons/gdUnit4/src/core/parse/GdFunctionArgument.gd b/addons/gdUnit4/src/core/parse/GdFunctionArgument.gd new file mode 100644 index 0000000..5789186 --- /dev/null +++ b/addons/gdUnit4/src/core/parse/GdFunctionArgument.gd @@ -0,0 +1,114 @@ +class_name GdFunctionArgument +extends RefCounted + + +var _cleanup_leading_spaces := RegEx.create_from_string("(?m)^[ \t]+") +var _fix_comma_space := RegEx.create_from_string(""", {0,}\t{0,}(?=(?:[^"]*"[^"]*")*[^"]*$)(?!\\s)""") +var _name: String +var _type: int +var _default_value :Variant +var _parameter_sets :PackedStringArray = [] + +const UNDEFINED :Variant = "<-NO_ARG->" +const ARG_PARAMETERIZED_TEST := "test_parameters" + + +func _init(p_name :String, p_type :int = TYPE_MAX, value :Variant = UNDEFINED) -> void: + _name = p_name + _type = p_type + if p_name == ARG_PARAMETERIZED_TEST: + _parameter_sets = _parse_parameter_set(value) + _default_value = value + + +func name() -> String: + return _name + + +func default() -> Variant: + return GodotVersionFixures.convert(_default_value, _type) + + +func value_as_string() -> String: + if has_default(): + return str(_default_value) + return "" + + +func type() -> int: + return _type + + +func has_default() -> bool: + return not is_same(_default_value, UNDEFINED) + + +func is_parameter_set() -> bool: + return _name == ARG_PARAMETERIZED_TEST + + +func parameter_sets() -> PackedStringArray: + return _parameter_sets + + +static func get_parameter_set(parameters :Array[GdFunctionArgument]) -> GdFunctionArgument: + for current in parameters: + if current != null and current.is_parameter_set(): + return current + return null + + +func _to_string() -> String: + var s := _name + if _type != TYPE_MAX: + s += ":" + GdObjects.type_as_string(_type) + if _default_value != UNDEFINED: + s += "=" + str(_default_value) + return s + + +func _parse_parameter_set(input :String) -> PackedStringArray: + if not input.contains("["): + return [] + + input = _cleanup_leading_spaces.sub(input, "", true) + input = input.replace("\n", "").strip_edges().trim_prefix("[").trim_suffix("]").trim_prefix("]") + var single_quote := false + var double_quote := false + var array_end := 0 + var current_index := 0 + var output :PackedStringArray = [] + var buf := input.to_utf8_buffer() + var collected_characters: = PackedByteArray() + var matched :bool = false + + for c in buf: + current_index += 1 + matched = current_index == buf.size() + collected_characters.push_back(c) + + match c: + # ' ': ignore spaces between array elements + 32: if array_end == 0 and (not double_quote and not single_quote): + collected_characters.remove_at(collected_characters.size()-1) + # ',': step over array element seperator ',' + 44: if array_end == 0: + matched = true + collected_characters.remove_at(collected_characters.size()-1) + # '`': + 39: single_quote = !single_quote + # '"': + 34: if not single_quote: double_quote = !double_quote + # '[' + 91: if not double_quote and not single_quote: array_end +=1 # counts array open + # ']' + 93: if not double_quote and not single_quote: array_end -=1 # counts array closed + + # if array closed than collect the element + if matched: + var parameters := _fix_comma_space.sub(collected_characters.get_string_from_utf8(), ", ", true) + if not parameters.is_empty(): + output.append(parameters) + collected_characters.clear() + matched = false + return output diff --git a/addons/gdUnit4/src/core/parse/GdFunctionDescriptor.gd b/addons/gdUnit4/src/core/parse/GdFunctionDescriptor.gd new file mode 100644 index 0000000..2633016 --- /dev/null +++ b/addons/gdUnit4/src/core/parse/GdFunctionDescriptor.gd @@ -0,0 +1,250 @@ +class_name GdFunctionDescriptor +extends RefCounted + +var _is_virtual :bool +var _is_static :bool +var _is_engine :bool +var _is_coroutine :bool +var _name :String +var _line_number :int +var _return_type :int +var _return_class :String +var _args : Array[GdFunctionArgument] +var _varargs :Array[GdFunctionArgument] + + +func _init(p_name :String, + p_line_number :int, + p_is_virtual :bool, + p_is_static :bool, + p_is_engine :bool, + p_return_type :int, + p_return_class :String, + p_args : Array[GdFunctionArgument], + p_varargs :Array[GdFunctionArgument] = []) -> void: + _name = p_name + _line_number = p_line_number + _return_type = p_return_type + _return_class = p_return_class + _is_virtual = p_is_virtual + _is_static = p_is_static + _is_engine = p_is_engine + _is_coroutine = false + _args = p_args + _varargs = p_varargs + + +func name() -> String: + return _name + + +func line_number() -> int: + return _line_number + + +func is_virtual() -> bool: + return _is_virtual + + +func is_static() -> bool: + return _is_static + + +func is_engine() -> bool: + return _is_engine + + +func is_vararg() -> bool: + return not _varargs.is_empty() + + +func is_coroutine() -> bool: + return _is_coroutine + + +func is_parameterized() -> bool: + for current in _args: + var arg :GdFunctionArgument = current + if arg.name() == GdFunctionArgument.ARG_PARAMETERIZED_TEST: + return true + return false + + +func is_private() -> bool: + return name().begins_with("_") and not is_virtual() + + +func return_type() -> Variant: + return _return_type + + +func return_type_as_string() -> String: + if (return_type() == TYPE_OBJECT or return_type() == GdObjects.TYPE_ENUM) and not _return_class.is_empty(): + return _return_class + return GdObjects.type_as_string(return_type()) + + +func args() -> Array[GdFunctionArgument]: + return _args + + +func varargs() -> Array[GdFunctionArgument]: + return _varargs + + +func typeless() -> String: + var func_signature := "" + if _return_type == TYPE_NIL: + func_signature = "func %s(%s) -> void:" % [name(), typeless_args()] + elif _return_type == GdObjects.TYPE_VARIANT: + func_signature = "func %s(%s) -> Variant:" % [name(), typeless_args()] + else: + func_signature = "func %s(%s) -> %s:" % [name(), typeless_args(), return_type_as_string()] + return "static " + func_signature if is_static() else func_signature + + +func typeless_args() -> String: + var collect := PackedStringArray() + for arg in args(): + if arg.has_default(): + collect.push_back( arg.name() + "=" + arg.value_as_string()) + else: + collect.push_back(arg.name()) + for arg in varargs(): + collect.push_back(arg.name() + "=" + arg.value_as_string()) + return ", ".join(collect) + + +func typed_args() -> String: + var collect := PackedStringArray() + for arg in args(): + collect.push_back(arg._to_string()) + for arg in varargs(): + collect.push_back(arg._to_string()) + return ", ".join(collect) + + +func _to_string() -> String: + var fsignature := "virtual " if is_virtual() else "" + if _return_type == TYPE_NIL: + return fsignature + "[Line:%s] func %s(%s):" % [line_number(), name(), typed_args()] + var func_template := fsignature + "[Line:%s] func %s(%s) -> %s:" + if is_static(): + func_template= "[Line:%s] static func %s(%s) -> %s:" + return func_template % [line_number(), name(), typed_args(), return_type_as_string()] + + +# extract function description given by Object.get_method_list() +static func extract_from(descriptor :Dictionary) -> GdFunctionDescriptor: + var function_flags :int = descriptor["flags"] + var is_virtual_ :bool = function_flags & METHOD_FLAG_VIRTUAL + var is_static_ :bool = function_flags & METHOD_FLAG_STATIC + var is_vararg_ :bool = function_flags & METHOD_FLAG_VARARG + #var is_const :bool = function_flags & METHOD_FLAG_CONST + #var is_core :bool = function_flags & METHOD_FLAG_OBJECT_CORE + #var is_default :bool = function_flags & METHOD_FLAGS_DEFAULT + #prints("is_virtual: ", is_virtual) + #prints("is_static: ", is_static) + #prints("is_const: ", is_const) + #prints("is_core: ", is_core) + #prints("is_default: ", is_default) + #prints("is_vararg: ", is_vararg) + return GdFunctionDescriptor.new( + descriptor["name"], + -1, + is_virtual_, + is_static_, + true, + _extract_return_type(descriptor["return"]), + descriptor["return"]["class_name"], + _extract_args(descriptor), + _build_varargs(is_vararg_) + ) + +# temporary exclude GlobalScope enums +const enum_fix := [ + "Side", + "Corner", + "Orientation", + "ClockDirection", + "HorizontalAlignment", + "VerticalAlignment", + "InlineAlignment", + "EulerOrder", + "Error", + "Key", + "MIDIMessage", + "MouseButton", + "MouseButtonMask", + "JoyButton", + "JoyAxis", + "PropertyHint", + "PropertyUsageFlags", + "MethodFlags", + "Variant.Type", + "Control.LayoutMode"] + + +static func _extract_return_type(return_info :Dictionary) -> Variant: + var type :int = return_info["type"] + var usage :int = return_info["usage"] + if type == TYPE_INT and usage & PROPERTY_USAGE_CLASS_IS_ENUM: + return GdObjects.TYPE_ENUM + if type == TYPE_NIL and usage & PROPERTY_USAGE_NIL_IS_VARIANT: + return GdObjects.TYPE_VARIANT + return type + + +static func _extract_args(descriptor :Dictionary) -> Array[GdFunctionArgument]: + var args_ :Array[GdFunctionArgument] = [] + var arguments :Array = descriptor["args"] + var defaults :Array = descriptor["default_args"] + # iterate backwards because the default values are stored from right to left + while not arguments.is_empty(): + var arg :Dictionary = arguments.pop_back() + var arg_name := _argument_name(arg) + var arg_type := _argument_type(arg) + var arg_default :Variant = GdFunctionArgument.UNDEFINED + if not defaults.is_empty(): + var default_value :Variant = defaults.pop_back() + arg_default = GdDefaultValueDecoder.decode_typed(arg_type, default_value) + args_.push_front(GdFunctionArgument.new(arg_name, arg_type, arg_default)) + return args_ + + +static func _build_varargs(p_is_vararg :bool) -> Array[GdFunctionArgument]: + var varargs_ :Array[GdFunctionArgument] = [] + if not p_is_vararg: + return varargs_ + # if function has vararg we need to handle this manually by adding 10 default arguments + var type := GdObjects.TYPE_VARARG + for index in 10: + varargs_.push_back(GdFunctionArgument.new("vararg%d_" % index, type, "\"%s\"" % GdObjects.TYPE_VARARG_PLACEHOLDER_VALUE)) + return varargs_ + + +static func _argument_name(arg :Dictionary) -> String: + # add suffix to the name to prevent clash with reserved names + return (arg["name"] + "_") as String + + +static func _argument_type(arg :Dictionary) -> int: + var type :int = arg["type"] + if type == TYPE_OBJECT: + if arg["class_name"] == "Node": + return GdObjects.TYPE_NODE + return type + + +static func _argument_type_as_string(arg :Dictionary) -> String: + var type := _argument_type(arg) + match type: + TYPE_NIL: + return "" + TYPE_OBJECT: + var clazz_name :String = arg["class_name"] + if not clazz_name.is_empty(): + return clazz_name + return "" + _: + return GdObjects.type_as_string(type) diff --git a/addons/gdUnit4/src/core/parse/GdScriptParser.gd b/addons/gdUnit4/src/core/parse/GdScriptParser.gd new file mode 100644 index 0000000..38468f3 --- /dev/null +++ b/addons/gdUnit4/src/core/parse/GdScriptParser.gd @@ -0,0 +1,807 @@ +class_name GdScriptParser +extends RefCounted + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +const ALLOWED_CHARACTERS := "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"" + +var TOKEN_NOT_MATCH := Token.new("") +var TOKEN_SPACE := SkippableToken.new(" ") +var TOKEN_TABULATOR := SkippableToken.new("\t") +var TOKEN_NEW_LINE := SkippableToken.new("\n") +var TOKEN_COMMENT := SkippableToken.new("#") +var TOKEN_CLASS_NAME := Token.new("class_name") +var TOKEN_INNER_CLASS := Token.new("class") +var TOKEN_EXTENDS := Token.new("extends") +var TOKEN_ENUM := Token.new("enum") +var TOKEN_FUNCTION_STATIC_DECLARATION := Token.new("staticfunc") +var TOKEN_FUNCTION_DECLARATION := Token.new("func") +var TOKEN_FUNCTION := Token.new(".") +var TOKEN_FUNCTION_RETURN_TYPE := Token.new("->") +var TOKEN_FUNCTION_END := Token.new("):") +var TOKEN_ARGUMENT_ASIGNMENT := Token.new("=") +var TOKEN_ARGUMENT_TYPE_ASIGNMENT := Token.new(":=") +var TOKEN_ARGUMENT_FUZZER := FuzzerToken.new(GdUnitTools.to_regex("((?!(fuzzer_(seed|iterations)))fuzzer?\\w+)( ?+= ?+| ?+:= ?+| ?+:Fuzzer ?+= ?+|)")) +var TOKEN_ARGUMENT_TYPE := Token.new(":") +var TOKEN_ARGUMENT_SEPARATOR := Token.new(",") +var TOKEN_BRACKET_OPEN := Token.new("(") +var TOKEN_BRACKET_CLOSE := Token.new(")") +var TOKEN_ARRAY_OPEN := Token.new("[") +var TOKEN_ARRAY_CLOSE := Token.new("]") + +var OPERATOR_ADD := Operator.new("+") +var OPERATOR_SUB := Operator.new("-") +var OPERATOR_MUL := Operator.new("*") +var OPERATOR_DIV := Operator.new("/") +var OPERATOR_REMAINDER := Operator.new("%") + +var TOKENS :Array[Token] = [ + TOKEN_SPACE, + TOKEN_TABULATOR, + TOKEN_NEW_LINE, + TOKEN_COMMENT, + TOKEN_BRACKET_OPEN, + TOKEN_BRACKET_CLOSE, + TOKEN_ARRAY_OPEN, + TOKEN_ARRAY_CLOSE, + TOKEN_CLASS_NAME, + TOKEN_INNER_CLASS, + TOKEN_EXTENDS, + TOKEN_ENUM, + TOKEN_FUNCTION_STATIC_DECLARATION, + TOKEN_FUNCTION_DECLARATION, + TOKEN_ARGUMENT_FUZZER, + TOKEN_ARGUMENT_TYPE_ASIGNMENT, + TOKEN_ARGUMENT_ASIGNMENT, + TOKEN_ARGUMENT_TYPE, + TOKEN_FUNCTION, + TOKEN_ARGUMENT_SEPARATOR, + TOKEN_FUNCTION_RETURN_TYPE, + OPERATOR_ADD, + OPERATOR_SUB, + OPERATOR_MUL, + OPERATOR_DIV, + OPERATOR_REMAINDER, +] + +var _regex_clazz_name :RegEx +var _regex_strip_comments := GdUnitTools.to_regex("^([^#\"']|'[^']*'|\"[^\"]*\")*\\K#.*") +var _base_clazz :String +var _scanned_inner_classes := PackedStringArray() +var _script_constants := {} + + +static func clean_up_row(row :String) -> String: + return to_unix_format(row.replace(" ", "").replace("\t", "")) + + +static func to_unix_format(input :String) -> String: + return input.replace("\r\n", "\n") + + +class Token extends RefCounted: + var _token: String + var _consumed: int + var _is_operator: bool + var _regex :RegEx + + + func _init(p_token: String, p_is_operator := false, p_regex :RegEx = null) -> void: + _token = p_token + _is_operator = p_is_operator + _consumed = p_token.length() + _regex = p_regex + + func match(input: String, pos: int) -> bool: + if _regex: + var result := _regex.search(input, pos) + if result == null: + return false + _consumed = result.get_end() - result.get_start() + return pos == result.get_start() + return input.findn(_token, pos) == pos + + func is_operator() -> bool: + return _is_operator + + func is_inner_class() -> bool: + return _token == "class" + + func is_variable() -> bool: + return false + + func is_token(token_name :String) -> bool: + return _token == token_name + + func is_skippable() -> bool: + return false + + func _to_string() -> String: + return "Token{" + _token + "}" + + +class Operator extends Token: + func _init(value: String) -> void: + super(value, true) + + func _to_string() -> String: + return "OperatorToken{%s}" % [_token] + + +# A skippable token, is just a placeholder like space or tabs +class SkippableToken extends Token: + + func _init(p_token: String) -> void: + super(p_token) + + func is_skippable() -> bool: + return true + + +# Token to parse Fuzzers +class FuzzerToken extends Token: + var _name: String + + + func _init(regex: RegEx) -> void: + super("", false, regex) + + + func match(input: String, pos: int) -> bool: + if _regex: + var result := _regex.search(input, pos) + if result == null: + return false + _name = result.strings[1] + _consumed = result.get_end() - result.get_start() + return pos == result.get_start() + return input.findn(_token, pos) == pos + + + func name() -> String: + return _name + + + func type() -> int: + return GdObjects.TYPE_FUZZER + + + func _to_string() -> String: + return "FuzzerToken{%s: '%s'}" % [_name, _token] + + +# Token to parse function arguments +class Variable extends Token: + var _plain_value :String + var _typed_value :Variant + var _type :int = TYPE_NIL + + + func _init(p_value: String) -> void: + super(p_value) + _type = _scan_type(p_value) + _plain_value = p_value + _typed_value = _cast_to_type(p_value, _type) + + + func _scan_type(p_value: String) -> int: + if p_value.begins_with("\"") and p_value.ends_with("\""): + return TYPE_STRING + var type_ := GdObjects.string_to_type(p_value) + if type_ != TYPE_NIL: + return type_ + if p_value.is_valid_int(): + return TYPE_INT + if p_value.is_valid_float(): + return TYPE_FLOAT + if p_value.is_valid_hex_number(): + return TYPE_INT + return TYPE_OBJECT + + + func _cast_to_type(p_value :String, p_type: int) -> Variant: + match p_type: + TYPE_STRING: + return p_value#.substr(1, p_value.length() - 2) + TYPE_INT: + return p_value.to_int() + TYPE_FLOAT: + return p_value.to_float() + return p_value + + + func is_variable() -> bool: + return true + + + func type() -> int: + return _type + + + func value() -> Variant: + return _typed_value + + + func plain_value() -> String: + return _plain_value + + + func _to_string() -> String: + return "Variable{%s: %s : '%s'}" % [_plain_value, GdObjects.type_as_string(_type), _token] + + +class TokenInnerClass extends Token: + var _clazz_name :String + var _content := PackedStringArray() + + + static func _strip_leading_spaces(input :String) -> String: + var characters := input.to_utf8_buffer() + while not characters.is_empty(): + if characters[0] != 0x20: + break + characters.remove_at(0) + return characters.get_string_from_utf8() + + + static func _consumed_bytes(row :String) -> int: + return row.replace(" ", "").replace(" ", "").length() + + + func _init(clazz_name :String) -> void: + super("class") + _clazz_name = clazz_name + + + func is_class_name(clazz_name :String) -> bool: + return _clazz_name == clazz_name + + + func content() -> PackedStringArray: + return _content + + + func parse(source_rows :PackedStringArray, offset :int) -> void: + # add class signature + _content.append(source_rows[offset]) + # parse class content + for row_index in range(offset+1, source_rows.size()): + # scan until next non tab + var source_row := source_rows[row_index] + var row := TokenInnerClass._strip_leading_spaces(source_row) + if row.is_empty() or row.begins_with("\t") or row.begins_with("#"): + # fold all line to left by removing leading tabs and spaces + if source_row.begins_with("\t"): + source_row = source_row.trim_prefix("\t") + # refomat invalid empty lines + if source_row.dedent().is_empty(): + _content.append("") + else: + _content.append(source_row) + continue + break + _consumed += TokenInnerClass._consumed_bytes("".join(_content)) + + + func _to_string() -> String: + return "TokenInnerClass{%s}" % [_clazz_name] + + +func _init() -> void: + _regex_clazz_name = GdUnitTools.to_regex("(class)([a-zA-Z0-9]+)(extends[a-zA-Z]+:)|(class)([a-zA-Z0-9]+)(:)") + + +func get_token(input :String, current_index :int) -> Token: + for t in TOKENS: + if t.match(input, current_index): + return t + return TOKEN_NOT_MATCH + + +func next_token(input: String, current_index: int, ignore_tokens :Array[Token] = []) -> Token: + var token := TOKEN_NOT_MATCH + for t :Token in TOKENS.filter(func(t :Token) -> bool: return not ignore_tokens.has(t)): + if t.match(input, current_index): + token = t + break + if token == OPERATOR_SUB: + token = tokenize_value(input, current_index, token) + if token == TOKEN_INNER_CLASS: + token = tokenize_inner_class(input, current_index, token) + if token == TOKEN_NOT_MATCH: + return tokenize_value(input, current_index, token, ignore_tokens.has(TOKEN_FUNCTION)) + return token + + +func tokenize_value(input: String, current: int, token: Token, ignore_dots := false) -> Token: + var next := 0 + var current_token := "" + # test for '--', '+-', '*-', '/-', '%-', or at least '-x' + var test_for_sign := (token == null or token.is_operator()) and input[current] == "-" + while current + next < len(input): + var character := input[current + next] as String + # if first charater a sign + # or allowend charset + # or is a float value + if (test_for_sign and next==0) \ + or character in ALLOWED_CHARACTERS \ + or (character == "." and (ignore_dots or current_token.is_valid_int())): + current_token += character + next += 1 + continue + break + if current_token != "": + return Variable.new(current_token) + return TOKEN_NOT_MATCH + + +func extract_clazz_name(value :String) -> String: + var result := _regex_clazz_name.search(value) + if result == null: + push_error("Can't extract class name from '%s'" % value) + return "" + if result.get_string(2).is_empty(): + return result.get_string(5) + else: + return result.get_string(2) + + +@warning_ignore("unused_parameter") +func tokenize_inner_class(source_code: String, current: int, token: Token) -> Token: + var clazz_name := extract_clazz_name(source_code.substr(current, 64)) + return TokenInnerClass.new(clazz_name) + + +@warning_ignore("assert_always_false") +func _process_values(left: Token, token_stack: Array, operator: Token) -> Token: + # precheck + if left.is_variable() and operator.is_operator(): + var lvalue :Variant = left.value() + var value :Variant = null + var next_token_ := token_stack.pop_front() as Token + match operator: + OPERATOR_ADD: + value = lvalue + next_token_.value() + OPERATOR_SUB: + value = lvalue - next_token_.value() + OPERATOR_MUL: + value = lvalue * next_token_.value() + OPERATOR_DIV: + value = lvalue / next_token_.value() + OPERATOR_REMAINDER: + value = lvalue & next_token_.value() + _: + assert(false, "Unsupported operator %s" % operator) + return Variable.new( str(value)) + return operator + + +func parse_func_return_type(row: String) -> int: + var token := parse_return_token(row) + if token == TOKEN_NOT_MATCH: + return TYPE_NIL + return token.type() + + +func parse_return_token(input: String) -> Token: + var index := input.rfind(TOKEN_FUNCTION_RETURN_TYPE._token) + if index == -1: + return TOKEN_NOT_MATCH + index += TOKEN_FUNCTION_RETURN_TYPE._consumed + # We scan for the return value exclusive '.' token because it could be referenced to a + # external or internal class e.g. 'func foo() -> InnerClass.Bar:' + var token := next_token(input, index, [TOKEN_FUNCTION]) + while !token.is_variable() and token != TOKEN_NOT_MATCH: + index += token._consumed + token = next_token(input, index, [TOKEN_FUNCTION]) + return token + + +# Parses the argument into a argument signature +# e.g. func foo(arg1 :int, arg2 = 20) -> [arg1, arg2] +func parse_arguments(input: String) -> Array[GdFunctionArgument]: + var args :Array[GdFunctionArgument] = [] + var current_index := 0 + var token :Token = null + var bracket := 0 + var in_function := false + while current_index < len(input): + token = next_token(input, current_index) + # fallback to not end in a endless loop + if token == TOKEN_NOT_MATCH: + var error : = """ + Parsing Error: Invalid token at pos %d found. + Please report this error! + source_code: + -------------------------------------------------------------- + %s + -------------------------------------------------------------- + """.dedent() % [current_index, input] + push_error(error) + current_index += 1 + continue + current_index += token._consumed + if token.is_skippable(): + continue + if token == TOKEN_BRACKET_OPEN: + in_function = true + bracket += 1 + continue + if token == TOKEN_BRACKET_CLOSE: + bracket -= 1 + # if function end? + if in_function and bracket == 0: + return args + # is function + if token == TOKEN_FUNCTION_DECLARATION: + token = next_token(input, current_index) + current_index += token._consumed + continue + # is fuzzer argument + if token is FuzzerToken: + var arg_value := _parse_end_function(input.substr(current_index), true) + current_index += arg_value.length() + args.append(GdFunctionArgument.new(token.name(), token.type(), arg_value)) + continue + # is value argument + if in_function and token.is_variable(): + var arg_name :String = token.plain_value() + var arg_type :int = TYPE_NIL + var arg_value :Variant = GdFunctionArgument.UNDEFINED + # parse type and default value + while current_index < len(input): + token = next_token(input, current_index) + current_index += token._consumed + if token.is_skippable(): + continue + match token: + TOKEN_ARGUMENT_TYPE: + token = next_token(input, current_index) + if token == TOKEN_SPACE: + current_index += token._consumed + token = next_token(input, current_index) + arg_type = GdObjects.string_as_typeof(token._token) + # handle enum detection as argument + if arg_type == GdObjects.TYPE_VARIANT and is_class_enum_type(token._token): + arg_type = GdObjects.TYPE_ENUM + TOKEN_ARGUMENT_TYPE_ASIGNMENT: + arg_value = _parse_end_function(input.substr(current_index), true) + current_index += arg_value.length() + TOKEN_ARGUMENT_ASIGNMENT: + token = next_token(input, current_index) + arg_value = _parse_end_function(input.substr(current_index), true) + current_index += arg_value.length() + TOKEN_BRACKET_OPEN: + bracket += 1 + # if value a function? + if bracket > 1: + # complete the argument value + var func_begin := input.substr(current_index-TOKEN_BRACKET_OPEN._consumed) + var func_body := _parse_end_function(func_begin) + arg_value += func_body + # fix parse index to end of value + current_index += func_body.length() - TOKEN_BRACKET_OPEN._consumed - TOKEN_BRACKET_CLOSE._consumed + TOKEN_BRACKET_CLOSE: + bracket -= 1 + # end of function + if bracket == 0: + break + TOKEN_ARGUMENT_SEPARATOR: + if bracket <= 1: + break + arg_value = arg_value.lstrip(" ") + if arg_type == TYPE_NIL and arg_value != GdFunctionArgument.UNDEFINED: + if arg_value.begins_with("Color."): + arg_type = TYPE_COLOR + elif arg_value.begins_with("Vector2."): + arg_type = TYPE_VECTOR2 + elif arg_value.begins_with("Vector3."): + arg_type = TYPE_VECTOR3 + elif arg_value.begins_with("AABB("): + arg_type = TYPE_AABB + elif arg_value.begins_with("["): + arg_type = TYPE_ARRAY + elif arg_value.begins_with("{"): + arg_type = TYPE_DICTIONARY + else: + arg_type = typeof(str_to_var(arg_value)) + if arg_value.rfind(")") == arg_value.length()-1: + arg_type = GdObjects.TYPE_FUNC + elif arg_type == TYPE_NIL: + arg_type = TYPE_STRING + args.append(GdFunctionArgument.new(arg_name, arg_type, arg_value)) + return args + + +func _parse_end_function(input: String, remove_trailing_char := false) -> String: + # find end of function + var current_index := 0 + var bracket_count := 0 + var in_array := 0 + var end_of_func := false + + while current_index < len(input) and not end_of_func: + var character := input[current_index] + # step over strings + if character == "'" : + current_index = input.find("'", current_index+1) + 1 + if current_index == 0: + push_error("Parsing error on '%s', can't evaluate end of string." % input) + return "" + continue + if character == '"' : + # test for string blocks + if input.find('"""', current_index) == current_index: + current_index = input.find('"""', current_index+3) + 3 + else: + current_index = input.find('"', current_index+1) + 1 + if current_index == 0: + push_error("Parsing error on '%s', can't evaluate end of string." % input) + return "" + continue + + match character: + # count if inside an array + "[": in_array += 1 + "]": in_array -= 1 + # count if inside a function + "(": bracket_count += 1 + ")": + bracket_count -= 1 + if bracket_count < 0 and in_array <= 0: + end_of_func = true + ",": + if bracket_count == 0 and in_array == 0: + end_of_func = true + current_index += 1 + if remove_trailing_char: + # check if the parsed value ends with comma or end of doubled breaked + # `,` or `())` + var trailing_char := input[current_index-1] + if trailing_char == ',' or (bracket_count < 0 and trailing_char == ')'): + return input.substr(0, current_index-1) + return input.substr(0, current_index) + + +func extract_inner_class(source_rows: PackedStringArray, clazz_name :String) -> PackedStringArray: + for row_index in source_rows.size(): + var input := GdScriptParser.clean_up_row(source_rows[row_index]) + var token := next_token(input, 0) + if token.is_inner_class(): + if token.is_class_name(clazz_name): + token.parse(source_rows, row_index) + return token.content() + return PackedStringArray() + + +func extract_source_code(script_path :PackedStringArray) -> PackedStringArray: + if script_path.is_empty(): + push_error("Invalid script path '%s'" % script_path) + return PackedStringArray() + #load the source code + var resource_path := script_path[0] + var script :GDScript = load(resource_path) + var source_code := load_source_code(script, script_path) + var base_script := script.get_base_script() + if base_script: + _base_clazz = GdObjects.extract_class_name_from_class_path([base_script.resource_path]) + source_code += load_source_code(base_script, script_path) + return source_code + + +func extract_func_signature(rows :PackedStringArray, index :int) -> String: + var signature := "" + + for rowIndex in range(index, rows.size()): + var row := rows[rowIndex] + row = _regex_strip_comments.sub(row, "").strip_edges(false) + if row.is_empty(): + continue + signature += row + "\n" + if is_func_end(row): + return signature.strip_edges() + push_error("Can't fully extract function signature of '%s'" % rows[index]) + return "" + + +func load_source_code(script :GDScript, script_path :PackedStringArray) -> PackedStringArray: + var map := script.get_script_constant_map() + for key :String in map.keys(): + var value :Variant = map.get(key) + if value is GDScript: + var class_path := GdObjects.extract_class_path(value) + if class_path.size() > 1: + _scanned_inner_classes.append(class_path[1]) + + var source_code := GdScriptParser.to_unix_format(script.source_code) + var source_rows := source_code.split("\n") + # extract all inner class names + # want to extract an inner class? + if script_path.size() > 1: + var inner_clazz := script_path[1] + source_rows = extract_inner_class(source_rows, inner_clazz) + return PackedStringArray(source_rows) + + +func get_class_name(script :GDScript) -> String: + var source_code := GdScriptParser.to_unix_format(script.source_code) + var source_rows := source_code.split("\n") + + for index :int in min(10, source_rows.size()): + var input := source_rows[index] + var token := next_token(input, 0) + if token == TOKEN_CLASS_NAME: + var current_index := token._consumed + token = next_token(input, current_index) + current_index += token._consumed + token = tokenize_value(input, current_index, token) + return token.value() + # if no class_name found extract from file name + return GdObjects.to_pascal_case(script.resource_path.get_basename().get_file()) + + +func parse_func_name(row :String) -> String: + var input := GdScriptParser.clean_up_row(row) + var current_index := 0 + var token := next_token(input, current_index) + current_index += token._consumed + if token != TOKEN_FUNCTION_STATIC_DECLARATION and token != TOKEN_FUNCTION_DECLARATION: + return "" + while not token is Variable: + token = next_token(input, current_index) + current_index += token._consumed + return token._token + + +func parse_functions(rows :PackedStringArray, clazz_name :String, clazz_path :PackedStringArray, included_functions := PackedStringArray()) -> Array[GdFunctionDescriptor]: + var func_descriptors :Array[GdFunctionDescriptor] = [] + for rowIndex in rows.size(): + var row := rows[rowIndex] + # step over inner class functions + if row.begins_with("\t"): + continue + var input := GdScriptParser.clean_up_row(row) + # skip comments and empty lines + if input.begins_with("#") or input.length() == 0: + continue + var token := next_token(input, 0) + if token == TOKEN_FUNCTION_STATIC_DECLARATION or token == TOKEN_FUNCTION_DECLARATION: + if _is_func_included(input, included_functions): + var func_signature := extract_func_signature(rows, rowIndex) + var fd := parse_func_description(func_signature, clazz_name, clazz_path, rowIndex+1) + fd._is_coroutine = is_func_coroutine(rows, rowIndex) + func_descriptors.append(fd) + return func_descriptors + + +func is_func_coroutine(rows :PackedStringArray, index :int) -> bool: + var is_coroutine := false + for rowIndex in range( index+1, rows.size()): + var row := rows[rowIndex] + is_coroutine = row.contains("await") + if is_coroutine: + return true + var input := GdScriptParser.clean_up_row(row) + var token := next_token(input, 0) + if token == TOKEN_FUNCTION_STATIC_DECLARATION or token == TOKEN_FUNCTION_DECLARATION: + break + return is_coroutine + + +func _is_func_included(row :String, included_functions :PackedStringArray) -> bool: + if included_functions.is_empty(): + return true + for name in included_functions: + if row.find(name) != -1: + return true + return false + + +func parse_func_description(func_signature :String, clazz_name :String, clazz_path :PackedStringArray, line_number :int) -> GdFunctionDescriptor: + var name := parse_func_name(func_signature) + var return_type :int + var return_clazz := "" + var token := parse_return_token(func_signature) + if token == TOKEN_NOT_MATCH: + return_type = GdObjects.TYPE_VARIANT + else: + return_type = token.type() + if token.type() == TYPE_OBJECT: + return_clazz = _patch_inner_class_names(token.value(), clazz_name) + # is return type an enum? + if is_class_enum_type(return_clazz): + return_type = GdObjects.TYPE_ENUM + + return GdFunctionDescriptor.new( + name, + line_number, + is_virtual_func(clazz_name, clazz_path, name), + is_static_func(func_signature), + false, + return_type, + return_clazz, + parse_arguments(func_signature) + ) + + +# caches already parsed classes for virtual functions +# key: value: a Array of virtual function names +var _virtual_func_cache := Dictionary() + +func is_virtual_func(clazz_name :String, clazz_path :PackedStringArray, func_name :String) -> bool: + if _virtual_func_cache.has(clazz_name): + return _virtual_func_cache[clazz_name].has(func_name) + var virtual_functions := Array() + var method_list := GdObjects.extract_class_functions(clazz_name, clazz_path) + for method_descriptor :Dictionary in method_list: + var is_virtual_function :bool = method_descriptor["flags"] & METHOD_FLAG_VIRTUAL + if is_virtual_function: + virtual_functions.append(method_descriptor["name"]) + _virtual_func_cache[clazz_name] = virtual_functions + return _virtual_func_cache[clazz_name].has(func_name) + + +func is_static_func(func_signature :String) -> bool: + var input := GdScriptParser.clean_up_row(func_signature) + var token := next_token(input, 0) + return token == TOKEN_FUNCTION_STATIC_DECLARATION + + +func is_inner_class(clazz_path :PackedStringArray) -> bool: + return clazz_path.size() > 1 + + +func is_func_end(row :String) -> bool: + return row.strip_edges(false, true).ends_with(":") + + +func is_class_enum_type(value :String) -> bool: + if value == "Variant": + return false + # first check is given value a enum from the current class + if _script_constants.has(value): + return true + # otherwise we need to determie it by reflection + var script := GDScript.new() + script.source_code = """ + extends Resource + + static func is_class_enum_type() -> bool: + return typeof(%s) == TYPE_DICTIONARY + + """.dedent() % value + script.reload() + return script.call("is_class_enum_type") + + +func _patch_inner_class_names(clazz :String, clazz_name :String) -> String: + var base_clazz := clazz_name.split(".")[0] + var inner_clazz_name := clazz.split(".")[0] + if _scanned_inner_classes.has(inner_clazz_name): + return base_clazz + "." + clazz + if _script_constants.has(clazz): + return clazz_name + "." + clazz + return clazz + + +func extract_functions(script :GDScript, clazz_name :String, clazz_path :PackedStringArray) -> Array[GdFunctionDescriptor]: + var source_code := load_source_code(script, clazz_path) + _script_constants = script.get_script_constant_map() + return parse_functions(source_code, clazz_name, clazz_path) + + +func parse(clazz_name :String, clazz_path :PackedStringArray) -> GdUnitResult: + if clazz_path.is_empty(): + return GdUnitResult.error("Invalid script path '%s'" % clazz_path) + var is_inner_class_ := is_inner_class(clazz_path) + var script :GDScript = load(clazz_path[0]) + var function_descriptors := extract_functions(script, clazz_name, clazz_path) + var gd_class := GdClassDescriptor.new(clazz_name, is_inner_class_, function_descriptors) + # iterate over class dependencies + script = script.get_base_script() + while script != null: + clazz_name = GdObjects.extract_class_name_from_class_path([script.resource_path]) + function_descriptors = extract_functions(script, clazz_name, clazz_path) + gd_class.set_parent_clazz(GdClassDescriptor.new(clazz_name, is_inner_class_, function_descriptors)) + script = script.get_base_script() + return GdUnitResult.success(gd_class) diff --git a/addons/gdUnit4/src/core/parse/GdUnitExpressionRunner.gd b/addons/gdUnit4/src/core/parse/GdUnitExpressionRunner.gd new file mode 100644 index 0000000..f3130a0 --- /dev/null +++ b/addons/gdUnit4/src/core/parse/GdUnitExpressionRunner.gd @@ -0,0 +1,26 @@ +class_name GdUnitExpressionRunner +extends RefCounted + +const CLASS_TEMPLATE = """ +class_name _ExpressionRunner extends '${clazz_path}' + +func __run_expression() -> Variant: + return $expression + +""" + +func execute(src_script :GDScript, expression :String) -> Variant: + var script := GDScript.new() + var resource_path := "res://addons/gdUnit4/src/Fuzzers.gd" if src_script.resource_path.is_empty() else src_script.resource_path + script.source_code = CLASS_TEMPLATE.dedent()\ + .replace("${clazz_path}", resource_path)\ + .replace("$expression", expression) + script.reload(false) + var runner :Variant = script.new() + if runner.has_method("queue_free"): + runner.queue_free() + return runner.__run_expression() + + +func to_fuzzer(src_script :GDScript, expression :String) -> Fuzzer: + return execute(src_script, expression) as Fuzzer diff --git a/addons/gdUnit4/src/core/parse/GdUnitTestParameterSetResolver.gd b/addons/gdUnit4/src/core/parse/GdUnitTestParameterSetResolver.gd new file mode 100644 index 0000000..d67ee25 --- /dev/null +++ b/addons/gdUnit4/src/core/parse/GdUnitTestParameterSetResolver.gd @@ -0,0 +1,193 @@ +class_name GdUnitTestParameterSetResolver +extends RefCounted + +const CLASS_TEMPLATE = """ +class_name _ParameterExtractor extends '${clazz_path}' + +func __extract_test_parameters() -> Array: + return ${test_params} + +""" + +const EXCLUDE_PROPERTIES_TO_COPY = [ + "script", + "type", + "Node", + "_import_path"] + + +var _fd: GdFunctionDescriptor +var _test_case_names_cache := PackedStringArray() +var _static_sets_by_index := {} +var _is_static := true + +func _init(fd: GdFunctionDescriptor) -> void: + _fd = fd + + +func is_parameterized() -> bool: + return _fd.is_parameterized() + + +func is_parameter_sets_static() -> bool: + return _is_static + + +func is_parameter_set_static(index: int) -> bool: + return _is_static and _static_sets_by_index.get(index, false) + + +# validates the given arguments are complete and matches to required input fields of the test function +func validate(input_value_set: Array) -> String: + var input_arguments := _fd.args() + # check given parameter set with test case arguments + var expected_arg_count := input_arguments.size() - 1 + for input_values :Variant in input_value_set: + var parameter_set_index := input_value_set.find(input_values) + if input_values is Array: + var current_arg_count :int = input_values.size() + if current_arg_count != expected_arg_count: + return "\n The parameter set at index [%d] does not match the expected input parameters!\n The test case requires [%d] input parameters, but the set contains [%d]" % [parameter_set_index, expected_arg_count, current_arg_count] + var error := GdUnitTestParameterSetResolver.validate_parameter_types(input_arguments, input_values, parameter_set_index) + if not error.is_empty(): + return error + else: + return "\n The parameter set at index [%d] does not match the expected input parameters!\n Expecting an array of input values." % parameter_set_index + return "" + + +static func validate_parameter_types(input_arguments: Array, input_values: Array, parameter_set_index: int) -> String: + for i in input_arguments.size(): + var input_param: GdFunctionArgument = input_arguments[i] + # only check the test input arguments + if input_param.is_parameter_set(): + continue + var input_param_type := input_param.type() + var input_value :Variant = input_values[i] + var input_value_type := typeof(input_value) + # input parameter is not typed or is Variant we skip the type test + if input_param_type == TYPE_NIL or input_param_type == GdObjects.TYPE_VARIANT: + continue + # is input type enum allow int values + if input_param_type == GdObjects.TYPE_VARIANT and input_value_type == TYPE_INT: + continue + # allow only equal types and object == null + if input_param_type == TYPE_OBJECT and input_value_type == TYPE_NIL: + continue + if input_param_type != input_value_type: + return "\n The parameter set at index [%d] does not match the expected input parameters!\n The value '%s' does not match the required input parameter <%s>." % [parameter_set_index, input_value, input_param] + return "" + + +func build_test_case_names(test_case: _TestCase) -> PackedStringArray: + if not is_parameterized(): + return [] + # if test names already resolved? + if not _test_case_names_cache.is_empty(): + return _test_case_names_cache + + var fa := GdFunctionArgument.get_parameter_set(_fd.args()) + var parameter_sets := fa.parameter_sets() + # if no parameter set detected we need to resolve it by using reflection + if parameter_sets.size() == 0: + _test_case_names_cache = _extract_test_names_by_reflection(test_case) + _is_static = false + else: + var property_names := _extract_property_names(test_case.get_parent()) + for parameter_set_index in parameter_sets.size(): + var parameter_set := parameter_sets[parameter_set_index] + _static_sets_by_index[parameter_set_index] = _is_static_parameter_set(parameter_set, property_names) + _test_case_names_cache.append(GdUnitTestParameterSetResolver._build_test_case_name(test_case, parameter_set, parameter_set_index)) + parameter_set_index += 1 + return _test_case_names_cache + + +func _extract_property_names(node :Node) -> PackedStringArray: + return node.get_property_list()\ + .map(func(property :Dictionary) -> String: return property["name"])\ + .filter(func(property :String) -> bool: return !EXCLUDE_PROPERTIES_TO_COPY.has(property)) + + +# tests if the test property set contains an property reference by name, if not the parameter set holds only static values +func _is_static_parameter_set(parameters :String, property_names :PackedStringArray) -> bool: + for property_name in property_names: + if parameters.contains(property_name): + _is_static = false + return false + return true + + +func _extract_test_names_by_reflection(test_case: _TestCase) -> PackedStringArray: + var parameter_sets := load_parameter_sets(test_case) + var test_case_names: PackedStringArray = [] + for index in parameter_sets.size(): + test_case_names.append(GdUnitTestParameterSetResolver._build_test_case_name(test_case, str(parameter_sets[index]), index)) + return test_case_names + + +static func _build_test_case_name(test_case: _TestCase, test_parameter: String, parameter_set_index: int) -> String: + if not test_parameter.begins_with("["): + test_parameter = "[" + test_parameter + return "%s:%d %s" % [test_case.get_name(), parameter_set_index, test_parameter.replace("\t", "").replace('"', "'").replace("&'", "'")] + + +# extracts the arguments from the given test case, using kind of reflection solution +# to restore the parameters from a string representation to real instance type +func load_parameter_sets(test_case: _TestCase, do_validate := false) -> Array: + var source_script :Script = test_case.get_parent().get_script() + var parameter_arg := GdFunctionArgument.get_parameter_set(_fd.args()) + var source_code := CLASS_TEMPLATE \ + .replace("${clazz_path}", source_script.resource_path) \ + .replace("${test_params}", parameter_arg.value_as_string()) + var script := GDScript.new() + script.source_code = source_code + # enable this lines only for debuging + #script.resource_path = GdUnitFileAccess.create_temp_dir("parameter_extract") + "/%s__.gd" % test_case.get_name() + #DirAccess.remove_absolute(script.resource_path) + #ResourceSaver.save(script, script.resource_path) + var result := script.reload() + if result != OK: + push_error("Extracting test parameters failed! Script loading error: %s" % result) + return [] + var instance :Variant = script.new() + GdUnitTestParameterSetResolver.copy_properties(test_case.get_parent(), instance) + instance.queue_free() + var parameter_sets :Variant = instance.call("__extract_test_parameters") + if not do_validate: + return parameter_sets + # validate the parameter set + var error := validate(parameter_sets) + if not error.is_empty(): + test_case.skip(true, error) + test_case._interupted = true + if parameter_sets.size() != _test_case_names_cache.size(): + push_error("Internal Error: The resolved test_case names has invalid size!") + error = """ + %s: + The resolved test_case names has invalid size! + %s + """.dedent().trim_prefix("\n") % [ + GdAssertMessages._error("Internal Error"), + GdAssertMessages._error("Please report this issue as a bug!")] + test_case.get_parent().__execution_context\ + .reports()\ + .append(GdUnitReport.new().create(GdUnitReport.INTERUPTED, test_case.line_number(), error)) + test_case.skip(true, error) + test_case._interupted = true + return parameter_sets + + +static func copy_properties(source: Object, dest: Object) -> void: + for property in source.get_property_list(): + var property_name :String = property["name"] + var property_value :Variant = source.get(property_name) + if EXCLUDE_PROPERTIES_TO_COPY.has(property_name): + continue + #if dest.get(property_name) == null: + # prints("|%s|" % property_name, source.get(property_name)) + + # check for invalid name property + if property_name == "name" and property_value == "": + dest.set(property_name, ""); + continue + dest.set(property_name, property_value) diff --git a/addons/gdUnit4/src/core/report/GdUnitReport.gd b/addons/gdUnit4/src/core/report/GdUnitReport.gd new file mode 100644 index 0000000..eb7ed2e --- /dev/null +++ b/addons/gdUnit4/src/core/report/GdUnitReport.gd @@ -0,0 +1,74 @@ +class_name GdUnitReport +extends Resource + +# report type +enum { + SUCCESS, + WARN, + FAILURE, + ORPHAN, + TERMINATED, + INTERUPTED, + ABORT, + SKIPPED, +} + +var _type :int +var _line_number :int +var _message :String + + +func create(p_type :int, p_line_number :int, p_message :String) -> GdUnitReport: + _type = p_type + _line_number = p_line_number + _message = p_message + return self + + +func type() -> int: + return _type + + +func line_number() -> int: + return _line_number + + +func message() -> String: + return _message + + +func is_skipped() -> bool: + return _type == SKIPPED + + +func is_warning() -> bool: + return _type == WARN + + +func is_failure() -> bool: + return _type == FAILURE + + +func is_error() -> bool: + return _type == TERMINATED or _type == INTERUPTED or _type == ABORT + + +func _to_string() -> String: + if _line_number == -1: + return "[color=green]line [/color][color=aqua]:[/color] %s" % [_message] + return "[color=green]line [/color][color=aqua]%d:[/color] %s" % [_line_number, _message] + + +func serialize() -> Dictionary: + return { + "type" :_type, + "line_number" :_line_number, + "message" :_message + } + + +func deserialize(serialized :Dictionary) -> GdUnitReport: + _type = serialized["type"] + _line_number = serialized["line_number"] + _message = serialized["message"] + return self diff --git a/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd new file mode 100644 index 0000000..f7802d2 --- /dev/null +++ b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteDefaultTemplate.gd @@ -0,0 +1,36 @@ +class_name GdUnitTestSuiteDefaultTemplate +extends RefCounted + + +const DEFAULT_TEMP_TS_GD =""" + # GdUnit generated TestSuite + class_name ${suite_class_name} + extends GdUnitTestSuite + @warning_ignore('unused_parameter') + @warning_ignore('return_value_discarded') + + # TestSuite generated from + const __source = '${source_resource_path}' +""" + + +const DEFAULT_TEMP_TS_CS = """ + // GdUnit generated TestSuite + + using Godot; + using GdUnit3; + + namespace ${name_space} + { + using static Assertions; + using static Utils; + + [TestSuite] + public class ${suite_class_name} + { + // TestSuite generated from + private const string sourceClazzPath = "${source_resource_path}"; + + } + } +""" diff --git a/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd new file mode 100644 index 0000000..3e241f3 --- /dev/null +++ b/addons/gdUnit4/src/core/templates/test_suite/GdUnitTestSuiteTemplate.gd @@ -0,0 +1,142 @@ +class_name GdUnitTestSuiteTemplate +extends RefCounted + +const TEMPLATE_ID_GD = 1000 +const TEMPLATE_ID_CS = 2000 + +const SUPPORTED_TAGS_GD = """ + GdScript Tags are replaced when the test-suite is created. + + # The class name of the test-suite, formed from the source script. + ${suite_class_name} + # is used to build the test suite class name + class_name ${suite_class_name} + extends GdUnitTestSuite + + + # The class name in pascal case, formed from the source script. + ${source_class} + # can be used to create the class e.g. for source 'MyClass' + var my_test_class := ${source_class}.new() + # will be result in + var my_test_class := MyClass.new() + + # The class as variable name in snake case, formed from the source script. + ${source_var} + # Can be used to build the variable name e.g. for source 'MyClass' + var ${source_var} := ${source_class}.new() + # will be result in + var my_class := MyClass.new() + + # The full resource path from which the file was created. + ${source_resource_path} + # Can be used to load the script in your test + var my_script := load(${source_resource_path}) + # will be result in + var my_script := load("res://folder/my_class.gd") +""" + +const SUPPORTED_TAGS_CS = """ + C# Tags are replaced when the test-suite is created. + + // The namespace name of the test-suite + ${name_space} + namespace ${name_space} + + // The class name of the test-suite, formed from the source class. + ${suite_class_name} + // is used to build the test suite class name + [TestSuite] + public class ${suite_class_name} + + // The class name formed from the source class. + ${source_class} + // can be used to create the class e.g. for source 'MyClass' + private string myTestClass = new ${source_class}(); + // will be result in + private string myTestClass = new MyClass(); + + // The class as variable name in camelCase, formed from the source class. + ${source_var} + // Can be used to build the variable name e.g. for source 'MyClass' + private object ${source_var} = new ${source_class}(); + // will be result in + private object myClass = new MyClass(); + + // The full resource path from which the file was created. + ${source_resource_path} + // Can be used to load the script in your test + private object myScript = GD.Load(${source_resource_path}); + // will be result in + private object myScript = GD.Load("res://folder/MyClass.cs"); +""" + +const TAG_TEST_SUITE_CLASS = "${suite_class_name}" +const TAG_SOURCE_CLASS_NAME = "${source_class}" +const TAG_SOURCE_CLASS_VARNAME = "${source_var}" +const TAG_SOURCE_RESOURCE_PATH = "${source_resource_path}" + + +static func default_GD_template() -> String: + return GdUnitTestSuiteDefaultTemplate.DEFAULT_TEMP_TS_GD.dedent().trim_prefix("\n") + + +static func default_CS_template() -> String: + return GdUnitTestSuiteDefaultTemplate.DEFAULT_TEMP_TS_CS.dedent().trim_prefix("\n") + + +static func build_template(source_path: String) -> String: + var clazz_name :String = GdObjects.to_pascal_case(GdObjects.extract_class_name(source_path).value() as String) + return GdUnitSettings.get_setting(GdUnitSettings.TEMPLATE_TS_GD, default_GD_template())\ + .replace(TAG_TEST_SUITE_CLASS, clazz_name+"Test")\ + .replace(TAG_SOURCE_RESOURCE_PATH, source_path)\ + .replace(TAG_SOURCE_CLASS_NAME, clazz_name)\ + .replace(TAG_SOURCE_CLASS_VARNAME, GdObjects.to_snake_case(clazz_name)) + + +static func default_template(template_id :int) -> String: + if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS: + push_error("Invalid template '%d' id! Cant load testsuite template" % template_id) + return "" + if template_id == TEMPLATE_ID_GD: + return default_GD_template() + return default_CS_template() + + +static func load_template(template_id :int) -> String: + if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS: + push_error("Invalid template '%d' id! Cant load testsuite template" % template_id) + return "" + if template_id == TEMPLATE_ID_GD: + return GdUnitSettings.get_setting(GdUnitSettings.TEMPLATE_TS_GD, default_GD_template()) + return GdUnitSettings.get_setting(GdUnitSettings.TEMPLATE_TS_CS, default_CS_template()) + + +static func save_template(template_id :int, template :String) -> void: + if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS: + push_error("Invalid template '%d' id! Cant load testsuite template" % template_id) + return + if template_id == TEMPLATE_ID_GD: + GdUnitSettings.save_property(GdUnitSettings.TEMPLATE_TS_GD, template.dedent().trim_prefix("\n")) + elif template_id == TEMPLATE_ID_CS: + GdUnitSettings.save_property(GdUnitSettings.TEMPLATE_TS_CS, template.dedent().trim_prefix("\n")) + + +static func reset_to_default(template_id :int) -> void: + if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS: + push_error("Invalid template '%d' id! Cant load testsuite template" % template_id) + return + if template_id == TEMPLATE_ID_GD: + GdUnitSettings.save_property(GdUnitSettings.TEMPLATE_TS_GD, default_GD_template()) + else: + GdUnitSettings.save_property(GdUnitSettings.TEMPLATE_TS_CS, default_CS_template()) + + +static func load_tags(template_id :int) -> String: + if template_id != TEMPLATE_ID_GD and template_id != TEMPLATE_ID_CS: + push_error("Invalid template '%d' id! Cant load testsuite template" % template_id) + return "Error checked loading tags" + if template_id == TEMPLATE_ID_GD: + return SUPPORTED_TAGS_GD + else: + return SUPPORTED_TAGS_CS diff --git a/addons/gdUnit4/src/core/thread/GdUnitThreadContext.gd b/addons/gdUnit4/src/core/thread/GdUnitThreadContext.gd new file mode 100644 index 0000000..fe326a6 --- /dev/null +++ b/addons/gdUnit4/src/core/thread/GdUnitThreadContext.gd @@ -0,0 +1,62 @@ +class_name GdUnitThreadContext +extends RefCounted + +var _thread :Thread +var _thread_name :String +var _thread_id :int +var _assert :GdUnitAssert +var _signal_collector :GdUnitSignalCollector +var _execution_context :GdUnitExecutionContext + + +func _init(thread :Thread = null) -> void: + if thread != null: + _thread = thread + _thread_name = thread.get_meta("name") + _thread_id = thread.get_id() as int + else: + _thread_name = "main" + _thread_id = OS.get_main_thread_id() + _signal_collector = GdUnitSignalCollector.new() + + +func dispose() -> void: + _assert = null + if is_instance_valid(_signal_collector): + _signal_collector.clear() + _signal_collector = null + _execution_context = null + _thread = null + + +func set_assert(value :GdUnitAssert) -> GdUnitThreadContext: + _assert = value + return self + + +func get_assert() -> GdUnitAssert: + return _assert + + +func set_execution_context(context :GdUnitExecutionContext) -> void: + _execution_context = context + + +func get_execution_context() -> GdUnitExecutionContext: + return _execution_context + + +func get_execution_context_id() -> int: + return _execution_context.get_instance_id() + + +func get_signal_collector() -> GdUnitSignalCollector: + return _signal_collector + + +func thread_id() -> int: + return _thread_id + + +func _to_string() -> String: + return "ThreadContext <%s>: %s " % [_thread_name, _thread_id] diff --git a/addons/gdUnit4/src/core/thread/GdUnitThreadManager.gd b/addons/gdUnit4/src/core/thread/GdUnitThreadManager.gd new file mode 100644 index 0000000..ad124ce --- /dev/null +++ b/addons/gdUnit4/src/core/thread/GdUnitThreadManager.gd @@ -0,0 +1,62 @@ +## A manager to run new thread and crate a ThreadContext shared over the actual test run +class_name GdUnitThreadManager +extends Object + +## { = } +var _thread_context_by_id := {} +## holds the current thread id +var _current_thread_id :int = -1 + +func _init() -> void: + # add initail the main thread + _current_thread_id = OS.get_thread_caller_id() + _thread_context_by_id[OS.get_main_thread_id()] = GdUnitThreadContext.new() + + +static func instance() -> GdUnitThreadManager: + return GdUnitSingleton.instance("GdUnitThreadManager", func() -> GdUnitThreadManager: return GdUnitThreadManager.new()) + + +## Runs a new thread by given name and Callable.[br] +## A new GdUnitThreadContext is created, which is used for the actual test execution.[br] +## We need this custom implementation while this bug is not solved +## Godot issue https://github.com/godotengine/godot/issues/79637 +static func run(name :String, cb :Callable) -> Variant: + return await instance()._run(name, cb) + + +## Returns the current valid thread context +static func get_current_context() -> GdUnitThreadContext: + return instance()._get_current_context() + + +func _run(name :String, cb :Callable) -> Variant: + # we do this hack because of `OS.get_thread_caller_id()` not returns the current id + # when await process_frame is called inside the fread + var save_current_thread_id := _current_thread_id + var thread := Thread.new() + thread.set_meta("name", name) + thread.start(cb) + _current_thread_id = thread.get_id() as int + _register_thread(thread, _current_thread_id) + var result :Variant = await thread.wait_to_finish() + _unregister_thread(_current_thread_id) + # restore original thread id + _current_thread_id = save_current_thread_id + return result + + +func _register_thread(thread :Thread, thread_id :int) -> void: + var context := GdUnitThreadContext.new(thread) + _thread_context_by_id[thread_id] = context + + +func _unregister_thread(thread_id :int) -> void: + var context := _thread_context_by_id.get(thread_id) as GdUnitThreadContext + if context: + _thread_context_by_id.erase(thread_id) + context.dispose() + + +func _get_current_context() -> GdUnitThreadContext: + return _thread_context_by_id.get(_current_thread_id) diff --git a/addons/gdUnit4/src/extractors/GdUnitFuncValueExtractor.gd b/addons/gdUnit4/src/extractors/GdUnitFuncValueExtractor.gd new file mode 100644 index 0000000..29cc62b --- /dev/null +++ b/addons/gdUnit4/src/extractors/GdUnitFuncValueExtractor.gd @@ -0,0 +1,69 @@ +# This class defines a value extractor by given function name and args +extends GdUnitValueExtractor + +var _func_names :PackedStringArray +var _args :Array + +func _init(func_name :String, p_args :Array) -> void: + _func_names = func_name.split(".") + _args = p_args + + +func func_names() -> PackedStringArray: + return _func_names + + +func args() -> Array: + return _args + + +# Extracts a value by given `func_name` and `args`, +# Allows to use a chained list of functions setarated ba a dot. +# e.g. "func_a.func_b.name" +# do calls instance.func_a().func_b().name() and returns finally the name +# If a function returns an array, all elements will by collected in a array +# e.g. "get_children.get_name" checked a node +# do calls node.get_children() for all childs get_name() and returns all names in an array +# +# if the value not a Object or not accesible be `func_name` the value is converted to `"n.a."` +# expecing null values +func extract_value(value :Variant) -> Variant: + if value == null: + return null + for func_name in func_names(): + if GdArrayTools.is_array_type(value): + var values := Array() + for element :Variant in Array(value): + values.append(_call_func(element, func_name)) + value = values + else: + value = _call_func(value, func_name) + var type := typeof(value) + if type == TYPE_STRING_NAME: + return str(value) + if type == TYPE_STRING and value == "n.a.": + return value + return value + + +func _call_func(value :Variant, func_name :String) -> Variant: + # for array types we need to call explicit by function name, using funcref is only supported for Objects + # TODO extend to all array functions + if GdArrayTools.is_array_type(value) and func_name == "empty": + return value.is_empty() + + if is_instance_valid(value): + # extract from function + if value.has_method(func_name): + var extract := Callable(value, func_name) + if extract.is_valid(): + return value.call(func_name) if args().is_empty() else value.callv(func_name, args()) + else: + # if no function exists than try to extract form parmeters + var parameter :Variant = value.get(func_name) + if parameter != null: + return parameter + # nothing found than return 'n.a.' + if GdUnitSettings.is_verbose_assert_warnings(): + push_warning("Extracting value from element '%s' by func '%s' failed! Converting to \"n.a.\"" % [value, func_name]) + return "n.a." diff --git a/addons/gdUnit4/src/fuzzers/FloatFuzzer.gd b/addons/gdUnit4/src/fuzzers/FloatFuzzer.gd new file mode 100644 index 0000000..347513f --- /dev/null +++ b/addons/gdUnit4/src/fuzzers/FloatFuzzer.gd @@ -0,0 +1,13 @@ +class_name FloatFuzzer +extends Fuzzer + +var _from: float = 0 +var _to: float = 0 + +func _init(from: float, to: float) -> void: + assert(from <= to, "Invalid range!") + _from = from + _to = to + +func next_value() -> float: + return randf_range(_from, _to) diff --git a/addons/gdUnit4/src/fuzzers/Fuzzer.gd b/addons/gdUnit4/src/fuzzers/Fuzzer.gd new file mode 100644 index 0000000..7cd6a58 --- /dev/null +++ b/addons/gdUnit4/src/fuzzers/Fuzzer.gd @@ -0,0 +1,39 @@ +# Base interface for fuzz testing +# https://en.wikipedia.org/wiki/Fuzzing +class_name Fuzzer +extends RefCounted +# To run a test with a specific fuzzer you have to add defailt argument checked your test case +# all arguments are optional [] +# syntax: +# func test_foo([fuzzer = ], [fuzzer_iterations=], [fuzzer_seed=]) +# example: +# # runs the test 'test_foo' 10 times with a random int value generated by the IntFuzzer +# func test_foo(fuzzer = Fuzzers.randomInt(), fuzzer_iterations=10) +# +# # runs the test 'test_foo2' 1000 times as default with a random seed='101010101' +# func test_foo2(fuzzer = Fuzzers.randomInt(), fuzzer_seed=101010101) + +const ITERATION_DEFAULT_COUNT = 1000 +const ARGUMENT_FUZZER_INSTANCE := "fuzzer" +const ARGUMENT_ITERATIONS := "fuzzer_iterations" +const ARGUMENT_SEED := "fuzzer_seed" + +var _iteration_index :int = 0 +var _iteration_limit :int = ITERATION_DEFAULT_COUNT + + +# generates the next fuzz value +# needs to be implement +func next_value() -> Variant: + push_error("Invalid vall. Fuzzer not implemented 'next_value()'") + return null + + +# returns the current iteration index +func iteration_index() -> int: + return _iteration_index + + +# returns the amount of iterations where the fuzzer will be run +func iteration_limit() -> int: + return _iteration_limit diff --git a/addons/gdUnit4/src/fuzzers/IntFuzzer.gd b/addons/gdUnit4/src/fuzzers/IntFuzzer.gd new file mode 100644 index 0000000..064dc20 --- /dev/null +++ b/addons/gdUnit4/src/fuzzers/IntFuzzer.gd @@ -0,0 +1,32 @@ +class_name IntFuzzer +extends Fuzzer + +enum { + NORMAL, + EVEN, + ODD +} + +var _from :int = 0 +var _to : int = 0 +var _mode : int = NORMAL + + +func _init(from: int, to: int, mode :int = NORMAL) -> void: + assert(from <= to, "Invalid range!") + _from = from + _to = to + _mode = mode + + +func next_value() -> int: + var value := randi_range(_from, _to) + match _mode: + NORMAL: + return value + EVEN: + return int((value / 2.0) * 2) + ODD: + return int((value / 2.0) * 2 + 1) + _: + return value diff --git a/addons/gdUnit4/src/fuzzers/StringFuzzer.gd b/addons/gdUnit4/src/fuzzers/StringFuzzer.gd new file mode 100644 index 0000000..9b13e8a --- /dev/null +++ b/addons/gdUnit4/src/fuzzers/StringFuzzer.gd @@ -0,0 +1,64 @@ +class_name StringFuzzer +extends Fuzzer + + +const DEFAULT_CHARSET = "a-zA-Z0-9+-_" + +var _min_length :int +var _max_length :int +var _charset :PackedByteArray + + +func _init(min_length :int, max_length :int, pattern :String = DEFAULT_CHARSET) -> void: + assert(min_length>0 and min_length < max_length) + assert(not null or not pattern.is_empty()) + _min_length = min_length + _max_length = max_length + _charset = StringFuzzer.extract_charset(pattern) + + +static func extract_charset(pattern :String) -> PackedByteArray: + var reg := RegEx.new() + if reg.compile(pattern) != OK: + push_error("Invalid pattern to generate Strings! Use e.g 'a-zA-Z0-9+-_'") + return PackedByteArray() + + var charset := Array() + var char_before := -1 + var index := 0 + while index < pattern.length(): + var char_current := pattern.unicode_at(index) + # - range token at first or last pos? + if char_current == 45 and (index == 0 or index == pattern.length()-1): + charset.append(char_current) + index += 1 + continue + index += 1 + # range starts + if char_current == 45 and char_before != -1: + var char_next := pattern.unicode_at(index) + var characters := build_chars(char_before, char_next) + for character in characters: + charset.append(character) + char_before = -1 + index += 1 + continue + char_before = char_current + charset.append(char_current) + return PackedByteArray(charset) + + +static func build_chars(from :int, to :int) -> Array[int]: + var characters :Array[int] = [] + for character in range(from+1, to+1): + characters.append(character) + return characters + + +func next_value() -> String: + var value := PackedByteArray() + var max_char := len(_charset) + var length :int = max(_min_length, randi() % _max_length) + for i in length: + value.append(_charset[randi() % max_char]) + return value.get_string_from_utf8() diff --git a/addons/gdUnit4/src/fuzzers/Vector2Fuzzer.gd b/addons/gdUnit4/src/fuzzers/Vector2Fuzzer.gd new file mode 100644 index 0000000..855cf6a --- /dev/null +++ b/addons/gdUnit4/src/fuzzers/Vector2Fuzzer.gd @@ -0,0 +1,18 @@ +class_name Vector2Fuzzer +extends Fuzzer + + +var _from :Vector2 +var _to : Vector2 + + +func _init(from: Vector2, to: Vector2) -> void: + assert(from <= to, "Invalid range!") + _from = from + _to = to + + +func next_value() -> Vector2: + var x := randf_range(_from.x, _to.x) + var y := randf_range(_from.y, _to.y) + return Vector2(x, y) diff --git a/addons/gdUnit4/src/fuzzers/Vector3Fuzzer.gd b/addons/gdUnit4/src/fuzzers/Vector3Fuzzer.gd new file mode 100644 index 0000000..c773ab5 --- /dev/null +++ b/addons/gdUnit4/src/fuzzers/Vector3Fuzzer.gd @@ -0,0 +1,19 @@ +class_name Vector3Fuzzer +extends Fuzzer + + +var _from :Vector3 +var _to : Vector3 + + +func _init(from: Vector3, to: Vector3) -> void: + assert(from <= to, "Invalid range!") + _from = from + _to = to + + +func next_value() -> Vector3: + var x := randf_range(_from.x, _to.x) + var y := randf_range(_from.y, _to.y) + var z := randf_range(_from.z, _to.z) + return Vector3(x, y, z) diff --git a/addons/gdUnit4/src/matchers/AnyArgumentMatcher.gd b/addons/gdUnit4/src/matchers/AnyArgumentMatcher.gd new file mode 100644 index 0000000..bd50313 --- /dev/null +++ b/addons/gdUnit4/src/matchers/AnyArgumentMatcher.gd @@ -0,0 +1,11 @@ +class_name AnyArgumentMatcher +extends GdUnitArgumentMatcher + + +@warning_ignore("unused_parameter") +func is_match(value :Variant) -> bool: + return true + + +func _to_string() -> String: + return "any()" diff --git a/addons/gdUnit4/src/matchers/AnyBuildInTypeArgumentMatcher.gd b/addons/gdUnit4/src/matchers/AnyBuildInTypeArgumentMatcher.gd new file mode 100644 index 0000000..ba34431 --- /dev/null +++ b/addons/gdUnit4/src/matchers/AnyBuildInTypeArgumentMatcher.gd @@ -0,0 +1,50 @@ +class_name AnyBuildInTypeArgumentMatcher +extends GdUnitArgumentMatcher + +var _type : PackedInt32Array = [] + + +func _init(type :PackedInt32Array) -> void: + _type = type + + +func is_match(value :Variant) -> bool: + return _type.has(typeof(value)) + + +func _to_string() -> String: + match _type[0]: + TYPE_BOOL: return "any_bool()" + TYPE_STRING, TYPE_STRING_NAME: return "any_string()" + TYPE_INT: return "any_int()" + TYPE_FLOAT: return "any_float()" + TYPE_COLOR: return "any_color()" + TYPE_VECTOR2: return "any_vector2()" if _type.size() == 1 else "any_vector()" + TYPE_VECTOR2I: return "any_vector2i()" + TYPE_VECTOR3: return "any_vector3()" + TYPE_VECTOR3I: return "any_vector3i()" + TYPE_VECTOR4: return "any_vector4()" + TYPE_VECTOR4I: return "any_vector4i()" + TYPE_RECT2: return "any_rect2()" + TYPE_RECT2I: return "any_rect2i()" + TYPE_PLANE: return "any_plane()" + TYPE_QUATERNION: return "any_quat()" + TYPE_AABB: return "any_aabb()" + TYPE_BASIS: return "any_basis()" + TYPE_TRANSFORM2D: return "any_transform_2d()" + TYPE_TRANSFORM3D: return "any_transform_3d()" + TYPE_NODE_PATH: return "any_node_path()" + TYPE_RID: return "any_rid()" + TYPE_OBJECT: return "any_object()" + TYPE_DICTIONARY: return "any_dictionary()" + TYPE_ARRAY: return "any_array()" + TYPE_PACKED_BYTE_ARRAY: return "any_packed_byte_array()" + TYPE_PACKED_INT32_ARRAY: return "any_packed_int32_array()" + TYPE_PACKED_INT64_ARRAY: return "any_packed_int64_array()" + TYPE_PACKED_FLOAT32_ARRAY: return "any_packed_float32_array()" + TYPE_PACKED_FLOAT64_ARRAY: return "any_packed_float64_array()" + TYPE_PACKED_STRING_ARRAY: return "any_packed_string_array()" + TYPE_PACKED_VECTOR2_ARRAY: return "any_packed_vector2_array()" + TYPE_PACKED_VECTOR3_ARRAY: return "any_packed_vector3_array()" + TYPE_PACKED_COLOR_ARRAY: return "any_packed_color_array()" + _: return "any()" diff --git a/addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd b/addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd new file mode 100644 index 0000000..2cf0790 --- /dev/null +++ b/addons/gdUnit4/src/matchers/AnyClazzArgumentMatcher.gd @@ -0,0 +1,30 @@ +class_name AnyClazzArgumentMatcher +extends GdUnitArgumentMatcher + +var _clazz :Object + + +func _init(clazz :Object) -> void: + _clazz = clazz + + +func is_match(value :Variant) -> bool: + if typeof(value) != TYPE_OBJECT: + return false + if is_instance_valid(value) and GdObjects.is_script(_clazz): + return value.get_script() == _clazz + return is_instance_of(value, _clazz) + + +func _to_string() -> String: + if (_clazz as Object).is_class("GDScriptNativeClass"): + var instance :Object = _clazz.new() + var clazz_name := instance.get_class() + if not instance is RefCounted: + instance.free() + return "any_class(<"+clazz_name+">)"; + if _clazz is GDScript: + var result := GdObjects.extract_class_name(_clazz) + if result.is_success(): + return "any_class(<"+ result.value() + ">)" + return "any_class()" diff --git a/addons/gdUnit4/src/matchers/ChainedArgumentMatcher.gd b/addons/gdUnit4/src/matchers/ChainedArgumentMatcher.gd new file mode 100644 index 0000000..ec62ecf --- /dev/null +++ b/addons/gdUnit4/src/matchers/ChainedArgumentMatcher.gd @@ -0,0 +1,22 @@ +class_name ChainedArgumentMatcher +extends GdUnitArgumentMatcher + +var _matchers :Array + + +func _init(matchers :Array) -> void: + _matchers = matchers + + +func is_match(arguments :Variant) -> bool: + var arg_array := arguments as Array + if arg_array.size() != _matchers.size(): + return false + + for index in arg_array.size(): + var arg :Variant = arg_array[index] + var matcher := _matchers[index] as GdUnitArgumentMatcher + + if not matcher.is_match(arg): + return false + return true diff --git a/addons/gdUnit4/src/matchers/EqualsArgumentMatcher.gd b/addons/gdUnit4/src/matchers/EqualsArgumentMatcher.gd new file mode 100644 index 0000000..2d387ed --- /dev/null +++ b/addons/gdUnit4/src/matchers/EqualsArgumentMatcher.gd @@ -0,0 +1,22 @@ +class_name EqualsArgumentMatcher +extends GdUnitArgumentMatcher + +var _current :Variant +var _auto_deep_check_mode :bool + + +func _init(current :Variant, auto_deep_check_mode := false) -> void: + _current = current + _auto_deep_check_mode = auto_deep_check_mode + + +func is_match(value :Variant) -> bool: + var case_sensitive_check := true + return GdObjects.equals(_current, value, case_sensitive_check, compare_mode(value)) + + +func compare_mode(value :Variant) -> GdObjects.COMPARE_MODE: + if _auto_deep_check_mode and is_instance_valid(value): + # we do deep check on all InputEvent's + return GdObjects.COMPARE_MODE.PARAMETER_DEEP_TEST if value is InputEvent else GdObjects.COMPARE_MODE.OBJECT_REFERENCE + return GdObjects.COMPARE_MODE.OBJECT_REFERENCE diff --git a/addons/gdUnit4/src/matchers/GdUnitArgumentMatcher.gd b/addons/gdUnit4/src/matchers/GdUnitArgumentMatcher.gd new file mode 100644 index 0000000..aa43b80 --- /dev/null +++ b/addons/gdUnit4/src/matchers/GdUnitArgumentMatcher.gd @@ -0,0 +1,8 @@ +## The base class of all argument matchers +class_name GdUnitArgumentMatcher +extends RefCounted + + +@warning_ignore("unused_parameter") +func is_match(value :Variant) -> bool: + return true diff --git a/addons/gdUnit4/src/matchers/GdUnitArgumentMatchers.gd b/addons/gdUnit4/src/matchers/GdUnitArgumentMatchers.gd new file mode 100644 index 0000000..a40eace --- /dev/null +++ b/addons/gdUnit4/src/matchers/GdUnitArgumentMatchers.gd @@ -0,0 +1,32 @@ +class_name GdUnitArgumentMatchers +extends RefCounted + +const TYPE_ANY = TYPE_MAX + 100 + + +static func to_matcher(arguments :Array[Variant], auto_deep_check_mode := false) -> ChainedArgumentMatcher: + var matchers :Array[Variant] = [] + for arg :Variant in arguments: + # argument is already a matcher + if arg is GdUnitArgumentMatcher: + matchers.append(arg) + else: + # pass argument into equals matcher + matchers.append(EqualsArgumentMatcher.new(arg, auto_deep_check_mode)) + return ChainedArgumentMatcher.new(matchers) + + +static func any() -> GdUnitArgumentMatcher: + return AnyArgumentMatcher.new() + + +static func by_type(type :int) -> GdUnitArgumentMatcher: + return AnyBuildInTypeArgumentMatcher.new([type]) + + +static func by_types(types :PackedInt32Array) -> GdUnitArgumentMatcher: + return AnyBuildInTypeArgumentMatcher.new(types) + + +static func any_class(clazz :Object) -> GdUnitArgumentMatcher: + return AnyClazzArgumentMatcher.new(clazz) diff --git a/addons/gdUnit4/src/mocking/GdUnitMock.gd b/addons/gdUnit4/src/mocking/GdUnitMock.gd new file mode 100644 index 0000000..bb50e5e --- /dev/null +++ b/addons/gdUnit4/src/mocking/GdUnitMock.gd @@ -0,0 +1,40 @@ +class_name GdUnitMock +extends RefCounted + +## do call the real implementation +const CALL_REAL_FUNC = "CALL_REAL_FUNC" +## do return a default value for primitive types or null +const RETURN_DEFAULTS = "RETURN_DEFAULTS" +## do return a default value for primitive types and a fully mocked value for Object types +## builds full deep mocked object +const RETURN_DEEP_STUB = "RETURN_DEEP_STUB" + +var _value :Variant + + +func _init(value :Variant) -> void: + _value = value + + +## Selects the mock to work on, used in combination with [method GdUnitTestSuite.do_return][br] +## Example: +## [codeblock] +## do_return(false).on(myMock).is_selected() +## [/codeblock] +func on(obj :Object) -> Object: + if not GdUnitMock._is_mock_or_spy( obj, "__do_return"): + return obj + return obj.__do_return(_value) + + +## [color=yellow]`checked` is obsolete, use `on` instead [/color] +func checked(obj :Object) -> Object: + push_warning("Using a deprecated function 'checked' use `on` instead") + return on(obj) + + +static func _is_mock_or_spy(obj :Object, func_sig :String) -> bool: + if obj is GDScript and not obj.get_script().has_script_method(func_sig): + push_error("Error: You try to use a non mock or spy!") + return false + return true diff --git a/addons/gdUnit4/src/mocking/GdUnitMockBuilder.gd b/addons/gdUnit4/src/mocking/GdUnitMockBuilder.gd new file mode 100644 index 0000000..b3bb41a --- /dev/null +++ b/addons/gdUnit4/src/mocking/GdUnitMockBuilder.gd @@ -0,0 +1,167 @@ +class_name GdUnitMockBuilder +extends GdUnitClassDoubler + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") +const MOCK_TEMPLATE :GDScript = preload("res://addons/gdUnit4/src/mocking/GdUnitMockImpl.gd") + + +static func is_push_errors() -> bool: + return GdUnitSettings.is_report_push_errors() + + +static func build(clazz :Variant, mock_mode :String, debug_write := false) -> Variant: + var push_errors := is_push_errors() + if not is_mockable(clazz, push_errors): + return null + # mocking a scene? + if GdObjects.is_scene(clazz): + return mock_on_scene(clazz as PackedScene, debug_write) + elif typeof(clazz) == TYPE_STRING and clazz.ends_with(".tscn"): + return mock_on_scene(load(clazz), debug_write) + # mocking a script + var instance := create_instance(clazz) + var mock := mock_on_script(instance, clazz, [ "get_script"], debug_write) + if not instance is RefCounted: + instance.free() + if mock == null: + return null + var mock_instance :Variant = mock.new() + mock_instance.__set_script(mock) + mock_instance.__set_singleton() + mock_instance.__set_mode(mock_mode) + return register_auto_free(mock_instance) + + +static func create_instance(clazz :Variant) -> Object: + if typeof(clazz) == TYPE_OBJECT and (clazz as Object).is_class("GDScriptNativeClass"): + return clazz.new() + elif (clazz is GDScript) || (typeof(clazz) == TYPE_STRING and clazz.ends_with(".gd")): + var script :GDScript = null + if clazz is GDScript: + script = clazz + else: + script = load(clazz) + + var args := GdObjects.build_function_default_arguments(script, "_init") + return script.callv("new", args) + elif typeof(clazz) == TYPE_STRING and ClassDB.can_instantiate(clazz): + return ClassDB.instantiate(clazz) + push_error("Can't create a mock validation instance from class: `%s`" % clazz) + return null + + +static func mock_on_scene(scene :PackedScene, debug_write :bool) -> Object: + var push_errors := is_push_errors() + if not scene.can_instantiate(): + if push_errors: + push_error("Can't instanciate scene '%s'" % scene.resource_path) + return null + var scene_instance := scene.instantiate() + # we can only mock checked a scene with attached script + if scene_instance.get_script() == null: + if push_errors: + push_error("Can't create a mockable instance for a scene without script '%s'" % scene.resource_path) + GdUnitTools.free_instance(scene_instance) + return null + + var script_path :String = scene_instance.get_script().get_path() + var mock := mock_on_script(scene_instance, script_path, GdUnitClassDoubler.EXLCUDE_SCENE_FUNCTIONS, debug_write) + if mock == null: + return null + scene_instance.set_script(mock) + scene_instance.__set_singleton() + scene_instance.__set_mode(GdUnitMock.CALL_REAL_FUNC) + return register_auto_free(scene_instance) + + +static func get_class_info(clazz :Variant) -> Dictionary: + var clazz_name :String = GdObjects.extract_class_name(clazz).value() + var clazz_path := GdObjects.extract_class_path(clazz) + return { + "class_name" : clazz_name, + "class_path" : clazz_path + } + + +static func mock_on_script(instance :Object, clazz :Variant, function_excludes :PackedStringArray, debug_write :bool) -> GDScript: + var push_errors := is_push_errors() + var function_doubler := GdUnitMockFunctionDoubler.new(push_errors) + var class_info := get_class_info(clazz) + var lines := load_template(MOCK_TEMPLATE.source_code, class_info, instance) + + var clazz_name :String = class_info.get("class_name") + var clazz_path :PackedStringArray = class_info.get("class_path", [clazz_name]) + lines += double_functions(instance, clazz_name, clazz_path, function_doubler, function_excludes) + + var mock := GDScript.new() + mock.source_code = "\n".join(lines) + mock.resource_name = "Mock%s.gd" % clazz_name + mock.resource_path = GdUnitFileAccess.create_temp_dir("mock") + "/Mock%s_%d.gd" % [clazz_name, Time.get_ticks_msec()] + + if debug_write: + DirAccess.remove_absolute(mock.resource_path) + ResourceSaver.save(mock, mock.resource_path) + var error := mock.reload(true) + if error != OK: + push_error("Critical!!!, MockBuilder error, please contact the developer.") + return null + return mock + + +static func is_mockable(clazz :Variant, push_errors :bool=false) -> bool: + var clazz_type := typeof(clazz) + if clazz_type != TYPE_OBJECT and clazz_type != TYPE_STRING: + push_error("Invalid clazz type is used") + return false + # is PackedScene + if GdObjects.is_scene(clazz): + return true + if GdObjects.is_native_class(clazz): + return true + # verify class type + if GdObjects.is_object(clazz): + if GdObjects.is_instance(clazz): + if push_errors: + push_error("It is not allowed to mock an instance '%s', use class name instead, Read 'Mocker' documentation for details" % clazz) + return false + + if not GdObjects.can_be_instantiate(clazz): + if push_errors: + push_error("Can't create a mockable instance for class '%s'" % clazz) + return false + return true + # verify by class name checked registered classes + var clazz_name := clazz as String + if ClassDB.class_exists(clazz_name): + if Engine.has_singleton(clazz_name): + if push_errors: + push_error("Mocking a singelton class '%s' is not allowed! Read 'Mocker' documentation for details" % clazz_name) + return false + if not ClassDB.can_instantiate(clazz_name): + if push_errors: + push_error("Mocking class '%s' is not allowed it cannot be instantiated!" % clazz_name) + return false + # exclude classes where name starts with a underscore + if clazz_name.find("_") == 0: + if push_errors: + push_error("Can't create a mockable instance for protected class '%s'" % clazz_name) + return false + return true + # at least try to load as a script + var clazz_path := clazz_name + if not FileAccess.file_exists(clazz_path): + if push_errors: + push_error("'%s' cannot be mocked for the specified resource path, the resource does not exist" % clazz_name) + return false + # finally verify is a script resource + var resource := load(clazz_path) + if resource == null: + if push_errors: + push_error("'%s' cannot be mocked the script cannot be loaded." % clazz_name) + return false + # finally check is extending from script + return GdObjects.is_script(resource) or GdObjects.is_scene(resource) + + +static func register_auto_free(obj :Variant) -> Variant: + return GdUnitThreadManager.get_current_context().get_execution_context().register_auto_free(obj) diff --git a/addons/gdUnit4/src/mocking/GdUnitMockFunctionDoubler.gd b/addons/gdUnit4/src/mocking/GdUnitMockFunctionDoubler.gd new file mode 100644 index 0000000..4d8d300 --- /dev/null +++ b/addons/gdUnit4/src/mocking/GdUnitMockFunctionDoubler.gd @@ -0,0 +1,85 @@ +class_name GdUnitMockFunctionDoubler +extends GdFunctionDoubler + + +const TEMPLATE_FUNC_WITH_RETURN_VALUE = """ + var args :Array = ["$(func_name)", $(arguments)] + + if $(instance)__is_prepare_return_value(): + $(instance)__save_function_return_value(args) + return ${default_return_value} + if $(instance)__is_verify_interactions(): + $(instance)__verify_interactions(args) + return ${default_return_value} + else: + $(instance)__save_function_interaction(args) + + if $(instance)__do_call_real_func("$(func_name)", args): + return $(await)super($(arguments)) + return $(instance)__get_mocked_return_value_or_default(args, ${default_return_value}) + +""" + + +const TEMPLATE_FUNC_WITH_RETURN_VOID = """ + var args :Array = ["$(func_name)", $(arguments)] + + if $(instance)__is_prepare_return_value(): + if $(push_errors): + push_error(\"Mocking a void function '$(func_name)() -> void:' is not allowed.\") + return + if $(instance)__is_verify_interactions(): + $(instance)__verify_interactions(args) + return + else: + $(instance)__save_function_interaction(args) + + if $(instance)__do_call_real_func("$(func_name)"): + $(await)super($(arguments)) + +""" + + +const TEMPLATE_FUNC_VARARG_RETURN_VALUE = """ + var varargs :Array = __filter_vargs([$(varargs)]) + var args :Array = ["$(func_name)", $(arguments)] + varargs + + if $(instance)__is_prepare_return_value(): + if $(push_errors): + push_error(\"Mocking a void function '$(func_name)() -> void:' is not allowed.\") + $(instance)__save_function_return_value(args) + return ${default_return_value} + if $(instance)__is_verify_interactions(): + $(instance)__verify_interactions(args) + return ${default_return_value} + else: + $(instance)__save_function_interaction(args) + + if $(instance)__do_call_real_func("$(func_name)", args): + match varargs.size(): + 0: return $(await)super($(arguments)) + 1: return $(await)super($(arguments), varargs[0]) + 2: return $(await)super($(arguments), varargs[0], varargs[1]) + 3: return $(await)super($(arguments), varargs[0], varargs[1], varargs[2]) + 4: return $(await)super($(arguments), varargs[0], varargs[1], varargs[2], varargs[3]) + 5: return $(await)super($(arguments), varargs[0], varargs[1], varargs[2], varargs[3], varargs[4]) + 6: return $(await)super($(arguments), varargs[0], varargs[1], varargs[2], varargs[3], varargs[4], varargs[5]) + 7: return $(await)super($(arguments), varargs[0], varargs[1], varargs[2], varargs[3], varargs[4], varargs[5], varargs[6]) + 8: return $(await)super($(arguments), varargs[0], varargs[1], varargs[2], varargs[3], varargs[4], varargs[5], varargs[6], varargs[7]) + 9: return $(await)super($(arguments), varargs[0], varargs[1], varargs[2], varargs[3], varargs[4], varargs[5], varargs[6], varargs[7], varargs[8]) + 10: return $(await)super($(arguments), varargs[0], varargs[1], varargs[2], varargs[3], varargs[4], varargs[5], varargs[6], varargs[7], varargs[8], varargs[9]) + return __get_mocked_return_value_or_default(args, ${default_return_value}) + +""" + + +func _init(push_errors :bool = false) -> void: + super._init(push_errors) + + +func get_template(return_type :Variant, is_vararg :bool) -> String: + if is_vararg: + return TEMPLATE_FUNC_VARARG_RETURN_VALUE + if return_type is StringName: + return TEMPLATE_FUNC_WITH_RETURN_VALUE + return TEMPLATE_FUNC_WITH_RETURN_VOID if (return_type == TYPE_NIL or return_type == GdObjects.TYPE_VOID) else TEMPLATE_FUNC_WITH_RETURN_VALUE diff --git a/addons/gdUnit4/src/mocking/GdUnitMockImpl.gd b/addons/gdUnit4/src/mocking/GdUnitMockImpl.gd new file mode 100644 index 0000000..cbeb782 --- /dev/null +++ b/addons/gdUnit4/src/mocking/GdUnitMockImpl.gd @@ -0,0 +1,140 @@ + +################################################################################ +# internal mocking stuff +################################################################################ +const __INSTANCE_ID = "${instance_id}" +const __SOURCE_CLASS = "${source_class}" + +var __mock_working_mode := GdUnitMock.RETURN_DEFAULTS +var __excluded_methods :PackedStringArray = [] +var __do_return_value :Variant = null +var __prepare_return_value := false + +#{ = { +# = +# } +#} +var __mocked_return_values := Dictionary() + + +static func __instance() -> Object: + return Engine.get_meta(__INSTANCE_ID) + + +func _notification(what :int) -> void: + if what == NOTIFICATION_PREDELETE: + if Engine.has_meta(__INSTANCE_ID): + Engine.remove_meta(__INSTANCE_ID) + + +func __instance_id() -> String: + return __INSTANCE_ID + + +func __set_singleton() -> void: + # store self need to mock static functions + Engine.set_meta(__INSTANCE_ID, self) + + +func __release_double() -> void: + # we need to release the self reference manually to prevent orphan nodes + Engine.remove_meta(__INSTANCE_ID) + + +func __is_prepare_return_value() -> bool: + return __prepare_return_value + + +func __sort_by_argument_matcher(__left_args :Array, __right_args :Array) -> bool: + for __index in __left_args.size(): + var __larg :Variant = __left_args[__index] + if __larg is GdUnitArgumentMatcher: + return false + return true + + +# we need to sort by matcher arguments so that they are all at the end of the list +func __sort_dictionary(__unsorted_args :Dictionary) -> Dictionary: + # only need to sort if contains more than one entry + if __unsorted_args.size() <= 1: + return __unsorted_args + var __sorted_args := __unsorted_args.keys() + __sorted_args.sort_custom(__sort_by_argument_matcher) + var __sorted_result := {} + for __index in __sorted_args.size(): + var key :Variant = __sorted_args[__index] + __sorted_result[key] = __unsorted_args[key] + return __sorted_result + + +func __save_function_return_value(__fuction_args :Array) -> void: + var __func_name :String = __fuction_args[0] + var __func_args :Array = __fuction_args.slice(1) + var __mocked_return_value_by_args :Dictionary = __mocked_return_values.get(__func_name, {}) + __mocked_return_value_by_args[__func_args] = __do_return_value + __mocked_return_values[__func_name] = __sort_dictionary(__mocked_return_value_by_args) + __do_return_value = null + __prepare_return_value = false + + +func __is_mocked_args_match(__func_args :Array, __mocked_args :Array) -> bool: + var __is_matching := false + for __index in __mocked_args.size(): + var __fuction_args :Variant = __mocked_args[__index] + if __func_args.size() != __fuction_args.size(): + continue + __is_matching = true + for __arg_index in __func_args.size(): + var __func_arg :Variant = __func_args[__arg_index] + var __mock_arg :Variant = __fuction_args[__arg_index] + if __mock_arg is GdUnitArgumentMatcher: + __is_matching = __is_matching and __mock_arg.is_match(__func_arg) + else: + __is_matching = __is_matching and typeof(__func_arg) == typeof(__mock_arg) and __func_arg == __mock_arg + if not __is_matching: + break + if __is_matching: + break + return __is_matching + + +func __get_mocked_return_value_or_default(__fuction_args :Array, __default_return_value :Variant) -> Variant: + var __func_name :String = __fuction_args[0] + if not __mocked_return_values.has(__func_name): + return __default_return_value + var __func_args :Array = __fuction_args.slice(1) + var __mocked_args :Array = __mocked_return_values.get(__func_name).keys() + for __index in __mocked_args.size(): + var __margs :Variant = __mocked_args[__index] + if __is_mocked_args_match(__func_args, [__margs]): + return __mocked_return_values[__func_name][__margs] + return __default_return_value + + +func __set_script(__script :GDScript) -> void: + super.set_script(__script) + + +func __set_mode(mock_working_mode :String) -> Object: + __mock_working_mode = mock_working_mode + return self + + +func __do_call_real_func(__func_name :String, __func_args := []) -> bool: + var __is_call_real_func := __mock_working_mode == GdUnitMock.CALL_REAL_FUNC and not __excluded_methods.has(__func_name) + # do not call real funcions for mocked functions + if __is_call_real_func and __mocked_return_values.has(__func_name): + var __fuction_args :Array = __func_args.slice(1) + var __mocked_args :Array = __mocked_return_values.get(__func_name).keys() + return not __is_mocked_args_match(__fuction_args, __mocked_args) + return __is_call_real_func + + +func __exclude_method_call(exluded_methods :PackedStringArray) -> void: + __excluded_methods.append_array(exluded_methods) + + +func __do_return(mock_do_return_value :Variant) -> Object: + __do_return_value = mock_do_return_value + __prepare_return_value = true + return self diff --git a/addons/gdUnit4/src/monitor/ErrorLogEntry.gd b/addons/gdUnit4/src/monitor/ErrorLogEntry.gd new file mode 100644 index 0000000..4f767bb --- /dev/null +++ b/addons/gdUnit4/src/monitor/ErrorLogEntry.gd @@ -0,0 +1,61 @@ +extends RefCounted +class_name ErrorLogEntry + + +enum TYPE { + SCRIPT_ERROR, + PUSH_ERROR, + PUSH_WARNING +} + + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +const PATTERN_SCRIPT_ERROR := "USER SCRIPT ERROR:" +const PATTERN_PUSH_ERROR := "USER ERROR:" +const PATTERN_PUSH_WARNING := "USER WARNING:" + +static var _regex_parse_error_line_number: RegEx + +var _type :TYPE +var _line :int +var _message :String +var _details :String + + +func _init(type :TYPE, line :int, message :String, details :String) -> void: + _type = type + _line = line + _message = message + _details = details + + +static func extract_push_warning(records :PackedStringArray, index :int) -> ErrorLogEntry: + return _extract(records, index, TYPE.PUSH_WARNING, PATTERN_PUSH_WARNING) + + +static func extract_push_error(records :PackedStringArray, index :int) -> ErrorLogEntry: + return _extract(records, index, TYPE.PUSH_ERROR, PATTERN_PUSH_ERROR) + + +static func extract_error(records :PackedStringArray, index :int) -> ErrorLogEntry: + return _extract(records, index, TYPE.SCRIPT_ERROR, PATTERN_SCRIPT_ERROR) + + +static func _extract(records :PackedStringArray, index :int, type :TYPE, pattern :String) -> ErrorLogEntry: + var message := records[index] + if message.contains(pattern): + var error := message.replace(pattern, "").strip_edges() + var details := records[index+1].strip_edges() + var line := _parse_error_line_number(details) + return ErrorLogEntry.new(type, line, error, details) + return null + + +static func _parse_error_line_number(record :String) -> int: + if _regex_parse_error_line_number == null: + _regex_parse_error_line_number = GdUnitTools.to_regex("at: .*res://.*:(\\d+)") + var matches := _regex_parse_error_line_number.search(record) + if matches != null: + return matches.get_string(1).to_int() + return -1 diff --git a/addons/gdUnit4/src/monitor/GdUnitMonitor.gd b/addons/gdUnit4/src/monitor/GdUnitMonitor.gd new file mode 100644 index 0000000..b6429ca --- /dev/null +++ b/addons/gdUnit4/src/monitor/GdUnitMonitor.gd @@ -0,0 +1,24 @@ +# GdUnit Monitoring Base Class +class_name GdUnitMonitor +extends RefCounted + +var _id :String + +# constructs new Monitor with given id +func _init(p_id :String) -> void: + _id = p_id + + +# Returns the id of the monitor to uniqe identify +func id() -> String: + return _id + + +# starts monitoring +func start() -> void: + pass + + +# stops monitoring +func stop() -> void: + pass diff --git a/addons/gdUnit4/src/monitor/GdUnitOrphanNodesMonitor.gd b/addons/gdUnit4/src/monitor/GdUnitOrphanNodesMonitor.gd new file mode 100644 index 0000000..725dd1f --- /dev/null +++ b/addons/gdUnit4/src/monitor/GdUnitOrphanNodesMonitor.gd @@ -0,0 +1,27 @@ +class_name GdUnitOrphanNodesMonitor +extends GdUnitMonitor + +var _initial_count := 0 +var _orphan_count := 0 +var _orphan_detection_enabled :bool + + +func _init(name :String = "") -> void: + super("OrphanNodesMonitor:" + name) + _orphan_detection_enabled = GdUnitSettings.is_verbose_orphans() + + +func start() -> void: + _initial_count = _orphans() + + +func stop() -> void: + _orphan_count = max(0, _orphans() - _initial_count) + + +func _orphans() -> int: + return Performance.get_monitor(Performance.OBJECT_ORPHAN_NODE_COUNT) as int + + +func orphan_nodes() -> int: + return _orphan_count if _orphan_detection_enabled else 0 diff --git a/addons/gdUnit4/src/monitor/GodotGdErrorMonitor.gd b/addons/gdUnit4/src/monitor/GodotGdErrorMonitor.gd new file mode 100644 index 0000000..720fe5c --- /dev/null +++ b/addons/gdUnit4/src/monitor/GodotGdErrorMonitor.gd @@ -0,0 +1,85 @@ +class_name GodotGdErrorMonitor +extends GdUnitMonitor + +var _godot_log_file :String +var _eof :int +var _report_enabled := false +var _entries: Array[ErrorLogEntry] = [] + + +func _init() -> void: + super("GodotGdErrorMonitor") + _godot_log_file = GdUnitSettings.get_log_path() + _report_enabled = _is_reporting_enabled() + + +func start() -> void: + var file := FileAccess.open(_godot_log_file, FileAccess.READ) + if file: + file.seek_end(0) + _eof = file.get_length() + + +func stop() -> void: + pass + + +func to_reports() -> Array[GdUnitReport]: + var reports_ :Array[GdUnitReport] = [] + if _report_enabled: + reports_.assign(_entries.map(_to_report)) + _entries.clear() + return reports_ + + +static func _to_report(errorLog :ErrorLogEntry) -> GdUnitReport: + var failure := "%s\n\t%s\n%s %s" % [ + GdAssertMessages._error("Godot Runtime Error !"), + GdAssertMessages._colored_value(errorLog._details), + GdAssertMessages._error("Error:"), + GdAssertMessages._colored_value(errorLog._message)] + return GdUnitReport.new().create(GdUnitReport.ABORT, errorLog._line, failure) + + +func scan(force_collect_reports := false) -> Array[ErrorLogEntry]: + await Engine.get_main_loop().process_frame + await Engine.get_main_loop().physics_frame + _entries.append_array(_collect_log_entries(force_collect_reports)) + return _entries + + +func erase_log_entry(entry :ErrorLogEntry) -> void: + _entries.erase(entry) + + +func _collect_log_entries(force_collect_reports :bool) -> Array[ErrorLogEntry]: + var file := FileAccess.open(_godot_log_file, FileAccess.READ) + file.seek(_eof) + var records := PackedStringArray() + while not file.eof_reached(): + records.append(file.get_line()) + file.seek_end(0) + _eof = file.get_length() + var log_entries :Array[ErrorLogEntry]= [] + var is_report_errors := force_collect_reports or _is_report_push_errors() + var is_report_script_errors := force_collect_reports or _is_report_script_errors() + for index in records.size(): + if force_collect_reports: + log_entries.append(ErrorLogEntry.extract_push_warning(records, index)) + if is_report_errors: + log_entries.append(ErrorLogEntry.extract_push_error(records, index)) + if is_report_script_errors: + log_entries.append(ErrorLogEntry.extract_error(records, index)) + return log_entries.filter(func(value :ErrorLogEntry) -> bool: return value != null ) + + +func _is_reporting_enabled() -> bool: + return _is_report_script_errors() or _is_report_push_errors() + + +func _is_report_push_errors() -> bool: + return GdUnitSettings.is_report_push_errors() + + +func _is_report_script_errors() -> bool: + return GdUnitSettings.is_report_script_errors() diff --git a/addons/gdUnit4/src/mono/GdUnit4CSharpApi.cs b/addons/gdUnit4/src/mono/GdUnit4CSharpApi.cs new file mode 100644 index 0000000..557cc01 --- /dev/null +++ b/addons/gdUnit4/src/mono/GdUnit4CSharpApi.cs @@ -0,0 +1,50 @@ +using System; +using System.Reflection; +using System.Linq; + +using Godot; +using Godot.Collections; +using GdUnit4; + + +// GdUnit4 GDScript - C# API wrapper +public partial class GdUnit4CSharpApi : Godot.GodotObject +{ + private static Type? apiType; + + private static Type GetApiType() + { + if (apiType == null) + { + var assembly = Assembly.Load("gdUnit4Api"); + apiType = GdUnit4NetVersion() < new Version(4, 2, 2) ? + assembly.GetType("GdUnit4.GdUnit4MonoAPI") : + assembly.GetType("GdUnit4.GdUnit4NetAPI"); + Godot.GD.PrintS($"GdUnit4CSharpApi type:{apiType} loaded."); + } + return apiType!; + } + + private static Version GdUnit4NetVersion() + { + var assembly = Assembly.Load("gdUnit4Api"); + return assembly.GetName().Version!; + } + + private static T InvokeApiMethod(string methodName, params object[] args) + { + var method = GetApiType().GetMethod(methodName)!; + return (T)method.Invoke(null, args)!; + } + + public static string Version() => GdUnit4NetVersion().ToString(); + + public static bool IsTestSuite(string classPath) => InvokeApiMethod("IsTestSuite", classPath); + + public static RefCounted Executor(Node listener) => InvokeApiMethod("Executor", listener); + + public static CsNode? ParseTestSuite(string classPath) => InvokeApiMethod("ParseTestSuite", classPath); + + public static Dictionary CreateTestSuite(string sourcePath, int lineNumber, string testSuitePath) => + InvokeApiMethod("CreateTestSuite", sourcePath, lineNumber, testSuitePath); +} diff --git a/addons/gdUnit4/src/mono/GdUnit4CSharpApiLoader.gd b/addons/gdUnit4/src/mono/GdUnit4CSharpApiLoader.gd new file mode 100644 index 0000000..e828a9e --- /dev/null +++ b/addons/gdUnit4/src/mono/GdUnit4CSharpApiLoader.gd @@ -0,0 +1,64 @@ +extends RefCounted +class_name GdUnit4CSharpApiLoader + + +static func instance() -> Object: + return GdUnitSingleton.instance("GdUnit4CSharpApi", func() -> Object: + if not GdUnit4CSharpApiLoader.is_mono_supported(): + return null + return load("res://addons/gdUnit4/src/mono/GdUnit4CSharpApi.cs").new() + ) + + +static func is_engine_version_supported(engine_version :int = Engine.get_version_info().hex) -> bool: + return engine_version >= 0x40200 + + +# test is Godot mono running +static func is_mono_supported() -> bool: + return ClassDB.class_exists("CSharpScript") and is_engine_version_supported() + + +static func version() -> String: + if not GdUnit4CSharpApiLoader.is_mono_supported(): + return "unknown" + return instance().Version() + + +static func create_test_suite(source_path :String, line_number :int, test_suite_path :String) -> GdUnitResult: + if not GdUnit4CSharpApiLoader.is_mono_supported(): + return GdUnitResult.error("Can't create test suite. No C# support found.") + var result := instance().CreateTestSuite(source_path, line_number, test_suite_path) as Dictionary + if result.has("error"): + return GdUnitResult.error(result.get("error")) + return GdUnitResult.success(result) + + +static func is_test_suite(resource_path :String) -> bool: + if not is_csharp_file(resource_path) or not GdUnit4CSharpApiLoader.is_mono_supported(): + return false + + if resource_path.is_empty(): + if GdUnitSettings.is_report_push_errors(): + push_error("Can't create test suite. Missing resource path.") + return false + return instance().IsTestSuite(resource_path) + + +static func parse_test_suite(source_path :String) -> Node: + if not GdUnit4CSharpApiLoader.is_mono_supported(): + if GdUnitSettings.is_report_push_errors(): + push_error("Can't create test suite. No c# support found.") + return null + return instance().ParseTestSuite(source_path) + + +static func create_executor(listener :Node) -> RefCounted: + if not GdUnit4CSharpApiLoader.is_mono_supported(): + return null + return instance().Executor(listener) + + +static func is_csharp_file(resource_path :String) -> bool: + var ext := resource_path.get_extension() + return ext == "cs" and GdUnit4CSharpApiLoader.is_mono_supported() diff --git a/addons/gdUnit4/src/network/GdUnitServer.gd b/addons/gdUnit4/src/network/GdUnitServer.gd new file mode 100644 index 0000000..9e6cf6b --- /dev/null +++ b/addons/gdUnit4/src/network/GdUnitServer.gd @@ -0,0 +1,41 @@ +@tool +extends Node + +@onready var _server :GdUnitTcpServer = $TcpServer + + +func _ready() -> void: + var result := _server.start() + if result.is_error(): + push_error(result.error_message()) + return + var server_port :int = result.value() + Engine.set_meta("gdunit_server_port", server_port) + _server.client_connected.connect(_on_client_connected) + _server.client_disconnected.connect(_on_client_disconnected) + _server.rpc_data.connect(_receive_rpc_data) + GdUnitCommandHandler.instance().gdunit_runner_stop.connect(_on_gdunit_runner_stop) + + +func _on_client_connected(client_id :int) -> void: + GdUnitSignals.instance().gdunit_client_connected.emit(client_id) + + +func _on_client_disconnected(client_id :int) -> void: + GdUnitSignals.instance().gdunit_client_disconnected.emit(client_id) + + +func _on_gdunit_runner_stop(client_id :int) -> void: + if _server: + _server.disconnect_client(client_id) + + +func _receive_rpc_data(p_rpc :RPC) -> void: + if p_rpc is RPCMessage: + GdUnitSignals.instance().gdunit_message.emit(p_rpc.message()) + return + if p_rpc is RPCGdUnitEvent: + GdUnitSignals.instance().gdunit_event.emit(p_rpc.event()) + return + if p_rpc is RPCGdUnitTestSuite: + GdUnitSignals.instance().gdunit_add_test_suite.emit(p_rpc.dto()) diff --git a/addons/gdUnit4/src/network/GdUnitServer.tscn b/addons/gdUnit4/src/network/GdUnitServer.tscn new file mode 100644 index 0000000..4c7645c --- /dev/null +++ b/addons/gdUnit4/src/network/GdUnitServer.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://addons/gdUnit4/src/network/GdUnitServer.gd" type="Script" id=1] +[ext_resource path="res://addons/gdUnit4/src/network/GdUnitTcpServer.gd" type="Script" id=2] + +[node name="Control" type="Node"] +script = ExtResource( 1 ) + +[node name="TcpServer" type="Node" parent="."] +script = ExtResource( 2 ) diff --git a/addons/gdUnit4/src/network/GdUnitServerConstants.gd b/addons/gdUnit4/src/network/GdUnitServerConstants.gd new file mode 100644 index 0000000..d31eee7 --- /dev/null +++ b/addons/gdUnit4/src/network/GdUnitServerConstants.gd @@ -0,0 +1,6 @@ +class_name GdUnitServerConstants +extends RefCounted + +const DEFAULT_SERVER_START_RETRY_TIMES :int = 5 +const GD_TEST_SERVER_PORT :int = 31002 +const JSON_RESPONSE_DELIMITER :String = "<>" diff --git a/addons/gdUnit4/src/network/GdUnitTask.gd b/addons/gdUnit4/src/network/GdUnitTask.gd new file mode 100644 index 0000000..e0188a0 --- /dev/null +++ b/addons/gdUnit4/src/network/GdUnitTask.gd @@ -0,0 +1,25 @@ +class_name GdUnitTask +extends RefCounted + +const TASK_NAME = "task_name" +const TASK_ARGS = "task_args" + +var _task_name :String +var _fref :Callable + + +func _init(task_name :String,instance :Object,func_name :String) -> void: + _task_name = task_name + if not instance.has_method(func_name): + push_error("Can't create GdUnitTask, Invalid func name '%s' for instance '%s'" % [instance, func_name]) + _fref = Callable(instance, func_name) + + +func name() -> String: + return _task_name + + +func execute(args :Array) -> GdUnitResult: + if args.is_empty(): + return _fref.call() + return _fref.callv(args) diff --git a/addons/gdUnit4/src/network/GdUnitTcpClient.gd b/addons/gdUnit4/src/network/GdUnitTcpClient.gd new file mode 100644 index 0000000..9239d9d --- /dev/null +++ b/addons/gdUnit4/src/network/GdUnitTcpClient.gd @@ -0,0 +1,132 @@ +class_name GdUnitTcpClient +extends Node + +signal connection_succeeded(message :String) +signal connection_failed(message :String) + + +var _host :String +var _port :int +var _client_id :int +var _connected :bool +var _stream :StreamPeerTCP + + +func _ready() -> void: + _connected = false + _stream = StreamPeerTCP.new() + _stream.set_big_endian(true) + + +func stop() -> void: + console("Client: disconnect from server") + if _stream != null: + rpc_send(RPCClientDisconnect.new().with_id(_client_id)) + if _stream != null: + _stream.disconnect_from_host() + _connected = false + + +func start(host :String, port :int) -> GdUnitResult: + _host = host + _port = port + if _connected: + return GdUnitResult.warn("Client already connected ... %s:%d" % [_host, _port]) + + # Connect client to server + if _stream.get_status() != StreamPeerTCP.STATUS_CONNECTED: + var err := _stream.connect_to_host(host, port) + #prints("connect_to_host", host, port, err) + if err != OK: + return GdUnitResult.error("GdUnit3: Can't establish client, error code: %s" % err) + return GdUnitResult.success("GdUnit3: Client connected checked port %d" % port) + + +func _process(_delta :float) -> void: + match _stream.get_status(): + StreamPeerTCP.STATUS_NONE: + return + + StreamPeerTCP.STATUS_CONNECTING: + set_process(false) + # wait until client is connected to server + for retry in 10: + _stream.poll() + console("wait to connect ..") + if _stream.get_status() == StreamPeerTCP.STATUS_CONNECTING: + await get_tree().create_timer(0.500).timeout + if _stream.get_status() == StreamPeerTCP.STATUS_CONNECTED: + set_process(true) + return + set_process(true) + _stream.disconnect_from_host() + console("connection failed") + connection_failed.emit("Connect to TCP Server %s:%d faild!" % [_host, _port]) + + StreamPeerTCP.STATUS_CONNECTED: + if not _connected: + var rpc_ :RPC = null + set_process(false) + while rpc_ == null: + await get_tree().create_timer(0.500).timeout + rpc_ = rpc_receive() + set_process(true) + _client_id = rpc_.client_id() + console("Connected to Server: %d" % _client_id) + connection_succeeded.emit("Connect to TCP Server %s:%d success." % [_host, _port]) + _connected = true + process_rpc() + + StreamPeerTCP.STATUS_ERROR: + console("connection failed") + _stream.disconnect_from_host() + connection_failed.emit("Connect to TCP Server %s:%d faild!" % [_host, _port]) + return + + +func is_client_connected() -> bool: + return _connected + + +func process_rpc() -> void: + if _stream.get_available_bytes() > 0: + var rpc_ := rpc_receive() + if rpc_ is RPCClientDisconnect: + stop() + + +func rpc_send(p_rpc :RPC) -> void: + if _stream != null: + var data := GdUnitServerConstants.JSON_RESPONSE_DELIMITER + p_rpc.serialize() + GdUnitServerConstants.JSON_RESPONSE_DELIMITER + _stream.put_data(data.to_utf8_buffer()) + + +func rpc_receive() -> RPC: + if _stream != null: + while _stream.get_available_bytes() > 0: + var available_bytes := _stream.get_available_bytes() + var data := _stream.get_data(available_bytes) + var received_data := data[1] as PackedByteArray + # data send by Godot has this magic header of 12 bytes + var header := Array(received_data.slice(0, 4)) + if header == [0, 0, 0, 124]: + received_data = received_data.slice(12, available_bytes) + var decoded := received_data.get_string_from_utf8() + if decoded == "": + #prints("decoded is empty", available_bytes, received_data.get_string_from_utf8()) + return null + return RPC.deserialize(decoded) + return null + + +func console(message :String) -> void: + prints("TCP Client:", message) + pass + + +func _on_connection_failed(message :String) -> void: + console("connection faild: " + message) + + +func _on_connection_succeeded(message :String) -> void: + console("connected: " + message) diff --git a/addons/gdUnit4/src/network/GdUnitTcpServer.gd b/addons/gdUnit4/src/network/GdUnitTcpServer.gd new file mode 100644 index 0000000..5ab3f83 --- /dev/null +++ b/addons/gdUnit4/src/network/GdUnitTcpServer.gd @@ -0,0 +1,164 @@ +@tool +class_name GdUnitTcpServer +extends Node + +signal client_connected(client_id :int) +signal client_disconnected(client_id :int) +signal rpc_data(rpc_data :RPC) + +var _server :TCPServer + + +class TcpConnection extends Node: + var _id :int + # we do use untyped here because we using a mock for testing and the static type is break the mock + @warning_ignore("untyped_declaration") + var _stream + var _readBuffer :String = "" + + + func _init(p_server :Variant) -> void: + assert(p_server is TCPServer) + _stream = p_server.take_connection() + _stream.set_big_endian(true) + _id = _stream.get_instance_id() + rpc_send(RPCClientConnect.new().with_id(_id)) + + + func _ready() -> void: + server().client_connected.emit(_id) + + + func close() -> void: + rpc_send(RPCClientDisconnect.new().with_id(_id)) + server().client_disconnected.emit(_id) + _stream.disconnect_from_host() + _readBuffer = "" + + + func id() -> int: + return _id + + + func server() -> GdUnitTcpServer: + return get_parent() + + + func rpc_send(p_rpc :RPC) -> void: + _stream.put_var(p_rpc.serialize(), true) + + + func _process(_delta :float) -> void: + if _stream.get_status() != StreamPeerTCP.STATUS_CONNECTED: + return + receive_packages() + + + func receive_packages() -> void: + var available_bytes :int = _stream.get_available_bytes() + if available_bytes > 0: + var partial_data :Array = _stream.get_partial_data(available_bytes) + # Check for read error. + if partial_data[0] != OK: + push_error("Error getting data from stream: %s " % partial_data[0]) + return + else: + var received_data := partial_data[1] as PackedByteArray + for package in _read_next_data_packages(received_data): + var rpc_ := RPC.deserialize(package) + if rpc_ is RPCClientDisconnect: + close() + server().rpc_data.emit(rpc_) + + + func _read_next_data_packages(data_package :PackedByteArray) -> PackedStringArray: + _readBuffer += data_package.get_string_from_utf8() + var json_array := _readBuffer.split(GdUnitServerConstants.JSON_RESPONSE_DELIMITER) + # We need to check if the current data is terminated by the delemiter (data packets can be split unspecifically). + # If not, store the last part in _readBuffer and complete it on the next data packet that is received + if not _readBuffer.ends_with(GdUnitServerConstants.JSON_RESPONSE_DELIMITER): + _readBuffer = json_array[-1] + json_array.remove_at(json_array.size()-1) + else: + # Reset the buffer if a completely terminated packet was received + _readBuffer = "" + # remove empty packages + for index in json_array.size(): + if index < json_array.size() and json_array[index].is_empty(): + json_array.remove_at(index) + return json_array + + + func console(_message :String) -> void: + #print_debug("TCP Connection:", _message) + pass + + +func _ready() -> void: + _server = TCPServer.new() + client_connected.connect(_on_client_connected) + client_disconnected.connect(_on_client_disconnected) + + +func _notification(what :int) -> void: + if what == NOTIFICATION_PREDELETE: + stop() + + +func start() -> GdUnitResult: + var server_port := GdUnitServerConstants.GD_TEST_SERVER_PORT + var err := OK + for retry in GdUnitServerConstants.DEFAULT_SERVER_START_RETRY_TIMES: + err = _server.listen(server_port, "127.0.0.1") + if err != OK: + prints("GdUnit4: Can't establish server checked port: %d, Error: %s" % [server_port, error_string(err)]) + server_port += 1 + prints("GdUnit4: Retry (%d) ..." % retry) + else: + break + if err != OK: + if err == ERR_ALREADY_IN_USE: + return GdUnitResult.error("GdUnit3: Can't establish server, the server is already in use. Error: %s, " % error_string(err)) + return GdUnitResult.error("GdUnit3: Can't establish server. Error: %s." % error_string(err)) + prints("GdUnit4: Test server successfully started checked port: %d" % server_port) + return GdUnitResult.success(server_port) + + +func stop() -> void: + if _server: + _server.stop() + for connection in get_children(): + if connection is TcpConnection: + connection.close() + remove_child(connection) + + +func disconnect_client(client_id :int) -> void: + for connection in get_children(): + if connection is TcpConnection and connection.id() == client_id: + connection.close() + + +func _process(_delta :float) -> void: + if not _server.is_listening(): + return + # check if connection is ready to be used + if _server.is_connection_available(): + add_child(TcpConnection.new(_server)) + + +func _on_client_connected(client_id :int) -> void: + console("Client connected %d" % client_id) + + +func _on_client_disconnected(client_id :int) -> void: + console("Client disconnected %d" % client_id) + for connection in get_children(): + if connection is TcpConnection and connection.id() == client_id: + remove_child(connection) + + + +func console(_message :String) -> void: + #print_debug("TCP Server:", _message) + pass diff --git a/addons/gdUnit4/src/network/rpc/RPC.gd b/addons/gdUnit4/src/network/rpc/RPC.gd new file mode 100644 index 0000000..190b05a --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/RPC.gd @@ -0,0 +1,24 @@ +class_name RPC +extends RefCounted + + +func serialize() -> String: + return JSON.stringify(inst_to_dict(self)) + + +# using untyped version see comments below +static func deserialize(json_value :String) -> Object: + var json := JSON.new() + var err := json.parse(json_value) + if err != OK: + push_error("Can't deserialize JSON, error at line %d: %s \n json: '%s'" % [json.get_error_line(), json.get_error_message(), json_value]) + return null + var result := json.get_data() as Dictionary + if not typeof(result) == TYPE_DICTIONARY: + push_error("Can't deserialize JSON, error at line %d: %s \n json: '%s'" % [result.error_line, result.error_string, json_value]) + return null + return dict_to_inst(result) + +# this results in orpan node, for more details https://github.com/godotengine/godot/issues/50069 +#func deserialize2(data :Dictionary) -> RPC: +# return dict_to_inst(data) as RPC diff --git a/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd b/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd new file mode 100644 index 0000000..115fea2 --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd @@ -0,0 +1,13 @@ +class_name RPCClientConnect +extends RPC + +var _client_id :int + + +func with_id(p_client_id :int) -> RPCClientConnect: + _client_id = p_client_id + return self + + +func client_id() -> int: + return _client_id diff --git a/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd b/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd new file mode 100644 index 0000000..52ef259 --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd @@ -0,0 +1,13 @@ +class_name RPCClientDisconnect +extends RPC + +var _client_id :int + + +func with_id(p_client_id :int) -> RPCClientDisconnect: + _client_id = p_client_id + return self + + +func client_id() -> int: + return _client_id diff --git a/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd b/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd new file mode 100644 index 0000000..e692aff --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd @@ -0,0 +1,18 @@ +class_name RPCGdUnitEvent +extends RPC + +var _event :Dictionary + + +static func of(p_event :GdUnitEvent) -> RPCGdUnitEvent: + var rpc := RPCGdUnitEvent.new() + rpc._event = p_event.serialize() + return rpc + + +func event() -> GdUnitEvent: + return GdUnitEvent.new().deserialize(_event) + + +func _to_string() -> String: + return "RPCGdUnitEvent: " + str(_event) diff --git a/addons/gdUnit4/src/network/rpc/RPCGdUnitTestSuite.gd b/addons/gdUnit4/src/network/rpc/RPCGdUnitTestSuite.gd new file mode 100644 index 0000000..96c4d96 --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/RPCGdUnitTestSuite.gd @@ -0,0 +1,18 @@ +class_name RPCGdUnitTestSuite +extends RPC + +var _data :Dictionary + + +static func of(test_suite :Node) -> RPCGdUnitTestSuite: + var rpc := RPCGdUnitTestSuite.new() + rpc._data = GdUnitTestSuiteDto.new().serialize(test_suite) + return rpc + + +func dto() -> GdUnitResourceDto: + return GdUnitTestSuiteDto.new().deserialize(_data) + + +func _to_string() -> String: + return "RPCGdUnitTestSuite: " + str(_data) diff --git a/addons/gdUnit4/src/network/rpc/RPCMessage.gd b/addons/gdUnit4/src/network/rpc/RPCMessage.gd new file mode 100644 index 0000000..ddc4925 --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/RPCMessage.gd @@ -0,0 +1,18 @@ +class_name RPCMessage +extends RPC + +var _message :String + + +static func of(p_message :String) -> RPCMessage: + var rpc := RPCMessage.new() + rpc._message = p_message + return rpc + + +func message() -> String: + return _message + + +func _to_string() -> String: + return "RPCMessage: " + _message diff --git a/addons/gdUnit4/src/network/rpc/dtos/GdUnitResourceDto.gd b/addons/gdUnit4/src/network/rpc/dtos/GdUnitResourceDto.gd new file mode 100644 index 0000000..9152c8d --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/dtos/GdUnitResourceDto.gd @@ -0,0 +1,26 @@ +class_name GdUnitResourceDto +extends Resource + +var _name :String +var _path :String + + +func serialize(resource :Node) -> Dictionary: + var serialized := Dictionary() + serialized["name"] = resource.get_name() + serialized["resource_path"] = resource.ResourcePath() + return serialized + + +func deserialize(data :Dictionary) -> GdUnitResourceDto: + _name = data.get("name", "n.a.") + _path = data.get("resource_path", "") + return self + + +func name() -> String: + return _name + + +func path() -> String: + return _path diff --git a/addons/gdUnit4/src/network/rpc/dtos/GdUnitTestCaseDto.gd b/addons/gdUnit4/src/network/rpc/dtos/GdUnitTestCaseDto.gd new file mode 100644 index 0000000..26f5dda --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/dtos/GdUnitTestCaseDto.gd @@ -0,0 +1,33 @@ +class_name GdUnitTestCaseDto +extends GdUnitResourceDto + +var _line_number :int = -1 +var _test_case_names :PackedStringArray = [] + + +func serialize(test_case :Node) -> Dictionary: + var serialized := super.serialize(test_case) + if test_case.has_method("line_number"): + serialized["line_number"] = test_case.line_number() + else: + serialized["line_number"] = test_case.get("LineNumber") + if test_case.has_method("test_case_names"): + serialized["test_case_names"] = test_case.test_case_names() + elif test_case.has_method("TestCaseNames"): + serialized["test_case_names"] = test_case.TestCaseNames() + return serialized + + +func deserialize(data :Dictionary) -> GdUnitResourceDto: + super.deserialize(data) + _line_number = data.get("line_number", -1) + _test_case_names = data.get("test_case_names", []) + return self + + +func line_number() -> int: + return _line_number + + +func test_case_names() -> PackedStringArray: + return _test_case_names diff --git a/addons/gdUnit4/src/network/rpc/dtos/GdUnitTestSuiteDto.gd b/addons/gdUnit4/src/network/rpc/dtos/GdUnitTestSuiteDto.gd new file mode 100644 index 0000000..edbae38 --- /dev/null +++ b/addons/gdUnit4/src/network/rpc/dtos/GdUnitTestSuiteDto.gd @@ -0,0 +1,42 @@ +class_name GdUnitTestSuiteDto +extends GdUnitResourceDto + + +# Dictionary[String, GdUnitTestCaseDto] +var _test_cases_by_name := Dictionary() + + +static func of(test_suite :Node) -> GdUnitTestSuiteDto: + var dto := GdUnitTestSuiteDto.new() + return dto.deserialize(dto.serialize(test_suite)) + + +func serialize(test_suite :Node) -> Dictionary: + var serialized := super.serialize(test_suite) + var test_cases_ := Array() + serialized["test_cases"] = test_cases_ + for test_case in test_suite.get_children(): + test_cases_.append(GdUnitTestCaseDto.new().serialize(test_case)) + return serialized + + +func deserialize(data :Dictionary) -> GdUnitResourceDto: + super.deserialize(data) + var test_cases_ :Array = data.get("test_cases", []) + for test_case :Dictionary in test_cases_: + add_test_case(GdUnitTestCaseDto.new().deserialize(test_case)) + return self + + +func add_test_case(test_case :GdUnitTestCaseDto) -> void: + _test_cases_by_name[test_case.name()] = test_case + + +func test_case_count() -> int: + return _test_cases_by_name.size() + + +func test_cases() -> Array[GdUnitTestCaseDto]: + var test_cases_ :Array[GdUnitTestCaseDto] = [] + test_cases_.append_array(_test_cases_by_name.values()) + return test_cases_ diff --git a/addons/gdUnit4/src/report/GdUnitByPathReport.gd b/addons/gdUnit4/src/report/GdUnitByPathReport.gd new file mode 100644 index 0000000..d08600e --- /dev/null +++ b/addons/gdUnit4/src/report/GdUnitByPathReport.gd @@ -0,0 +1,49 @@ +class_name GdUnitByPathReport +extends GdUnitReportSummary + + +func _init(path :String, report_summaries :Array[GdUnitReportSummary]) -> void: + _resource_path = path + _reports = report_summaries + + +# -> Dictionary[String, Array[GdUnitReportSummary]] +static func sort_reports_by_path(report_summaries :Array[GdUnitReportSummary]) -> Dictionary: + var by_path := Dictionary() + for report in report_summaries: + var suite_path :String = report.path() + var suite_report :Array[GdUnitReportSummary] = by_path.get(suite_path, [] as Array[GdUnitReportSummary]) + suite_report.append(report) + by_path[suite_path] = suite_report + return by_path + + +func path() -> String: + return _resource_path.replace("res://", "") + + +func create_record(report_link :String) -> String: + return GdUnitHtmlPatterns.build(GdUnitHtmlPatterns.TABLE_RECORD_PATH, self, report_link) + + +func write(report_dir :String) -> String: + var template := GdUnitHtmlPatterns.load_template("res://addons/gdUnit4/src/report/template/folder_report.html") + var path_report := GdUnitHtmlPatterns.build(template, self, "") + path_report = apply_testsuite_reports(report_dir, path_report, _reports) + + var output_path := "%s/path/%s.html" % [report_dir, path().replace("/", ".")] + var dir := output_path.get_base_dir() + if not DirAccess.dir_exists_absolute(dir): + DirAccess.make_dir_recursive_absolute(dir) + FileAccess.open(output_path, FileAccess.WRITE).store_string(path_report) + return output_path + + +func apply_testsuite_reports(report_dir :String, template :String, test_suite_reports :Array[GdUnitReportSummary]) -> String: + var table_records := PackedStringArray() + for report in test_suite_reports: + if report is GdUnitTestSuiteReport: + var test_suite_report := report as GdUnitTestSuiteReport + var report_link := test_suite_report.output_path(report_dir).replace(report_dir, "..") + table_records.append(test_suite_report.create_record(report_link)) + return template.replace(GdUnitHtmlPatterns.TABLE_BY_TESTSUITES, "\n".join(table_records)) diff --git a/addons/gdUnit4/src/report/GdUnitHtmlPatterns.gd b/addons/gdUnit4/src/report/GdUnitHtmlPatterns.gd new file mode 100644 index 0000000..1d9cf86 --- /dev/null +++ b/addons/gdUnit4/src/report/GdUnitHtmlPatterns.gd @@ -0,0 +1,94 @@ +class_name GdUnitHtmlPatterns +extends RefCounted + +const TABLE_RECORD_TESTSUITE = """ + + ${testsuite_name} + ${test_count} + ${skipped_count} + ${failure_count} + ${orphan_count} + ${duration} + ${success_percent} + +""" + +const TABLE_RECORD_PATH = """ + + ${path} + ${test_count} + ${skipped_count} + ${failure_count} + ${orphan_count} + ${duration} + ${success_percent} + +""" + + +const TABLE_REPORT_TESTSUITE = """ + + TestSuite hooks + n/a + ${orphan_count} + ${duration} + ${failure-report} + +""" + + +const TABLE_RECORD_TESTCASE = """ + + ${testcase_name} + ${skipped_count} + ${orphan_count} + ${duration} + ${failure-report} + +""" + +const TABLE_BY_PATHS = "${report_table_paths}" +const TABLE_BY_TESTSUITES = "${report_table_testsuites}" +const TABLE_BY_TESTCASES = "${report_table_tests}" + +# the report state success, error, warning +const REPORT_STATE = "${report_state}" +const PATH = "${path}" +const TESTSUITE_COUNT = "${suite_count}" +const TESTCASE_COUNT = "${test_count}" +const FAILURE_COUNT = "${failure_count}" +const SKIPPED_COUNT = "${skipped_count}" +const ORPHAN_COUNT = "${orphan_count}" +const DURATION = "${duration}" +const FAILURE_REPORT = "${failure-report}" +const SUCCESS_PERCENT = "${success_percent}" + +const TESTSUITE_NAME = "${testsuite_name}" +const TESTCASE_NAME = "${testcase_name}" +const REPORT_LINK = "${report_link}" +const BREADCRUMP_PATH_LINK = "${breadcrumb_path_link}" +const BUILD_DATE = "${buid_date}" + + +static func current_date() -> String: + return Time.get_datetime_string_from_system(true, true) + + +static func build(template :String, report :GdUnitReportSummary, report_link :String) -> String: + return template\ + .replace(PATH, report.path())\ + .replace(TESTSUITE_NAME, report.name())\ + .replace(TESTSUITE_COUNT, str(report.suite_count()))\ + .replace(TESTCASE_COUNT, str(report.test_count()))\ + .replace(FAILURE_COUNT, str(report.error_count() + report.failure_count()))\ + .replace(SKIPPED_COUNT, str(report.skipped_count()))\ + .replace(ORPHAN_COUNT, str(report.orphan_count()))\ + .replace(DURATION, LocalTime.elapsed(report.duration()))\ + .replace(SUCCESS_PERCENT, report.calculate_succes_rate(report.test_count(), report.error_count(), report.failure_count()))\ + .replace(REPORT_STATE, report.report_state())\ + .replace(REPORT_LINK, report_link)\ + .replace(BUILD_DATE, current_date()) + + +static func load_template(template_name :String) -> String: + return FileAccess.open(template_name, FileAccess.READ).get_as_text() diff --git a/addons/gdUnit4/src/report/GdUnitHtmlReport.gd b/addons/gdUnit4/src/report/GdUnitHtmlReport.gd new file mode 100644 index 0000000..fda9833 --- /dev/null +++ b/addons/gdUnit4/src/report/GdUnitHtmlReport.gd @@ -0,0 +1,95 @@ +class_name GdUnitHtmlReport +extends GdUnitReportSummary + +const REPORT_DIR_PREFIX = "report_" + +var _report_path :String +var _iteration :int + + +func _init(report_path :String) -> void: + _iteration = GdUnitFileAccess.find_last_path_index(report_path, REPORT_DIR_PREFIX) + 1 + _report_path = "%s/%s%d" % [report_path, REPORT_DIR_PREFIX, _iteration] + DirAccess.make_dir_recursive_absolute(_report_path) + + +func add_testsuite_report(suite_report :GdUnitTestSuiteReport) -> void: + _reports.append(suite_report) + + +@warning_ignore("shadowed_variable") +func add_testcase_report(resource_path :String, suite_report :GdUnitTestCaseReport) -> void: + for report in _reports: + if report.resource_path() == resource_path: + report.add_report(suite_report) + + +@warning_ignore("shadowed_variable") +func update_test_suite_report( + resource_path :String, + duration :int, + _is_error :bool, + is_failed: bool, + _is_warning :bool, + _is_skipped :bool, + skipped_count :int, + failed_count :int, + orphan_count :int, + reports :Array = []) -> void: + + for report in _reports: + if report.resource_path() == resource_path: + report.set_duration(duration) + report.set_failed(is_failed, failed_count) + report.set_skipped(skipped_count) + report.set_orphans(orphan_count) + report.set_reports(reports) + + +@warning_ignore("shadowed_variable") +func update_testcase_report(resource_path :String, test_report :GdUnitTestCaseReport) -> void: + for report in _reports: + if report.resource_path() == resource_path: + report.update(test_report) + + +func write() -> String: + var template := GdUnitHtmlPatterns.load_template("res://addons/gdUnit4/src/report/template/index.html") + var to_write := GdUnitHtmlPatterns.build(template, self, "") + to_write = apply_path_reports(_report_path, to_write, _reports) + to_write = apply_testsuite_reports(_report_path, to_write, _reports) + # write report + var index_file := "%s/index.html" % _report_path + FileAccess.open(index_file, FileAccess.WRITE).store_string(to_write) + GdUnitFileAccess.copy_directory("res://addons/gdUnit4/src/report/template/css/", _report_path + "/css") + return index_file + + +func delete_history(max_reports :int) -> int: + return GdUnitFileAccess.delete_path_index_lower_equals_than(_report_path.get_base_dir(), REPORT_DIR_PREFIX, _iteration-max_reports) + + +func apply_path_reports(report_dir :String, template :String, report_summaries :Array) -> String: + #Dictionary[String, Array[GdUnitReportSummary]] + var path_report_mapping := GdUnitByPathReport.sort_reports_by_path(report_summaries) + var table_records := PackedStringArray() + var paths :Array[String] = [] + paths.append_array(path_report_mapping.keys()) + paths.sort() + for report_path in paths: + var report := GdUnitByPathReport.new(report_path, path_report_mapping.get(report_path)) + var report_link :String = report.write(report_dir).replace(report_dir, ".") + table_records.append(report.create_record(report_link)) + return template.replace(GdUnitHtmlPatterns.TABLE_BY_PATHS, "\n".join(table_records)) + + +func apply_testsuite_reports(report_dir :String, template :String, test_suite_reports :Array[GdUnitReportSummary]) -> String: + var table_records := PackedStringArray() + for report in test_suite_reports: + var report_link :String = report.write(report_dir).replace(report_dir, ".") + table_records.append(report.create_record(report_link)) + return template.replace(GdUnitHtmlPatterns.TABLE_BY_TESTSUITES, "\n".join(table_records)) + + +func iteration() -> int: + return _iteration diff --git a/addons/gdUnit4/src/report/GdUnitReportSummary.gd b/addons/gdUnit4/src/report/GdUnitReportSummary.gd new file mode 100644 index 0000000..41d423e --- /dev/null +++ b/addons/gdUnit4/src/report/GdUnitReportSummary.gd @@ -0,0 +1,143 @@ +class_name GdUnitReportSummary +extends RefCounted + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +const CHARACTERS_TO_ENCODE := { + '<' : '<', + '>' : '>' +} + +var _resource_path :String +var _name :String +var _test_count := 0 +var _failure_count := 0 +var _error_count := 0 +var _orphan_count := 0 +var _skipped_count := 0 +var _duration := 0 +var _reports :Array[GdUnitReportSummary] = [] + + +func name() -> String: + return html_encode(_name) + + +func path() -> String: + return _resource_path.get_base_dir().replace("res://", "") + + +func resource_path() -> String: + return _resource_path + + +func suite_count() -> int: + return _reports.size() + + +func suite_executed_count() -> int: + var executed := _reports.size() + for report in _reports: + if report.test_count() == report.skipped_count(): + executed -= 1 + return executed + + +func test_count() -> int: + var count := _test_count + for report in _reports: + count += report.test_count() + return count + + +func test_executed_count() -> int: + return test_count() - skipped_count() + + +func error_count() -> int: + var count := _error_count + for report in _reports: + count += report.error_count() + return count + + +func failure_count() -> int: + var count := _failure_count + for report in _reports: + count += report.failure_count() + return count + + +func skipped_count() -> int: + var count := _skipped_count + for report in _reports: + count += report.skipped_count() + return count + + +func orphan_count() -> int: + var count := _orphan_count + for report in _reports: + count += report.orphan_count() + return count + + +func duration() -> int: + var count := _duration + for report in _reports: + count += report.duration() + return count + + +func reports() -> Array: + return _reports + + +func add_report(report :GdUnitReportSummary) -> void: + _reports.append(report) + + +func report_state() -> String: + return calculate_state(error_count(), failure_count(), orphan_count()) + + +func succes_rate() -> String: + return calculate_succes_rate(test_count(), error_count(), failure_count()) + + +func calculate_state(p_error_count :int, p_failure_count :int, p_orphan_count :int) -> String: + if p_error_count > 0: + return "error" + if p_failure_count > 0: + return "failure" + if p_orphan_count > 0: + return "warning" + return "success" + + +func calculate_succes_rate(p_test_count :int, p_error_count :int, p_failure_count :int) -> String: + if p_failure_count == 0: + return "100%" + var count := p_test_count-p_failure_count-p_error_count + if count < 0: + return "0%" + return "%d" % (( 0 if count < 0 else count) * 100.0 / p_test_count) + "%" + + +func create_summary(_report_dir :String) -> String: + return "" + + +func html_encode(value :String) -> String: + for key in CHARACTERS_TO_ENCODE.keys() as Array[String]: + value =value.replace(key, CHARACTERS_TO_ENCODE[key]) + return value + + +func convert_rtf_to_html(bbcode :String) -> String: + var as_text: = GdUnitTools.richtext_normalize(bbcode) + var converted := PackedStringArray() + var lines := as_text.split("\n") + for line in lines: + converted.append("

%s

" % line) + return "\n".join(converted) diff --git a/addons/gdUnit4/src/report/GdUnitTestCaseReport.gd b/addons/gdUnit4/src/report/GdUnitTestCaseReport.gd new file mode 100644 index 0000000..deaf790 --- /dev/null +++ b/addons/gdUnit4/src/report/GdUnitTestCaseReport.gd @@ -0,0 +1,58 @@ +class_name GdUnitTestCaseReport +extends GdUnitReportSummary + +var _suite_name :String +var _failure_reports :Array[GdUnitReport] + + +@warning_ignore("shadowed_variable") +func _init( + p_resource_path :String, + p_suite_name :String, + test_name :String, + is_error := false, + _is_failed := false, + failed_count :int = 0, + orphan_count :int = 0, + is_skipped := false, + failure_reports :Array[GdUnitReport] = [], + p_duration :int = 0) -> void: + _resource_path = p_resource_path + _suite_name = p_suite_name + _name = test_name + _error_count = is_error + _failure_count = failed_count + _orphan_count = orphan_count + _skipped_count = is_skipped + _failure_reports = failure_reports + _duration = p_duration + + +func suite_name() -> String: + return _suite_name + + +func failure_report() -> String: + var html_report := "" + for report in _failure_reports: + html_report += convert_rtf_to_html(str(report)) + return html_report + + +func create_record(_report_dir :String) -> String: + return GdUnitHtmlPatterns.TABLE_RECORD_TESTCASE\ + .replace(GdUnitHtmlPatterns.REPORT_STATE, report_state())\ + .replace(GdUnitHtmlPatterns.TESTCASE_NAME, name())\ + .replace(GdUnitHtmlPatterns.SKIPPED_COUNT, str(skipped_count()))\ + .replace(GdUnitHtmlPatterns.ORPHAN_COUNT, str(orphan_count()))\ + .replace(GdUnitHtmlPatterns.DURATION, LocalTime.elapsed(_duration))\ + .replace(GdUnitHtmlPatterns.FAILURE_REPORT, failure_report()) + + +func update(report :GdUnitTestCaseReport) -> void: + _error_count += report.error_count() + _failure_count += report.failure_count() + _orphan_count += report.orphan_count() + _skipped_count += report.skipped_count() + _failure_reports += report._failure_reports + _duration += report.duration() diff --git a/addons/gdUnit4/src/report/GdUnitTestSuiteReport.gd b/addons/gdUnit4/src/report/GdUnitTestSuiteReport.gd new file mode 100644 index 0000000..fa07c8d --- /dev/null +++ b/addons/gdUnit4/src/report/GdUnitTestSuiteReport.gd @@ -0,0 +1,96 @@ +class_name GdUnitTestSuiteReport +extends GdUnitReportSummary + +var _time_stamp :int +var _failure_reports :Array[GdUnitReport] = [] + + +@warning_ignore("shadowed_variable") +func _init(resource_path :String, name :String, test_count :int) -> void: + _resource_path = resource_path + _name = name + _time_stamp = Time.get_unix_time_from_system() as int + _test_count = test_count + + +func create_record(report_link :String) -> String: + return GdUnitHtmlPatterns.build(GdUnitHtmlPatterns.TABLE_RECORD_TESTSUITE, self, report_link) + + +func output_path(report_dir :String) -> String: + return "%s/test_suites/%s.%s.html" % [report_dir, path().replace("/", "."), name()] + + +func path_as_link() -> String: + return "../path/%s.html" % path().replace("/", ".") + + +func failure_report() -> String: + var html_report := "" + for report in _failure_reports: + html_report += convert_rtf_to_html(str(report)) + return html_report + + +func test_suite_failure_report() -> String: + return GdUnitHtmlPatterns.TABLE_REPORT_TESTSUITE\ + .replace(GdUnitHtmlPatterns.REPORT_STATE, report_state())\ + .replace(GdUnitHtmlPatterns.ORPHAN_COUNT, str(orphan_count()))\ + .replace(GdUnitHtmlPatterns.DURATION, LocalTime.elapsed(_duration))\ + .replace(GdUnitHtmlPatterns.FAILURE_REPORT, failure_report()) + + +func write(report_dir :String) -> String: + var template := GdUnitHtmlPatterns.load_template("res://addons/gdUnit4/src/report/template/suite_report.html") + template = GdUnitHtmlPatterns.build(template, self, "")\ + .replace(GdUnitHtmlPatterns.BREADCRUMP_PATH_LINK, path_as_link()) + + var report_output_path := output_path(report_dir) + var test_report_table := PackedStringArray() + if not _failure_reports.is_empty(): + test_report_table.append(test_suite_failure_report()) + for test_report in _reports: + test_report_table.append(test_report.create_record(report_output_path)) + + template = template.replace(GdUnitHtmlPatterns.TABLE_BY_TESTCASES, "\n".join(test_report_table)) + + var dir := report_output_path.get_base_dir() + if not DirAccess.dir_exists_absolute(dir): + DirAccess.make_dir_recursive_absolute(dir) + FileAccess.open(report_output_path, FileAccess.WRITE).store_string(template) + return report_output_path + + +func set_duration(p_duration :int) -> void: + _duration = p_duration + + +func time_stamp() -> int: + return _time_stamp + + +func duration() -> int: + return _duration + + +func set_skipped(skipped :int) -> void: + _skipped_count = skipped + + +func set_orphans(orphans :int) -> void: + _orphan_count = orphans + + +func set_failed(failed :bool, count :int) -> void: + if failed: + _failure_count += count + + +func set_reports(failure_reports :Array[GdUnitReport]) -> void: + _failure_reports = failure_reports + + +func update(test_report :GdUnitTestCaseReport) -> void: + for report in _reports: + if report.name() == test_report.name(): + report.update(test_report) diff --git a/addons/gdUnit4/src/report/JUnitXmlReport.gd b/addons/gdUnit4/src/report/JUnitXmlReport.gd new file mode 100644 index 0000000..a4c040d --- /dev/null +++ b/addons/gdUnit4/src/report/JUnitXmlReport.gd @@ -0,0 +1,143 @@ +# This class implements the JUnit XML file format +# based checked https://github.com/windyroad/JUnit-Schema/blob/master/JUnit.xsd +class_name JUnitXmlReport +extends RefCounted + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") + +const ATTR_CLASSNAME := "classname" +const ATTR_ERRORS := "errors" +const ATTR_FAILURES := "failures" +const ATTR_HOST := "hostname" +const ATTR_ID := "id" +const ATTR_MESSAGE := "message" +const ATTR_NAME := "name" +const ATTR_PACKAGE := "package" +const ATTR_SKIPPED := "skipped" +const ATTR_TESTS := "tests" +const ATTR_TIME := "time" +const ATTR_TIMESTAMP := "timestamp" +const ATTR_TYPE := "type" + +const HEADER := '\n' + +var _report_path :String +var _iteration :int + + +func _init(path :String, iteration :int) -> void: + _iteration = iteration + _report_path = path + + +func write(report :GdUnitReportSummary) -> String: + var result_file: String = "%s/results.xml" % _report_path + var file := FileAccess.open(result_file, FileAccess.WRITE) + if file == null: + push_warning("Can't saving the result to '%s'\n Error: %s" % [result_file, error_string(FileAccess.get_open_error())]) + file.store_string(build_junit_report(report)) + return result_file + + +func build_junit_report(report :GdUnitReportSummary) -> String: + var iso8601_datetime := Time.get_date_string_from_system() + var test_suites := XmlElement.new("testsuites")\ + .attribute(ATTR_ID, iso8601_datetime)\ + .attribute(ATTR_NAME, "report_%s" % _iteration)\ + .attribute(ATTR_TESTS, report.test_count())\ + .attribute(ATTR_FAILURES, report.failure_count())\ + .attribute(ATTR_TIME, JUnitXmlReport.to_time(report.duration()))\ + .add_childs(build_test_suites(report)) + var as_string := test_suites.to_xml() + test_suites.dispose() + return HEADER + as_string + + +func build_test_suites(summary :GdUnitReportSummary) -> Array: + var test_suites :Array[XmlElement] = [] + for index in summary.reports().size(): + var suite_report :GdUnitTestSuiteReport = summary.reports()[index] + var iso8601_datetime := Time.get_datetime_string_from_unix_time(suite_report.time_stamp()) + test_suites.append(XmlElement.new("testsuite")\ + .attribute(ATTR_ID, index)\ + .attribute(ATTR_NAME, suite_report.name())\ + .attribute(ATTR_PACKAGE, suite_report.path())\ + .attribute(ATTR_TIMESTAMP, iso8601_datetime)\ + .attribute(ATTR_HOST, "localhost")\ + .attribute(ATTR_TESTS, suite_report.test_count())\ + .attribute(ATTR_FAILURES, suite_report.failure_count())\ + .attribute(ATTR_ERRORS, suite_report.error_count())\ + .attribute(ATTR_SKIPPED, suite_report.skipped_count())\ + .attribute(ATTR_TIME, JUnitXmlReport.to_time(suite_report.duration()))\ + .add_childs(build_test_cases(suite_report))) + return test_suites + + +func build_test_cases(suite_report :GdUnitTestSuiteReport) -> Array: + var test_cases :Array[XmlElement] = [] + for index in suite_report.reports().size(): + var report :GdUnitTestCaseReport = suite_report.reports()[index] + test_cases.append( XmlElement.new("testcase")\ + .attribute(ATTR_NAME, JUnitXmlReport.encode_xml(report.name()))\ + .attribute(ATTR_CLASSNAME, report.suite_name())\ + .attribute(ATTR_TIME, JUnitXmlReport.to_time(report.duration()))\ + .add_childs(build_reports(report))) + return test_cases + + +func build_reports(test_report :GdUnitTestCaseReport) -> Array: + var failure_reports :Array[XmlElement] = [] + if test_report.failure_count() or test_report.error_count(): + for failure in test_report._failure_reports: + var report := failure as GdUnitReport + if report.is_failure(): + failure_reports.append( XmlElement.new("failure")\ + .attribute(ATTR_MESSAGE, "FAILED: %s:%d" % [test_report._resource_path, report.line_number()])\ + .attribute(ATTR_TYPE, JUnitXmlReport.to_type(report.type()))\ + .text(convert_rtf_to_text(report.message()))) + elif report.is_error(): + failure_reports.append( XmlElement.new("error")\ + .attribute(ATTR_MESSAGE, "ERROR: %s:%d" % [test_report._resource_path, report.line_number()])\ + .attribute(ATTR_TYPE, JUnitXmlReport.to_type(report.type()))\ + .text(convert_rtf_to_text(report.message()))) + if test_report.skipped_count(): + for failure in test_report._failure_reports: + var report := failure as GdUnitReport + failure_reports.append( XmlElement.new("skipped")\ + .attribute(ATTR_MESSAGE, "SKIPPED: %s:%d" % [test_report._resource_path, report.line_number()])) + return failure_reports + + +func convert_rtf_to_text(bbcode :String) -> String: + return GdUnitTools.richtext_normalize(bbcode) + + +static func to_type(type :int) -> String: + match type: + GdUnitReport.SUCCESS: + return "SUCCESS" + GdUnitReport.WARN: + return "WARN" + GdUnitReport.FAILURE: + return "FAILURE" + GdUnitReport.ORPHAN: + return "ORPHAN" + GdUnitReport.TERMINATED: + return "TERMINATED" + GdUnitReport.INTERUPTED: + return "INTERUPTED" + GdUnitReport.ABORT: + return "ABORT" + return "UNKNOWN" + + +static func to_time(duration :int) -> String: + return "%4.03f" % (duration / 1000.0) + + +static func encode_xml(value :String) -> String: + return value.xml_escape(true) + + +#static func to_ISO8601_datetime() -> String: + #return "%04d-%02d-%02dT%02d:%02d:%02d" % [date["year"], date["month"], date["day"], date["hour"], date["minute"], date["second"]] diff --git a/addons/gdUnit4/src/report/XmlElement.gd b/addons/gdUnit4/src/report/XmlElement.gd new file mode 100644 index 0000000..b5d2ed3 --- /dev/null +++ b/addons/gdUnit4/src/report/XmlElement.gd @@ -0,0 +1,68 @@ +class_name XmlElement +extends RefCounted + +var _name :String +# Dictionary[String, String] +var _attributes :Dictionary = {} +var _childs :Array[XmlElement] = [] +var _parent :XmlElement = null +var _text :String = "" + + +func _init(name :String) -> void: + _name = name + + +func dispose() -> void: + for child in _childs: + child.dispose() + _childs.clear() + _attributes.clear() + _parent = null + + +func attribute(name :String, value :Variant) -> XmlElement: + _attributes[name] = str(value) + return self + + +func text(p_text :String) -> XmlElement: + _text = p_text if p_text.ends_with("\n") else p_text + "\n" + return self + + +func add_child(child :XmlElement) -> XmlElement: + _childs.append(child) + child._parent = self + return self + + +func add_childs(childs :Array[XmlElement]) -> XmlElement: + for child in childs: + add_child(child) + return self + + +func indentation() -> String: + return "" if _parent == null else _parent.indentation() + " " + + +func to_xml() -> String: + var attributes := "" + for key in _attributes.keys() as Array[String]: + attributes += ' {attr}="{value}"'.format({"attr": key, "value": _attributes.get(key)}) + + var childs := "" + for child in _childs: + childs += child.to_xml() + + return "{_indentation}<{name}{attributes}>\n{childs}{text}{_indentation}\n"\ + .format({"name": _name, + "attributes": attributes, + "childs": childs, + "_indentation": indentation(), + "text": cdata(_text)}) + + +func cdata(p_text :String) -> String: + return "" if p_text.is_empty() else "\n".format({"text" : p_text}) diff --git a/addons/gdUnit4/src/report/template/css/breadcrumb.css b/addons/gdUnit4/src/report/template/css/breadcrumb.css new file mode 100644 index 0000000..2dd65fe --- /dev/null +++ b/addons/gdUnit4/src/report/template/css/breadcrumb.css @@ -0,0 +1,67 @@ + +.breadcrumb { + display: flex; + border-radius: 6px; + overflow: hidden; + height: 45px; + z-index: 1; + background-color: #055d9c; + font-weight: bold; + font-size: 16px; + margin-top: 0px; + margin-bottom: 20px; + box-shadow: 0 0 3px black; +} + +.breadcrumb a { + position: relative; + display: flex; + -ms-flex-positive: 1; + flex-grow: 1; + text-decoration: none; + margin: auto; + height: 100%; + color: white; +} + +.breadcrumb a:first-child { + padding-left: 5.2px; +} + +.breadcrumb a:last-child { + padding-right: 5.2px; +} + +.breadcrumb a:after { + content: ""; + position: absolute; + display: inline-block; + width: 45px; + height: 45px; + top: 0; + right: -20px; + background-color: #055d9c; + border-top-right-radius: 5px; + transform: scale(0.707) rotate(45deg); + box-shadow: 2px -2px rgba(0,0,0,0.25); + z-index: 1; +} + +.breadcrumb a:last-child:after { + content: none; +} + +.breadcrumb a.active, .breadcrumb a:hover { + background: #347bad; + color: white; + text-decoration: underline; +} + +.breadcrumb a.active:after, .breadcrumb a:hover:after { + background: #347bad; +} + +.breadcrumb span { + margin:inherit; + z-index: 2; +} diff --git a/addons/gdUnit4/src/report/template/css/icon.png b/addons/gdUnit4/src/report/template/css/icon.png new file mode 100644 index 0000000..eeac292 Binary files /dev/null and b/addons/gdUnit4/src/report/template/css/icon.png differ diff --git a/addons/gdUnit4/src/report/template/css/icon.png.import b/addons/gdUnit4/src/report/template/css/icon.png.import new file mode 100644 index 0000000..c1a2062 --- /dev/null +++ b/addons/gdUnit4/src/report/template/css/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8duoevjrvx65" +path="res://.godot/imported/icon.png-62697e17645466394a12e1821970bc28.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/report/template/css/icon.png" +dest_files=["res://.godot/imported/icon.png-62697e17645466394a12e1821970bc28.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/src/report/template/css/style.css b/addons/gdUnit4/src/report/template/css/style.css new file mode 100644 index 0000000..747d57c --- /dev/null +++ b/addons/gdUnit4/src/report/template/css/style.css @@ -0,0 +1,312 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; + background: #dbf1ff; +} + +footer { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + height: 30px; + font-size: 14px; + white-space: nowrap; + background-image: linear-gradient(to bottom right, #347bad, #055d9c); +} + +footer a { + padding-left: 5px; +} + +footer p { + padding-left: 10px; +} + +.header { + padding-top: 5px; + padding-bottom: 5px; + width: 100%; + height: 100px; + text-align: left; + background-image: linear-gradient(to bottom right, #347bad, #055d9c); +} + +.header h1 { + font-size: 200%; + display: flex; + line-height: 64px; + text-align: center; + text-shadow: 2px 2px 5px black; +} + +.header h1 .color1 { + color: #9887c4; +} + +.header h1 .color2 { + color: #7a57d6; +} + +.header h1 .color3 { + color: #2fa5f5; + padding-left: 10px; +} + +.header img { + padding-left: 50px; + width: 64px; + height: 64px; + padding-right: 10px; +} + +.content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +.content h1 { + font-size: 130%; + text-align: left; + margin-bottom: 10px; + margin: 0; + padding: 0; +} + +.grid-container { + display: grid; + grid-template-columns: 420px 400px auto; + margin-bottom: 20px; +} + +.grid-item { + border-radius: 15px; + border: 2px solid #9887c4; + padding: 10px; + margin: 5px; + box-shadow: 0 0 10px #9887c4; +} + +.summary table { + border-collapse: collapse; + border-collapse: inherit; + border-spacing: 10px 10px; +} + +.summary cell { + width: 110px; + font-size: 110%; + text-align: left; +} + +.summary .counter, .percent { + width: 300px; + font-size: 120%; + font-weight: bold; + text-align: right; + box-shadow: 0 0 3px black; +} + +.report { + margin-top: 10px; + margin-bottom: 10px; +} + +/* Style tab links */ +input, section { + clear: both; + padding-top: 0px; + padding-bottom: 0px; + display: none; + background-color: transparent; + box-shadow: 0 0 5px black; +} + +label { + width: auto !important; + min-width: 200px; + height: 20px; + + font-weight: bold; + font-size: 16px; + color: white; + + margin: auto; + display: flex; + float: left; + justify-content: space-between; + + padding-top: 18px; + padding-left: 10px; + padding-right: 10px; + padding-bottom: 9px; + + border-top: 1px solid #DDD; + border-right: 1px solid #DDD; + border-left: 1px solid #DDD; + + -moz-border-radius: 7px; + border-radius: 8px 4px 0px 0px; + text-decoration: none; + background-color: #055d9c +} + +label:hover { + cursor: pointer; + text-decoration: underline; +} + +#tab1:checked ~ #content1, #tab2:checked ~ #content2, #tab3:checked ~ #content3 { + display: block; +} + +input:checked + label { + height: 14px; + border-top: 8px solid #9887c4; + border-right: 1px solid #9887c4; + border-left: 1px solid #9887c4; + border-bottom-color: transparent; + background-color: #347bad; + box-shadow: -2px -2px 2px #9887c4; +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +.tab-report-grid { + display: grid; + grid-template-columns: 60% 40%; + height: 400px; + margin-bottom: 20px; +} + +.grid-item { + overflow: auto; +} + +div.tab table { + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid 1px #055d9c; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; + padding-right: 10px; +} + +div.tab th:first-child { + padding-left: 5px; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 5px; + text-align: left; +} + +div.tab td.numeric, div.tab { + text-align: right; +} + +div.tab td.report-column, th.report-column { + display:none; +} + +div.tab td.success, div.tab a.success { + color: #03a606; +} + +div.tab td.error, div.tab a.error { + color: #bf3600; +} + +div.tab td.failure, div.tab a.failure { + color: #bf3600; +} + +div.tab td.warning, div.tab a.warning { + color: #cca704; +} + +div.tab tr:hover { + background-color: #d9e7fa; + box-shadow: 0 0 5px black; +} + +div.tab tr.selected { + background-color: #347bad; +} + +div.tab th { + width: 100%; + height: 40px; + background-color: #347bad; + color: white; + font-weight: bold; +} + +.success_percent { + font-size: 750%; +} + +.border_success { + border: solid 3px #03a606; + background-image: repeating-linear-gradient(45deg, white, white 20%, #03a606); +} + +.border_error { + border: solid 3px #bf3600; + background-image: repeating-linear-gradient(45deg, #e86363, white 0%, #bf3600); +} + +.border_failure { + border: solid 3px #bf3600; + background-image: repeating-linear-gradient(45deg, #e86363, white 0%, #bf3600); +} + +div.logging { + padding: 10px; + height: 400px; + margin: 0px; + background-image: linear-gradient(to bottom right, #347bad, #055d9c); + color: white; +} + +div.logging p { + padding: 10px; + font: arial; + background-color: #dbf1ff; + height: 85%; +} + +div.report-column { + margin-top: 10px; + width: 100%; + height: 300px; + font: arial; + font-size: 16; + text-align: left; + background-color: #dbf1ff; +} diff --git a/addons/gdUnit4/src/report/template/folder_report.html b/addons/gdUnit4/src/report/template/folder_report.html new file mode 100644 index 0000000..6f21772 --- /dev/null +++ b/addons/gdUnit4/src/report/template/folder_report.html @@ -0,0 +1,99 @@ + + + + + + Testsuite Results + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TestSuites${suite_count}
Tests${test_count}
Skipped${skipped_count}
Failures${failure_count}
Orphans${orphan_count}
Duration${duration}
+
+
+

Success Rate

+ + + + +
${success_percent}
+
+
+

History

+

Coming Next

+
+
+ + + +
+
+ + + +
+
+ + + + + + + + + + + + + + ${report_table_testsuites} + +
TestsSkippedFailuresOrphansDurationSuccess rate
+
+
+
+
+
+ +
+

Generated byGdUnit4 at ${buid_date}

+
+ + + diff --git a/addons/gdUnit4/src/report/template/index.html b/addons/gdUnit4/src/report/template/index.html new file mode 100644 index 0000000..2f6571e --- /dev/null +++ b/addons/gdUnit4/src/report/template/index.html @@ -0,0 +1,123 @@ + + + + + + Report Summary + + + + +
+

GdUnit4 Report

+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TestSuites${suite_count}
Tests${test_count}
Skipped${skipped_count}
Failures${failure_count}
Orphans${orphan_count}
Duration${duration}
+
+
+

Success Rate

+ + + + +
${success_percent}
+
+
+

History

+

Coming Next

+
+
+ +
+

Reports

+
+ + + + + + + +
+
+ + + + + + + + + + + + + + ${report_table_testsuites} + +
TestsSkippedFailuresOrphansDurationSuccess rate
+
+
+
+
+ + + + + + + + + + + + + + ${report_table_paths} + +
TestsSkippedFailuresOrphansDurationSuccess rate
+
+
+
+
+

${log_file}

+

+
+
+
+
+
+ +
+

Generated byGdUnit4 at ${buid_date}

+
+ + diff --git a/addons/gdUnit4/src/report/template/suite_report.html b/addons/gdUnit4/src/report/template/suite_report.html new file mode 100644 index 0000000..94fa47d --- /dev/null +++ b/addons/gdUnit4/src/report/template/suite_report.html @@ -0,0 +1,109 @@ + + + + + + + Testsuite results + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
Tests${test_count}
Skipped${skipped_count}
Failures${failure_count}
Orphans${orphan_count}
Duration${duration}
+
+
+

Success Rate

+ + + + +
${success_percent}
+
+
+

History

+

Coming Next

+
+
+ + + +
+
+
+ + + + + + + + + + + + ${report_table_tests} + +
TestcaseSkippedOrphansDurationReport
+
+
+

Failure Report

+
+
+
+
+
+ +
+

Generated byGdUnit4 at ${buid_date}

+
+ + + \ No newline at end of file diff --git a/addons/gdUnit4/src/spy/GdUnitSpyBuilder.gd b/addons/gdUnit4/src/spy/GdUnitSpyBuilder.gd new file mode 100644 index 0000000..03a184e --- /dev/null +++ b/addons/gdUnit4/src/spy/GdUnitSpyBuilder.gd @@ -0,0 +1,112 @@ +class_name GdUnitSpyBuilder +extends GdUnitClassDoubler + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") +const SPY_TEMPLATE :GDScript = preload("res://addons/gdUnit4/src/spy/GdUnitSpyImpl.gd") + + +static func build(to_spy :Variant, debug_write := false) -> Variant: + if GdObjects.is_singleton(to_spy): + push_error("Spy on a Singleton is not allowed! '%s'" % to_spy.get_class()) + return null + # if resource path load it before + if GdObjects.is_scene_resource_path(to_spy): + if not FileAccess.file_exists(to_spy): + push_error("Can't build spy on scene '%s'! The given resource not exists!" % to_spy) + return null + to_spy = load(to_spy) + # spy checked PackedScene + if GdObjects.is_scene(to_spy): + return spy_on_scene(to_spy.instantiate(), debug_write) + # spy checked a scene instance + if GdObjects.is_instance_scene(to_spy): + return spy_on_scene(to_spy, debug_write) + + var spy := spy_on_script(to_spy, [], debug_write) + if spy == null: + return null + var spy_instance :Variant = spy.new() + copy_properties(to_spy, spy_instance) + GdUnitObjectInteractions.reset(spy_instance) + spy_instance.__set_singleton(to_spy) + # we do not call the original implementation for _ready and all input function, this is actualy done by the engine + spy_instance.__exclude_method_call([ "_input", "_gui_input", "_input_event", "_unhandled_input"]) + return register_auto_free(spy_instance) + + +static func get_class_info(clazz :Variant) -> Dictionary: + var clazz_path := GdObjects.extract_class_path(clazz) + var clazz_name :String = GdObjects.extract_class_name(clazz).value() + return { + "class_name" : clazz_name, + "class_path" : clazz_path + } + + +static func spy_on_script(instance :Variant, function_excludes :PackedStringArray, debug_write :bool) -> GDScript: + if GdArrayTools.is_array_type(instance): + if GdUnitSettings.is_verbose_assert_errors(): + push_error("Can't build spy checked type '%s'! Spy checked Container Built-In Type not supported!" % instance.get_class()) + return null + var class_info := get_class_info(instance) + var clazz_name :String = class_info.get("class_name") + var clazz_path :PackedStringArray = class_info.get("class_path", [clazz_name]) + if not GdObjects.is_instance(instance): + if GdUnitSettings.is_verbose_assert_errors(): + push_error("Can't build spy for class type '%s'! Using an instance instead e.g. 'spy()'" % [clazz_name]) + return null + var lines := load_template(SPY_TEMPLATE.source_code, class_info, instance) + lines += double_functions(instance, clazz_name, clazz_path, GdUnitSpyFunctionDoubler.new(), function_excludes) + + var spy := GDScript.new() + spy.source_code = "\n".join(lines) + spy.resource_name = "Spy%s.gd" % clazz_name + spy.resource_path = GdUnitFileAccess.create_temp_dir("spy") + "/Spy%s_%d.gd" % [clazz_name, Time.get_ticks_msec()] + + if debug_write: + DirAccess.remove_absolute(spy.resource_path) + ResourceSaver.save(spy, spy.resource_path) + var error := spy.reload(true) + if error != OK: + push_error("Unexpected Error!, SpyBuilder error, please contact the developer.") + return null + return spy + + +static func spy_on_scene(scene :Node, debug_write :bool) -> Object: + if scene.get_script() == null: + if GdUnitSettings.is_verbose_assert_errors(): + push_error("Can't create a spy checked a scene without script '%s'" % scene.get_scene_file_path()) + return null + # buils spy checked original script + var scene_script :Object = scene.get_script().new() + var spy := spy_on_script(scene_script, GdUnitClassDoubler.EXLCUDE_SCENE_FUNCTIONS, debug_write) + scene_script.free() + if spy == null: + return null + # replace original script whit spy + scene.set_script(spy) + return register_auto_free(scene) + + +const EXCLUDE_PROPERTIES_TO_COPY = ["script", "type"] + + +static func copy_properties(source :Object, dest :Object) -> void: + for property in source.get_property_list(): + var property_name :String = property["name"] + var property_value :Variant = source.get(property_name) + if EXCLUDE_PROPERTIES_TO_COPY.has(property_name): + continue + #if dest.get(property_name) == null: + # prints("|%s|" % property_name, source.get(property_name)) + + # check for invalid name property + if property_name == "name" and property_value == "": + dest.set(property_name, ""); + continue + dest.set(property_name, property_value) + + +static func register_auto_free(obj :Variant) -> Variant: + return GdUnitThreadManager.get_current_context().get_execution_context().register_auto_free(obj) diff --git a/addons/gdUnit4/src/spy/GdUnitSpyFunctionDoubler.gd b/addons/gdUnit4/src/spy/GdUnitSpyFunctionDoubler.gd new file mode 100644 index 0000000..20b8e89 --- /dev/null +++ b/addons/gdUnit4/src/spy/GdUnitSpyFunctionDoubler.gd @@ -0,0 +1,75 @@ +class_name GdUnitSpyFunctionDoubler +extends GdFunctionDoubler + + +const TEMPLATE_RETURN_VARIANT = """ + var args :Array = ["$(func_name)", $(arguments)] + + if $(instance)__is_verify_interactions(): + $(instance)__verify_interactions(args) + return ${default_return_value} + else: + $(instance)__save_function_interaction(args) + + if $(instance)__do_call_real_func("$(func_name)"): + return $(await)super($(arguments)) + return ${default_return_value} + +""" + + +const TEMPLATE_RETURN_VOID = """ + var args :Array = ["$(func_name)", $(arguments)] + + if $(instance)__is_verify_interactions(): + $(instance)__verify_interactions(args) + return + else: + $(instance)__save_function_interaction(args) + + if $(instance)__do_call_real_func("$(func_name)"): + $(await)super($(arguments)) + +""" + + +const TEMPLATE_RETURN_VOID_VARARG = """ + var varargs :Array = __filter_vargs([$(varargs)]) + var args :Array = ["$(func_name)", $(arguments)] + varargs + + if $(instance)__is_verify_interactions(): + $(instance)__verify_interactions(args) + return + else: + $(instance)__save_function_interaction(args) + + $(await)$(instance)__call_func("$(func_name)", [$(arguments)] + varargs) + +""" + + +const TEMPLATE_RETURN_VARIANT_VARARG = """ + var varargs :Array = __filter_vargs([$(varargs)]) + var args :Array = ["$(func_name)", $(arguments)] + varargs + + if $(instance)__is_verify_interactions(): + $(instance)__verify_interactions(args) + return ${default_return_value} + else: + $(instance)__save_function_interaction(args) + + return $(await)$(instance)__call_func("$(func_name)", [$(arguments)] + varargs) + +""" + + +func _init(push_errors :bool = false) -> void: + super._init(push_errors) + + +func get_template(return_type :Variant, is_vararg :bool) -> String: + if is_vararg: + return TEMPLATE_RETURN_VOID_VARARG if return_type == TYPE_NIL else TEMPLATE_RETURN_VARIANT_VARARG + if return_type is StringName: + return TEMPLATE_RETURN_VARIANT + return TEMPLATE_RETURN_VOID if (return_type == TYPE_NIL or return_type == GdObjects.TYPE_VOID) else TEMPLATE_RETURN_VARIANT diff --git a/addons/gdUnit4/src/spy/GdUnitSpyImpl.gd b/addons/gdUnit4/src/spy/GdUnitSpyImpl.gd new file mode 100644 index 0000000..3b61e86 --- /dev/null +++ b/addons/gdUnit4/src/spy/GdUnitSpyImpl.gd @@ -0,0 +1,44 @@ + +const __INSTANCE_ID = "${instance_id}" +const __SOURCE_CLASS = "${source_class}" + +var __instance_delegator :Object +var __excluded_methods :PackedStringArray = [] + + +static func __instance() -> Variant: + return Engine.get_meta(__INSTANCE_ID) + + +func _notification(what :int) -> void: + if what == NOTIFICATION_PREDELETE: + if Engine.has_meta(__INSTANCE_ID): + Engine.remove_meta(__INSTANCE_ID) + + +func __instance_id() -> String: + return __INSTANCE_ID + + +func __set_singleton(delegator :Object) -> void: + # store self need to mock static functions + Engine.set_meta(__INSTANCE_ID, self) + __instance_delegator = delegator + + +func __release_double() -> void: + # we need to release the self reference manually to prevent orphan nodes + Engine.remove_meta(__INSTANCE_ID) + __instance_delegator = null + + +func __do_call_real_func(func_name :String) -> bool: + return not __excluded_methods.has(func_name) + + +func __exclude_method_call(exluded_methods :PackedStringArray) -> void: + __excluded_methods.append_array(exluded_methods) + + +func __call_func(func_name :String, arguments :Array) -> Variant: + return __instance_delegator.callv(func_name, arguments) diff --git a/addons/gdUnit4/src/ui/EditorFileSystemControls.gd b/addons/gdUnit4/src/ui/EditorFileSystemControls.gd new file mode 100644 index 0000000..ebfd076 --- /dev/null +++ b/addons/gdUnit4/src/ui/EditorFileSystemControls.gd @@ -0,0 +1,25 @@ +# A tool to provide extended filesystem editor functionallity +class_name EditorFileSystemControls +extends RefCounted + + +# Register the given context menu to the filesystem dock +# Is called when the plugin is activated +# The filesystem popup is connected to the EditorFileSystemContextMenuHandler +static func register_context_menu(menu: Array[GdUnitContextMenuItem]) -> void: + Engine.get_main_loop().root.add_child.call_deferred(EditorFileSystemContextMenuHandler.new(menu)) + + +# Unregisteres all registerend context menus and gives the EditorFileSystemContextMenuHandler> free +# Is called when the plugin is deactivated +static func unregister_context_menu() -> void: + EditorFileSystemContextMenuHandler.dispose() + + +static func _print_menu(popup: PopupMenu) -> void: + for itemIndex in popup.item_count: + prints("get_item_id", popup.get_item_id(itemIndex)) + prints("get_item_accelerator", popup.get_item_accelerator(itemIndex)) + prints("get_item_shortcut", popup.get_item_shortcut(itemIndex)) + prints("get_item_text", popup.get_item_text(itemIndex)) + prints() diff --git a/addons/gdUnit4/src/ui/GdUnitConsole.gd b/addons/gdUnit4/src/ui/GdUnitConsole.gd new file mode 100644 index 0000000..283aa1e --- /dev/null +++ b/addons/gdUnit4/src/ui/GdUnitConsole.gd @@ -0,0 +1,168 @@ +@tool +extends Control + +const TITLE = "gdUnit4 ${version} Console" + +@onready var header := $VBoxContainer/Header +@onready var title: RichTextLabel = $VBoxContainer/Header/header_title +@onready var output: RichTextLabel = $VBoxContainer/Console/TextEdit + +var _text_color: Color +var _function_color: Color +var _engine_type_color: Color +var _statistics := {} +var _summary := { + "total_count": 0, + "error_count": 0, + "failed_count": 0, + "skipped_count": 0, + "orphan_nodes": 0 +} + + +func _ready() -> void: + init_colors() + GdUnitFonts.init_fonts(output) + GdUnit4Version.init_version_label(title) + GdUnitSignals.instance().gdunit_event.connect(_on_gdunit_event) + GdUnitSignals.instance().gdunit_message.connect(_on_gdunit_message) + GdUnitSignals.instance().gdunit_client_connected.connect(_on_gdunit_client_connected) + GdUnitSignals.instance().gdunit_client_disconnected.connect(_on_gdunit_client_disconnected) + output.clear() + + +func _notification(what: int) -> void: + if what == EditorSettings.NOTIFICATION_EDITOR_SETTINGS_CHANGED: + init_colors() + if what == NOTIFICATION_PREDELETE: + var instance := GdUnitSignals.instance() + if instance.gdunit_event.is_connected(_on_gdunit_event): + instance.gdunit_event.disconnect(_on_gdunit_event) + if instance.gdunit_message.is_connected(_on_gdunit_event): + instance.gdunit_message.disconnect(_on_gdunit_message) + if instance.gdunit_client_connected.is_connected(_on_gdunit_event): + instance.gdunit_client_connected.disconnect(_on_gdunit_client_connected) + if instance.gdunit_client_disconnected.is_connected(_on_gdunit_event): + instance.gdunit_client_disconnected.disconnect(_on_gdunit_client_disconnected) + + +func init_colors() -> void: + var settings := EditorInterface.get_editor_settings() + _text_color = settings.get_setting("text_editor/theme/highlighting/text_color") + _function_color = settings.get_setting("text_editor/theme/highlighting/function_color") + _engine_type_color = settings.get_setting("text_editor/theme/highlighting/engine_type_color") + + +func init_statistics(event: GdUnitEvent) -> void: + _statistics["total_count"] = event.total_count() + _statistics["error_count"] = 0 + _statistics["failed_count"] = 0 + _statistics["skipped_count"] = 0 + _statistics["orphan_nodes"] = 0 + _summary["total_count"] += event.total_count() + + +func reset_statistics() -> void: + for k: String in _statistics.keys(): + _statistics[k] = 0 + for k: String in _summary.keys(): + _summary[k] = 0 + + +func update_statistics(event: GdUnitEvent) -> void: + _statistics["error_count"] += event.error_count() + _statistics["failed_count"] += event.failed_count() + _statistics["skipped_count"] += event.skipped_count() + _statistics["orphan_nodes"] += event.orphan_nodes() + _summary["error_count"] += event.error_count() + _summary["failed_count"] += event.failed_count() + _summary["skipped_count"] += event.skipped_count() + _summary["orphan_nodes"] += event.orphan_nodes() + + +func print_message(message: String, color: Color=_text_color, indent:=0) -> void: + for i in indent: + output.push_indent(1) + output.push_color(color) + output.append_text(message) + output.pop() + for i in indent: + output.pop() + + +func println_message(message: String, color: Color=_text_color, indent:=-1) -> void: + print_message(message, color, indent) + output.newline() + + +func line_number(report: GdUnitReport) -> String: + return str(report._line_number) if report._line_number != -1 else "" + + +func _on_gdunit_event(event: GdUnitEvent) -> void: + match event.type(): + GdUnitEvent.INIT: + reset_statistics() + + GdUnitEvent.STOP: + print_message("Summary:", Color.DODGER_BLUE) + println_message("| %d total | %d error | %d failed | %d skipped | %d orphans |" % [_summary["total_count"], _summary["error_count"], _summary["failed_count"], _summary["skipped_count"], _summary["orphan_nodes"]], _text_color, 1) + print_message("[wave][/wave]") + + GdUnitEvent.TESTSUITE_BEFORE: + init_statistics(event) + print_message("Execute: ", Color.DODGER_BLUE) + println_message(event._suite_name, _engine_type_color) + + GdUnitEvent.TESTSUITE_AFTER: + update_statistics(event) + if not event.reports().is_empty(): + println_message("\t" + event._suite_name, _engine_type_color) + for report: GdUnitReport in event.reports(): + println_message("line %s: %s" % [line_number(report), report._message], _text_color, 2) + if event.is_success(): + print_message("[wave]PASSED[/wave]", Color.LIGHT_GREEN) + else: + print_message("[shake rate=5 level=10][b]FAILED[/b][/shake]", Color.FIREBRICK) + print_message(" | %d total | %d error | %d failed | %d skipped | %d orphans |" % [_statistics["total_count"], _statistics["error_count"], _statistics["failed_count"], _statistics["skipped_count"], _statistics["orphan_nodes"]]) + println_message("%+12s" % LocalTime.elapsed(event.elapsed_time())) + println_message(" ") + + GdUnitEvent.TESTCASE_BEFORE: + var spaces := "-%d" % (80 - event._suite_name.length()) + print_message(event._suite_name, _engine_type_color, 1) + print_message(":") + print_message(("%" + spaces + "s") % event._test_name, _function_color) + + GdUnitEvent.TESTCASE_AFTER: + var reports := event.reports() + update_statistics(event) + if event.is_success(): + print_message("PASSED", Color.LIGHT_GREEN) + elif event.is_skipped(): + print_message("SKIPPED", Color.GOLDENROD) + elif event.is_error() or event.is_failed(): + print_message("[wave]FAILED[/wave]", Color.FIREBRICK) + elif event.is_warning(): + print_message("WARNING", Color.YELLOW) + println_message(" %+12s" % LocalTime.elapsed(event.elapsed_time())) + + for report: GdUnitReport in event.reports(): + println_message("line %s: %s" % [line_number(report), report._message], _text_color, 2) + + +func _on_gdunit_client_connected(client_id: int) -> void: + output.clear() + output.append_text("[color=#9887c4]GdUnit Test Client connected with id %d[/color]\n" % client_id) + output.newline() + + +func _on_gdunit_client_disconnected(client_id: int) -> void: + output.append_text("[color=#9887c4]GdUnit Test Client disconnected with id %d[/color]\n" % client_id) + output.newline() + + +func _on_gdunit_message(message: String) -> void: + output.newline() + output.append_text(message) + output.newline() diff --git a/addons/gdUnit4/src/ui/GdUnitConsole.tscn b/addons/gdUnit4/src/ui/GdUnitConsole.tscn new file mode 100644 index 0000000..6aa9c78 --- /dev/null +++ b/addons/gdUnit4/src/ui/GdUnitConsole.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=2 format=3 uid="uid://dm0wvfyeew7vd"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/GdUnitConsole.gd" id="1"] + +[node name="Control" type="Control"] +use_parent_material = true +clip_contents = true +custom_minimum_size = Vector2(0, 200) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +use_parent_material = true +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Header" type="PanelContainer" parent="VBoxContainer"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +auto_translate = false +localize_numeral_system = false +mouse_filter = 2 + +[node name="header_title" type="RichTextLabel" parent="VBoxContainer/Header"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +auto_translate = false +localize_numeral_system = false +mouse_filter = 2 +bbcode_enabled = true +scroll_active = false +autowrap_mode = 0 +shortcut_keys_enabled = false + +[node name="Console" type="ScrollContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="TextEdit" type="RichTextLabel" parent="VBoxContainer/Console"] +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +bbcode_enabled = true +scroll_following = true diff --git a/addons/gdUnit4/src/ui/GdUnitFonts.gd b/addons/gdUnit4/src/ui/GdUnitFonts.gd new file mode 100644 index 0000000..ad5c687 --- /dev/null +++ b/addons/gdUnit4/src/ui/GdUnitFonts.gd @@ -0,0 +1,43 @@ +class_name GdUnitFonts +extends RefCounted + +const FONT_MONO = "res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Regular.ttf" +const FONT_MONO_BOLT = "res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Bold.ttf" +const FONT_MONO_BOLT_ITALIC = "res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-BoldItalic.ttf" +const FONT_MONO_ITALIC = "res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Italic.ttf" + + +static func init_fonts(item: CanvasItem) -> float: + # add a default fallback font + item.set("theme_override_fonts/font", load_and_resize_font(FONT_MONO, 16)) + item.set("theme_override_fonts/normal_font", load_and_resize_font(FONT_MONO, 16)) + item.set("theme_override_font_sizes/font_size", 16) + if Engine.is_editor_hint(): + var settings := EditorInterface.get_editor_settings() + var scale_factor := EditorInterface.get_editor_scale() + var font_size: float = settings.get_setting("interface/editor/main_font_size") + font_size *= scale_factor + var font_mono := load_and_resize_font(FONT_MONO, font_size) + item.set("theme_override_fonts/normal_font", font_mono) + item.set("theme_override_fonts/bold_font", load_and_resize_font(FONT_MONO_BOLT, font_size)) + item.set("theme_override_fonts/italics_font", load_and_resize_font(FONT_MONO_ITALIC, font_size)) + item.set("theme_override_fonts/bold_italics_font", load_and_resize_font(FONT_MONO_BOLT_ITALIC, font_size)) + item.set("theme_override_fonts/mono_font", font_mono) + item.set("theme_override_font_sizes/font_size", font_size) + item.set("theme_override_font_sizes/normal_font_size", font_size) + item.set("theme_override_font_sizes/bold_font_size", font_size) + item.set("theme_override_font_sizes/italics_font_size", font_size) + item.set("theme_override_font_sizes/bold_italics_font_size", font_size) + item.set("theme_override_font_sizes/mono_font_size", font_size) + return font_size + return 16.0 + + +static func load_and_resize_font(font_resource: String, size: float) -> Font: + var font: FontFile = ResourceLoader.load(font_resource, "FontFile") + if font == null: + push_error("Can't load font '%s'" % font_resource) + return null + var resized_font := font.duplicate() + resized_font.fixed_size = int(size) + return resized_font diff --git a/addons/gdUnit4/src/ui/GdUnitInspector.gd b/addons/gdUnit4/src/ui/GdUnitInspector.gd new file mode 100644 index 0000000..daadc86 --- /dev/null +++ b/addons/gdUnit4/src/ui/GdUnitInspector.gd @@ -0,0 +1,85 @@ +@tool +class_name GdUnitInspecor +extends Panel + + +var _command_handler := GdUnitCommandHandler.instance() + + +func _ready() -> void: + if Engine.is_editor_hint(): + _getEditorThemes() + GdUnitCommandHandler.instance().gdunit_runner_start.connect(func() -> void: + var tab_container :TabContainer = get_parent_control() + for tab_index in tab_container.get_tab_count(): + if tab_container.get_tab_title(tab_index) == "GdUnit": + tab_container.set_current_tab(tab_index) + ) + if Engine.is_editor_hint(): + add_script_editor_context_menu() + add_file_system_dock_context_menu() + + +func _notification(what: int) -> void: + if what == NOTIFICATION_PREDELETE: + ScriptEditorControls.unregister_context_menu() + EditorFileSystemControls.unregister_context_menu() + + +func _process(_delta: float) -> void: + _command_handler._do_process() + + +func _getEditorThemes() -> void: + # example to access current theme + #var editiorTheme := interface.get_base_control().theme + # setup inspector button icons + #var stylebox_types :PackedStringArray = editiorTheme.get_stylebox_type_list() + #for stylebox_type in stylebox_types: + #prints("stylebox_type", stylebox_type) + # if "Tree" == stylebox_type: + # prints(editiorTheme.get_stylebox_list(stylebox_type)) + #var style:StyleBoxFlat = editiorTheme.get_stylebox("panel", "Tree") + #style.bg_color = Color.RED + #var locale = interface.get_editor_settings().get_setting("interface/editor/editor_language") + #sessions_label.add_theme_color_override("font_color", get_color("contrast_color_2", "Editor")) + #status_label.add_theme_color_override("font_color", get_color("contrast_color_2", "Editor")) + #no_sessions_label.add_theme_color_override("font_color", get_color("contrast_color_2", "Editor")) + pass + + +# Context menu registrations ---------------------------------------------------------------------- +func add_file_system_dock_context_menu() -> void: + var is_test_suite := func is_visible(script: Script, is_ts: bool) -> bool: + if script == null: + return true + return GdObjects.is_test_suite(script) == is_ts + var menu :Array[GdUnitContextMenuItem] = [ + GdUnitContextMenuItem.new(GdUnitContextMenuItem.MENU_ID.TEST_RUN, "Run Testsuites", "Play", is_test_suite.bind(true), _command_handler.command(GdUnitCommandHandler.CMD_RUN_TESTSUITE)), + GdUnitContextMenuItem.new(GdUnitContextMenuItem.MENU_ID.TEST_DEBUG, "Debug Testsuites", "PlayStart", is_test_suite.bind(true), _command_handler.command(GdUnitCommandHandler.CMD_RUN_TESTSUITE_DEBUG)), + ] + EditorFileSystemControls.register_context_menu(menu) + + +func add_script_editor_context_menu() -> void: + var is_test_suite := func is_visible(script: Script, is_ts: bool) -> bool: + return GdObjects.is_test_suite(script) == is_ts + var menu :Array[GdUnitContextMenuItem] = [ + GdUnitContextMenuItem.new(GdUnitContextMenuItem.MENU_ID.TEST_RUN, "Run Tests", "Play", is_test_suite.bind(true), _command_handler.command(GdUnitCommandHandler.CMD_RUN_TESTCASE)), + GdUnitContextMenuItem.new(GdUnitContextMenuItem.MENU_ID.TEST_DEBUG, "Debug Tests", "PlayStart", is_test_suite.bind(true),_command_handler.command(GdUnitCommandHandler.CMD_RUN_TESTCASE_DEBUG)), + GdUnitContextMenuItem.new(GdUnitContextMenuItem.MENU_ID.CREATE_TEST, "Create Test", "New", is_test_suite.bind(false), _command_handler.command(GdUnitCommandHandler.CMD_CREATE_TESTCASE)) + ] + ScriptEditorControls.register_context_menu(menu) + + +func _on_MainPanel_run_testsuite(test_suite_paths: Array, debug: bool) -> void: + _command_handler.cmd_run_test_suites(test_suite_paths, debug) + + +func _on_MainPanel_run_testcase(resource_path: String, test_case: String, test_param_index: int, debug: bool) -> void: + _command_handler.cmd_run_test_case(resource_path, test_case, test_param_index, debug) + + +@warning_ignore("redundant_await") +func _on_status_bar_request_discover_tests() -> void: + await _command_handler.cmd_discover_tests() diff --git a/addons/gdUnit4/src/ui/GdUnitInspector.tscn b/addons/gdUnit4/src/ui/GdUnitInspector.tscn new file mode 100644 index 0000000..88f51f6 --- /dev/null +++ b/addons/gdUnit4/src/ui/GdUnitInspector.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=7 format=3 uid="uid://mpo5o6d4uybu"] + +[ext_resource type="PackedScene" uid="uid://dx7xy4dgi3wwb" path="res://addons/gdUnit4/src/ui/parts/InspectorToolBar.tscn" id="1"] +[ext_resource type="PackedScene" uid="uid://dva3tonxsxrlk" path="res://addons/gdUnit4/src/ui/parts/InspectorProgressBar.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://bf53e4y5peguj" path="res://addons/gdUnit4/src/ui/parts/InspectorStatusBar.tscn" id="3"] +[ext_resource type="PackedScene" uid="uid://djp8ait0bxpsc" path="res://addons/gdUnit4/src/ui/parts/InspectorMonitor.tscn" id="4"] +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/GdUnitInspector.gd" id="5"] +[ext_resource type="PackedScene" uid="uid://bqfpidewtpeg0" path="res://addons/gdUnit4/src/ui/parts/InspectorTreePanel.tscn" id="7"] + +[node name="GdUnit" type="Panel"] +use_parent_material = true +clip_contents = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 11 +size_flags_vertical = 3 +focus_mode = 2 +script = ExtResource("5") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +use_parent_material = true +clip_contents = true +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_vertical = 11 + +[node name="Header" type="VBoxContainer" parent="VBoxContainer"] +use_parent_material = true +clip_contents = true +layout_mode = 2 +size_flags_horizontal = 9 + +[node name="ToolBar" parent="VBoxContainer/Header" instance=ExtResource("1")] +layout_mode = 2 +size_flags_vertical = 1 + +[node name="ProgressBar" parent="VBoxContainer/Header" instance=ExtResource("2")] +layout_mode = 2 +size_flags_horizontal = 5 +max_value = 0.0 + +[node name="StatusBar" parent="VBoxContainer/Header" instance=ExtResource("3")] +layout_mode = 2 +size_flags_horizontal = 11 + +[node name="MainPanel" parent="VBoxContainer" instance=ExtResource("7")] +layout_mode = 2 + +[node name="Monitor" parent="VBoxContainer" instance=ExtResource("4")] +layout_mode = 2 + +[connection signal="failure_next" from="VBoxContainer/Header/StatusBar" to="VBoxContainer/MainPanel" method="select_next_failure"] +[connection signal="failure_prevous" from="VBoxContainer/Header/StatusBar" to="VBoxContainer/MainPanel" method="select_previous_failure"] +[connection signal="request_discover_tests" from="VBoxContainer/Header/StatusBar" to="." method="_on_status_bar_request_discover_tests"] +[connection signal="tree_view_mode_changed" from="VBoxContainer/Header/StatusBar" to="VBoxContainer/MainPanel" method="_on_status_bar_tree_view_mode_changed"] +[connection signal="run_testcase" from="VBoxContainer/MainPanel" to="." method="_on_MainPanel_run_testcase"] +[connection signal="run_testsuite" from="VBoxContainer/MainPanel" to="." method="_on_MainPanel_run_testsuite"] +[connection signal="jump_to_orphan_nodes" from="VBoxContainer/Monitor" to="VBoxContainer/MainPanel" method="select_first_orphan"] diff --git a/addons/gdUnit4/src/ui/GdUnitInspectorTreeConstants.gd b/addons/gdUnit4/src/ui/GdUnitInspectorTreeConstants.gd new file mode 100644 index 0000000..8b0e06b --- /dev/null +++ b/addons/gdUnit4/src/ui/GdUnitInspectorTreeConstants.gd @@ -0,0 +1,18 @@ +class_name GdUnitInspectorTreeConstants +extends RefCounted + + +# the inspector panel presantation +enum TREE_VIEW_MODE { + TREE, + FLAT +} + + +# The inspector sort modes +enum SORT_MODE { + UNSORTED, + NAME_ASCENDING, + NAME_DESCENDING, + EXECUTION_TIME +} diff --git a/addons/gdUnit4/src/ui/GdUnitUiTools.gd b/addons/gdUnit4/src/ui/GdUnitUiTools.gd new file mode 100644 index 0000000..25d03dd --- /dev/null +++ b/addons/gdUnit4/src/ui/GdUnitUiTools.gd @@ -0,0 +1,159 @@ +class_name GdUnitUiTools +extends RefCounted + + +static var _spinner: AnimatedTexture + + +enum ImageFlipMode { + HORIZONTAl, + VERITCAL +} + + +## Returns the icon by name, if it exists. +static func get_icon(icon_name: String, color: = Color.BLACK) -> Texture2D: + if not Engine.is_editor_hint(): + return null + var icon := EditorInterface.get_base_control().get_theme_icon(icon_name, "EditorIcons") + if icon == null: + return null + if color != Color.BLACK: + icon = _modulate_texture(icon, color) + return icon + + +## Returns the icon flipped +static func get_flipped_icon(icon_name: String, mode: = ImageFlipMode.HORIZONTAl) -> Texture2D: + if not Engine.is_editor_hint(): + return null + var icon := EditorInterface.get_base_control().get_theme_icon(icon_name, "EditorIcons") + if icon == null: + return null + return ImageTexture.create_from_image(_flip_image(icon, mode)) + + +static func get_spinner() -> AnimatedTexture: + if _spinner != null: + return _spinner + _spinner = AnimatedTexture.new() + _spinner.frames = 8 + _spinner.speed_scale = 2.5 + for frame in _spinner.frames: + _spinner.set_frame_texture(frame, get_icon("Progress%d" % (frame+1))) + _spinner.set_frame_duration(frame, 0.2) + return _spinner + + +static func get_color_animated_icon(icon_name :String, from :Color, to :Color) -> AnimatedTexture: + var texture := AnimatedTexture.new() + texture.frames = 8 + texture.speed_scale = 2.5 + var color := from + for frame in texture.frames: + color = lerp(color, to, .2) + texture.set_frame_texture(frame, get_icon(icon_name, color)) + texture.set_frame_duration(frame, 0.2) + return texture + + +static func get_run_overall_icon() -> Texture2D: + if not Engine.is_editor_hint(): + return null + var icon := EditorInterface.get_base_control().get_theme_icon("Play", "EditorIcons") + var image := _merge_images(icon.get_image(), Vector2i(-2, 0), icon.get_image(), Vector2i(3, 0)) + return ImageTexture.create_from_image(image) + + +static func get_GDScript_icon(status: String, color: Color) -> Texture2D: + if not Engine.is_editor_hint(): + return null + var icon_a := EditorInterface.get_base_control().get_theme_icon("GDScript", "EditorIcons") + var icon_b := EditorInterface.get_base_control().get_theme_icon(status, "EditorIcons") + var overlay_image := _modulate_image(icon_b.get_image(), color) + var image := _merge_images_scaled(icon_a.get_image(), Vector2i(0, 0), overlay_image, Vector2i(5, 5)) + return ImageTexture.create_from_image(image) + + +static func get_CSharpScript_icon(status: String, color: Color) -> Texture2D: + if not Engine.is_editor_hint(): + return null + var icon_a := EditorInterface.get_base_control().get_theme_icon("CSharpScript", "EditorIcons") + var icon_b := EditorInterface.get_base_control().get_theme_icon(status, "EditorIcons") + var overlay_image := _modulate_image(icon_b.get_image(), color) + var image := _merge_images_scaled(icon_a.get_image(), Vector2i(0, 0), overlay_image, Vector2i(5, 5)) + return ImageTexture.create_from_image(image) + + +static func _modulate_texture(texture: Texture2D, color: Color) -> Texture2D: + var image := _modulate_image(texture.get_image(), color) + return ImageTexture.create_from_image(image) + + +static func _modulate_image(image: Image, color: Color) -> Image: + var data: PackedByteArray = image.data["data"] + for pixel in range(0, data.size(), 4): + var pixel_a := _to_color(data, pixel) + if pixel_a.a8 != 0: + pixel_a = pixel_a.lerp(color, .9) + data[pixel + 0] = pixel_a.r8 + data[pixel + 1] = pixel_a.g8 + data[pixel + 2] = pixel_a.b8 + data[pixel + 3] = pixel_a.a8 + var output_image := Image.new() + output_image.set_data(image.get_width(), image.get_height(), image.has_mipmaps(), image.get_format(), data) + return output_image + + +static func _merge_images(image1: Image, offset1: Vector2i, image2: Image, offset2: Vector2i) -> Image: + if image1.get_height() != image2.get_height(): + push_error("invalid height:", image1.get_height(), " vs ", image2.get_height()) + return null + if image1.get_width() != image2.get_width(): + push_error("invalid width:", image1.get_width(), " vs ", image2.get_width()) + return null + + # Create a new Image for the merged result + var merged_image := Image.create(image1.get_width(), image1.get_height(), false, Image.FORMAT_RGBA8) + merged_image.blit_rect_mask(image1, image2, Rect2(Vector2.ZERO, image1.get_size()), offset1) + merged_image.blit_rect_mask(image1, image2, Rect2(Vector2.ZERO, image2.get_size()), offset2) + return merged_image + + +@warning_ignore("narrowing_conversion") +static func _merge_images_scaled(image1: Image, offset1: Vector2i, image2: Image, offset2: Vector2i) -> Image: + ## we disable the check for now because the image size of icons are different on macos and produces an error + ## see issue https://github.com/MikeSchulze/gdUnit4/issues/486 + if not OS.get_distribution_name().contains("mac"): + if image1.get_height() != image2.get_height(): + push_error("invalid height:", image1.get_height(), " vs ", image2.get_height()) + return null + if image1.get_width() != image2.get_width(): + push_error("invalid width:", image1.get_width(), " vs ", image2.get_width()) + return null + + # Create a new Image for the merged result + var merged_image := Image.create(image1.get_width(), image1.get_height(), false, image1.get_format()) + merged_image.blend_rect(image1, Rect2(Vector2.ZERO, image1.get_size()), offset1) + image2.resize(image2.get_width()/1.3, image2.get_height()/1.3) + merged_image.blend_rect(image2, Rect2(Vector2.ZERO, image2.get_size()), offset2) + return merged_image + + +static func _flip_image(texture: Texture2D, mode: ImageFlipMode) -> Image: + var flipped_image := Image.new() + flipped_image.copy_from(texture.get_image()) + if mode == ImageFlipMode.VERITCAL: + flipped_image.flip_x() + else: + flipped_image.flip_y() + return flipped_image + + +static func _to_color(data: PackedByteArray, position: int) -> Color: + var pixel_a := Color() + pixel_a.r8 = data[position + 0] + pixel_a.g8 = data[position + 1] + pixel_a.b8 = data[position + 2] + pixel_a.a8 = data[position + 3] + return pixel_a diff --git a/addons/gdUnit4/src/ui/ScriptEditorControls.gd b/addons/gdUnit4/src/ui/ScriptEditorControls.gd new file mode 100644 index 0000000..0ddf068 --- /dev/null +++ b/addons/gdUnit4/src/ui/ScriptEditorControls.gd @@ -0,0 +1,112 @@ +# A tool to provide extended script editor functionallity +class_name ScriptEditorControls +extends RefCounted + +# https://github.com/godotengine/godot/blob/master/editor/plugins/script_editor_plugin.h +# the Editor menu popup items +enum { + FILE_NEW, + FILE_NEW_TEXTFILE, + FILE_OPEN, + FILE_REOPEN_CLOSED, + FILE_OPEN_RECENT, + FILE_SAVE, + FILE_SAVE_AS, + FILE_SAVE_ALL, + FILE_THEME, + FILE_RUN, + FILE_CLOSE, + CLOSE_DOCS, + CLOSE_ALL, + CLOSE_OTHER_TABS, + TOGGLE_SCRIPTS_PANEL, + SHOW_IN_FILE_SYSTEM, + FILE_COPY_PATH, + FILE_TOOL_RELOAD_SOFT, + SEARCH_IN_FILES, + REPLACE_IN_FILES, + SEARCH_HELP, + SEARCH_WEBSITE, + HELP_SEARCH_FIND, + HELP_SEARCH_FIND_NEXT, + HELP_SEARCH_FIND_PREVIOUS, + WINDOW_MOVE_UP, + WINDOW_MOVE_DOWN, + WINDOW_NEXT, + WINDOW_PREV, + WINDOW_SORT, + WINDOW_SELECT_BASE = 100 +} + + +# Saves the given script and closes if requested by +# The script is saved when is opened in the editor. +# The script is closed when is set to true. +static func save_an_open_script(script_path: String, close:=false) -> bool: + #prints("save_an_open_script", script_path, close) + if !Engine.is_editor_hint(): + return false + var editor := EditorInterface.get_script_editor() + var editor_popup := _menu_popup() + # search for the script in all opened editor scrips + for open_script in editor.get_open_scripts(): + if open_script.resource_path == script_path: + # select the script in the editor + EditorInterface.edit_script(open_script, 0); + # save and close + editor_popup.id_pressed.emit(FILE_SAVE) + if close: + editor_popup.id_pressed.emit(FILE_CLOSE) + return true + return false + + +# Saves all opened script +static func save_all_open_script() -> void: + if Engine.is_editor_hint(): + _menu_popup().id_pressed.emit(FILE_SAVE_ALL) + + +static func close_open_editor_scripts() -> void: + if Engine.is_editor_hint(): + _menu_popup().id_pressed.emit(CLOSE_ALL) + + +# Edits the given script. +# The script is openend in the current editor and selected in the file system dock. +# The line and column on which to open the script can also be specified. +# The script will be open with the user-configured editor for the script's language which may be an external editor. +static func edit_script(script_path: String, line_number:=-1) -> void: + var file_system := EditorInterface.get_resource_filesystem() + file_system.update_file(script_path) + var file_system_dock := EditorInterface.get_file_system_dock() + file_system_dock.navigate_to_path(script_path) + EditorInterface.select_file(script_path) + var script := load(script_path) + EditorInterface.edit_script(script, line_number) + + +# Register the given context menu to the current script editor +# Is called when the plugin is activated +# The active script is connected to the ScriptEditorContextMenuHandler +static func register_context_menu(menu: Array[GdUnitContextMenuItem]) -> void: + Engine.get_main_loop().root.call_deferred("add_child", ScriptEditorContextMenuHandler.new(menu)) + + +# Unregisteres all registerend context menus and gives the ScriptEditorContextMenuHandler> free +# Is called when the plugin is deactivated +static func unregister_context_menu() -> void: + ScriptEditorContextMenuHandler.dispose() + + +static func _menu_popup() -> PopupMenu: + return EditorInterface.get_script_editor().get_child(0).get_child(0).get_child(0).get_popup() + + +static func _print_menu(popup: PopupMenu) -> void: + for itemIndex in popup.item_count: + prints("get_item_id", popup.get_item_id(itemIndex)) + prints("get_item_accelerator", popup.get_item_accelerator(itemIndex)) + prints("get_item_shortcut", popup.get_item_shortcut(itemIndex)) + prints("get_item_text", popup.get_item_text(itemIndex)) + prints() diff --git a/addons/gdUnit4/src/ui/menu/EditorFileSystemContextMenuHandler.gd b/addons/gdUnit4/src/ui/menu/EditorFileSystemContextMenuHandler.gd new file mode 100644 index 0000000..4b2b297 --- /dev/null +++ b/addons/gdUnit4/src/ui/menu/EditorFileSystemContextMenuHandler.gd @@ -0,0 +1,84 @@ +class_name EditorFileSystemContextMenuHandler +extends Control + +var _context_menus := Dictionary() + + +func _init(context_menus: Array[GdUnitContextMenuItem]) -> void: + set_name("EditorFileSystemContextMenuHandler") + for menu in context_menus: + _context_menus[menu.id] = menu + var popup := EditorFileSystemContextMenuHandler._menu_popup() + var file_tree := EditorFileSystemContextMenuHandler._file_tree() + popup.about_to_popup.connect(on_context_menu_show.bind(popup, file_tree)) + popup.id_pressed.connect(on_context_menu_pressed.bind(file_tree)) + + +static func dispose() -> void: + if Engine.get_main_loop().root == null: + return + var handler: EditorFileSystemContextMenuHandler = Engine.get_main_loop().root.find_child("EditorFileSystemContextMenuHandler*", false, false) + if handler: + var popup := _menu_popup() + if popup.about_to_popup.is_connected(Callable(handler, "on_context_menu_show")): + popup.about_to_popup.disconnect(Callable(handler, "on_context_menu_show")) + if popup.id_pressed.is_connected(Callable(handler, "on_context_menu_pressed")): + popup.id_pressed.disconnect(Callable(handler, "on_context_menu_pressed")) + GodotVersionFixures.free_fix(handler) + + +func on_context_menu_show(context_menu: PopupMenu, file_tree: Tree) -> void: + context_menu.add_separator() + var current_index := context_menu.get_item_count() + var selected_test_suites := collect_testsuites(_context_menus.values()[0], file_tree) + + for menu_id: int in _context_menus.keys(): + var menu_item: GdUnitContextMenuItem = _context_menus[menu_id] + if selected_test_suites.size() != 0: + context_menu.add_item(menu_item.name, menu_id) + #context_menu.set_item_icon_modulate(current_index, Color.MEDIUM_PURPLE) + context_menu.set_item_disabled(current_index, !menu_item.is_enabled(null)) + context_menu.set_item_icon(current_index, GdUnitUiTools.get_icon(menu_item.icon)) + current_index += 1 + + +func on_context_menu_pressed(id: int, file_tree: Tree) -> void: + #prints("on_context_menu_pressed", id) + if !_context_menus.has(id): + return + var menu_item: GdUnitContextMenuItem = _context_menus[id] + var selected_test_suites := collect_testsuites(menu_item, file_tree) + menu_item.execute([selected_test_suites]) + + +func collect_testsuites(_menu_item: GdUnitContextMenuItem, file_tree: Tree) -> PackedStringArray: + var file_system := EditorInterface.get_resource_filesystem() + var selected_item := file_tree.get_selected() + var selected_test_suites := PackedStringArray() + while selected_item: + var resource_path: String = selected_item.get_metadata(0) + var file_type := file_system.get_file_type(resource_path) + var is_dir := DirAccess.dir_exists_absolute(resource_path) + if is_dir: + selected_test_suites.append(resource_path) + elif is_dir or file_type == "GDScript" or file_type == "CSharpScript": + # find a performant way to check if the selected item a testsuite + #var resource := ResourceLoader.load(resource_path, "GDScript", ResourceLoader.CACHE_MODE_REUSE) + #prints("loaded", resource) + #if resource is GDScript and menu_item.is_visible(resource): + selected_test_suites.append(resource_path) + selected_item = file_tree.get_next_selected(selected_item) + return selected_test_suites + + +# Returns the FileSystemDock instance +static func filesystem_dock() -> FileSystemDock: + return EditorInterface.get_file_system_dock() + + +static func _file_tree() -> Tree: + return GdObjects.find_nodes_by_class(filesystem_dock(), "Tree", true)[-1] + + +static func _menu_popup() -> PopupMenu: + return GdObjects.find_nodes_by_class(filesystem_dock(), "PopupMenu")[-1] diff --git a/addons/gdUnit4/src/ui/menu/GdUnitContextMenuItem.gd b/addons/gdUnit4/src/ui/menu/GdUnitContextMenuItem.gd new file mode 100644 index 0000000..a591c11 --- /dev/null +++ b/addons/gdUnit4/src/ui/menu/GdUnitContextMenuItem.gd @@ -0,0 +1,68 @@ +class_name GdUnitContextMenuItem + +enum MENU_ID { + TEST_RUN = 1000, + TEST_DEBUG = 1001, + TEST_RERUN = 1002, + CREATE_TEST = 1010, +} + +var id: MENU_ID: + set(value): + id = value + get: + return id + +var name: StringName: + set(value): + name = value + get: + return name + +var command: GdUnitCommand: + set(value): + command = value + get: + return command + +var visible: Callable: + set(value): + visible = value + get: + return visible + +var icon: String: + set(value): + icon = value + get: + return icon + + +func _init(p_id: MENU_ID, p_name: StringName, p_icon :String, p_is_visible: Callable, p_command: GdUnitCommand) -> void: + assert(p_id != null, "(%s) missing parameter 'MENU_ID'" % p_name) + assert(p_is_visible != null, "(%s) missing parameter 'GdUnitCommand'" % p_name) + assert(p_command != null, "(%s) missing parameter 'GdUnitCommand'" % p_name) + self.id = p_id + self.name = p_name + self.icon = p_icon + self.command = p_command + self.visible = p_is_visible + + +func shortcut() -> Shortcut: + return GdUnitCommandHandler.instance().get_shortcut(command.shortcut) + + +func is_enabled(script: Script) -> bool: + return command.is_enabled.call(script) + + +func is_visible(script: Script) -> bool: + return visible.call(script) + + +func execute(arguments:=[]) -> void: + if arguments.is_empty(): + command.runnable.call() + else: + command.runnable.callv(arguments) diff --git a/addons/gdUnit4/src/ui/menu/ScriptEditorContextMenuHandler.gd b/addons/gdUnit4/src/ui/menu/ScriptEditorContextMenuHandler.gd new file mode 100644 index 0000000..0bad13e --- /dev/null +++ b/addons/gdUnit4/src/ui/menu/ScriptEditorContextMenuHandler.gd @@ -0,0 +1,82 @@ +class_name ScriptEditorContextMenuHandler +extends Control + +var _context_menus := Dictionary() +var _editor: ScriptEditor + + +func _init(context_menus: Array[GdUnitContextMenuItem]) -> void: + set_name("ScriptEditorContextMenuHandler") + for menu in context_menus: + _context_menus[menu.id] = menu + _editor = EditorInterface.get_script_editor() + _editor.editor_script_changed.connect(on_script_changed) + on_script_changed(active_script()) + + +static func dispose() -> void: + if Engine.get_main_loop().root == null: + return + var handler: ScriptEditorContextMenuHandler = Engine.get_main_loop().root.find_child("ScriptEditorContextMenuHandler*", false, false) + if handler: + var editor := EditorInterface.get_script_editor() + if editor.editor_script_changed.is_connected(handler.on_script_changed): + editor.editor_script_changed.disconnect(handler.on_script_changed) + GodotVersionFixures.free_fix(handler) + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.is_pressed(): + for action: GdUnitContextMenuItem in _context_menus.values(): + if action.shortcut().matches_event(event) and action.is_visible(active_script()): + #if not has_editor_focus(): + # return + action.execute() + accept_event() + return + + +func has_editor_focus() -> bool: + return Engine.get_main_loop().root.gui_get_focus_owner() == active_base_editor() + + +func on_script_changed(script: Script) -> void: + if script is Script: + var popups: Array[Node] = GdObjects.find_nodes_by_class(active_editor(), "PopupMenu", true) + for popup in popups: + if not popup.about_to_popup.is_connected(on_context_menu_show): + popup.about_to_popup.connect(on_context_menu_show.bind(script, popup)) + if not popup.id_pressed.is_connected(on_context_menu_pressed): + popup.id_pressed.connect(on_context_menu_pressed) + + +func on_context_menu_show(script: Script, context_menu: PopupMenu) -> void: + #prints("on_context_menu_show", _context_menus.keys(), context_menu, self) + context_menu.add_separator() + var current_index := context_menu.get_item_count() + for menu_id: int in _context_menus.keys(): + var menu_item: GdUnitContextMenuItem = _context_menus[menu_id] + if menu_item.is_visible(script): + context_menu.add_item(menu_item.name, menu_id) + context_menu.set_item_disabled(current_index, !menu_item.is_enabled(script)) + context_menu.set_item_shortcut(current_index, menu_item.shortcut(), true) + current_index += 1 + + +func on_context_menu_pressed(id: int) -> void: + if !_context_menus.has(id): + return + var menu_item: GdUnitContextMenuItem = _context_menus[id] + menu_item.execute() + + +func active_editor() -> ScriptEditorBase: + return _editor.get_current_editor() + + +func active_base_editor() -> TextEdit: + return active_editor().get_base_editor() + + +func active_script() -> Script: + return _editor.get_current_script() diff --git a/addons/gdUnit4/src/ui/parts/InspectorMonitor.gd b/addons/gdUnit4/src/ui/parts/InspectorMonitor.gd new file mode 100644 index 0000000..e6939f4 --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorMonitor.gd @@ -0,0 +1,53 @@ +@tool +extends PanelContainer + +signal jump_to_orphan_nodes() + +@onready var ICON_GREEN := GdUnitUiTools.get_icon("Unlinked", Color.WEB_GREEN) +@onready var ICON_RED := GdUnitUiTools.get_color_animated_icon("Unlinked", Color.YELLOW, Color.ORANGE_RED) + +@onready var _button_time := %btn_time +@onready var _time := %time_value +@onready var _orphans := %orphan_value +@onready var _orphan_button := %btn_orphan + +var total_elapsed_time := 0 +var total_orphans := 0 + + +func _ready() -> void: + GdUnitSignals.instance().gdunit_event.connect(_on_gdunit_event) + _time.text = "" + _orphans.text = "0" + _button_time.icon = GdUnitUiTools.get_icon("Time") + _orphan_button.icon = ICON_GREEN + + +func status_changed(elapsed_time: int, orphan_nodes: int) -> void: + total_elapsed_time += elapsed_time + total_orphans += orphan_nodes + _time.text = LocalTime.elapsed(total_elapsed_time) + _orphans.text = str(total_orphans) + if total_orphans > 0: + _orphan_button.icon = ICON_RED + + +func _on_gdunit_event(event: GdUnitEvent) -> void: + match event.type(): + GdUnitEvent.INIT: + _orphan_button.icon = ICON_GREEN + total_elapsed_time = 0 + total_orphans = 0 + status_changed(0, 0) + GdUnitEvent.TESTCASE_BEFORE: + pass + GdUnitEvent.TESTCASE_AFTER: + status_changed(0, event.orphan_nodes()) + GdUnitEvent.TESTSUITE_BEFORE: + pass + GdUnitEvent.TESTSUITE_AFTER: + status_changed(event.elapsed_time(), event.orphan_nodes()) + + +func _on_ToolButton_pressed() -> void: + jump_to_orphan_nodes.emit() diff --git a/addons/gdUnit4/src/ui/parts/InspectorMonitor.tscn b/addons/gdUnit4/src/ui/parts/InspectorMonitor.tscn new file mode 100644 index 0000000..963528e --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorMonitor.tscn @@ -0,0 +1,94 @@ +[gd_scene load_steps=6 format=3 uid="uid://djp8ait0bxpsc"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/parts/InspectorMonitor.gd" id="3"] + +[sub_resource type="Image" id="Image_1hcll"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 227, 227, 227, 36, 227, 227, 227, 36, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 131, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 5, 225, 225, 225, 76, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 77, 255, 255, 255, 5, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 99, 224, 224, 224, 232, 224, 224, 224, 244, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 244, 224, 224, 224, 233, 224, 224, 224, 97, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 135, 224, 224, 224, 247, 224, 224, 224, 115, 234, 234, 234, 12, 224, 224, 224, 130, 224, 224, 224, 130, 234, 234, 234, 12, 225, 225, 225, 116, 224, 224, 224, 248, 224, 224, 224, 132, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 77, 224, 224, 224, 251, 224, 224, 224, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 66, 224, 224, 224, 252, 225, 225, 225, 75, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 201, 224, 224, 224, 146, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 224, 224, 224, 146, 224, 224, 224, 106, 255, 255, 255, 0, 225, 225, 225, 150, 224, 224, 224, 195, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 255, 226, 226, 226, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 233, 233, 233, 23, 225, 225, 225, 166, 224, 224, 224, 237, 228, 228, 228, 47, 255, 255, 255, 0, 225, 225, 225, 51, 224, 224, 224, 255, 224, 224, 224, 16, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 67, 224, 224, 224, 255, 225, 225, 225, 215, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 0, 223, 223, 223, 239, 224, 224, 224, 253, 224, 224, 224, 49, 255, 255, 255, 0, 230, 230, 230, 30, 224, 224, 224, 230, 224, 224, 224, 255, 224, 224, 224, 49, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 224, 224, 224, 255, 225, 225, 225, 101, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 139, 224, 224, 224, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 5, 225, 225, 225, 117, 224, 224, 224, 255, 224, 224, 224, 33, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 6, 224, 224, 224, 240, 226, 226, 226, 87, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 96, 224, 224, 224, 236, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 143, 224, 224, 224, 211, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 11, 224, 224, 224, 216, 225, 225, 225, 141, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 238, 238, 238, 15, 224, 224, 224, 220, 224, 224, 224, 178, 238, 238, 238, 15, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 227, 227, 227, 18, 224, 224, 224, 184, 224, 224, 224, 218, 238, 238, 238, 15, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 212, 224, 224, 224, 232, 225, 225, 225, 133, 224, 224, 224, 251, 224, 224, 224, 240, 225, 225, 225, 135, 224, 224, 224, 234, 224, 224, 224, 208, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 230, 230, 230, 10, 224, 224, 224, 107, 224, 224, 224, 197, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 196, 224, 224, 224, 104, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_ugpqy"] +image = SubResource("Image_1hcll") + +[sub_resource type="Image" id="Image_3te4a"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 251, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 234, 22, 138, 22, 247, 22, 138, 22, 253, 22, 138, 22, 253, 22, 138, 22, 247, 22, 138, 22, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 251, 22, 138, 22, 236, 255, 255, 255, 0, 22, 138, 22, 255, 255, 255, 255, 0, 23, 138, 23, 233, 22, 138, 22, 254, 22, 138, 22, 255, 22, 138, 22, 255, 22, 138, 22, 255, 22, 138, 22, 255, 22, 138, 22, 253, 23, 138, 23, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 236, 22, 138, 22, 253, 22, 138, 22, 236, 22, 138, 22, 251, 255, 255, 255, 0, 22, 138, 22, 247, 22, 138, 22, 255, 22, 138, 22, 248, 22, 138, 22, 233, 23, 138, 23, 233, 22, 138, 22, 249, 22, 138, 22, 255, 22, 138, 22, 246, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 236, 22, 138, 22, 251, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 249, 22, 138, 22, 253, 23, 138, 23, 232, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 234, 22, 138, 22, 255, 22, 138, 22, 253, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 251, 22, 138, 22, 255, 22, 138, 22, 251, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 24, 139, 24, 231, 23, 138, 23, 231, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 234, 22, 138, 22, 255, 22, 138, 22, 253, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 231, 23, 138, 23, 234, 22, 138, 22, 249, 22, 138, 22, 255, 22, 138, 22, 246, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 233, 22, 138, 22, 247, 22, 138, 22, 249, 24, 139, 24, 231, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 245, 22, 138, 22, 255, 22, 138, 22, 255, 22, 138, 22, 255, 22, 138, 22, 253, 23, 138, 23, 233, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 234, 22, 138, 22, 254, 22, 138, 22, 255, 22, 138, 22, 253, 23, 138, 23, 231, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 241, 22, 138, 22, 253, 22, 138, 22, 253, 22, 138, 22, 246, 22, 138, 22, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 247, 22, 138, 22, 255, 22, 138, 22, 248, 23, 138, 23, 232, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 245, 23, 138, 23, 241, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 253, 22, 138, 22, 255, 22, 138, 22, 233, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 231, 22, 138, 22, 255, 22, 138, 22, 253, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 253, 22, 138, 22, 255, 23, 138, 23, 233, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 234, 22, 138, 22, 255, 22, 138, 22, 253, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 247, 22, 138, 22, 255, 22, 138, 22, 249, 22, 138, 22, 234, 23, 138, 23, 234, 22, 138, 22, 249, 22, 138, 22, 255, 22, 138, 22, 246, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 22, 138, 22, 233, 22, 138, 22, 253, 22, 138, 22, 255, 22, 138, 22, 255, 22, 138, 22, 255, 22, 138, 22, 255, 22, 138, 22, 253, 22, 138, 22, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 23, 138, 23, 233, 22, 138, 22, 246, 22, 138, 22, 253, 22, 138, 22, 253, 22, 138, 22, 246, 23, 138, 23, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_nj5du"] +image = SubResource("Image_3te4a") + +[node name="Monitor" type="PanelContainer"] +clip_contents = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -793.0 +offset_bottom = -564.0 +size_flags_horizontal = 9 +size_flags_vertical = 9 +script = ExtResource("3") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 4 + +[node name="timer" type="HBoxContainer" parent="HBoxContainer"] +layout_mode = 2 + +[node name="btn_time" type="Button" parent="HBoxContainer/timer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +auto_translate = false +localize_numeral_system = false +tooltip_text = "Shows the total elapsed time of test execution." +mouse_force_pass_scroll_events = false +button_mask = 0 +shortcut_feedback = false +shortcut_in_tooltip = false +text = "Time" +icon = SubResource("ImageTexture_ugpqy") +flat = true + +[node name="time_value" type="Label" parent="HBoxContainer/timer"] +unique_name_in_owner = true +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +auto_translate = false +localize_numeral_system = false +max_lines_visible = 1 + +[node name="orphan" type="HBoxContainer" parent="HBoxContainer/timer"] +layout_mode = 2 + +[node name="btn_orphan" type="Button" parent="HBoxContainer/timer/orphan"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +auto_translate = false +localize_numeral_system = false +tooltip_text = "Shows the total orphan nodes detected." +text = "Orphans" +icon = SubResource("ImageTexture_nj5du") + +[node name="orphan_value" type="Label" parent="HBoxContainer/timer/orphan"] +unique_name_in_owner = true +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +auto_translate = false +localize_numeral_system = false +text = "0" +max_lines_visible = 1 diff --git a/addons/gdUnit4/src/ui/parts/InspectorProgressBar.gd b/addons/gdUnit4/src/ui/parts/InspectorProgressBar.gd new file mode 100644 index 0000000..44c8d6b --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorProgressBar.gd @@ -0,0 +1,50 @@ +@tool +extends ProgressBar + +@onready var bar := $"." +@onready var status := $Label +@onready var style: StyleBoxFlat = bar.get("theme_override_styles/fill") + + +func _ready() -> void: + GdUnitSignals.instance().gdunit_event.connect(_on_gdunit_event) + style.bg_color = Color.DARK_GREEN + bar.value = 0 + bar.max_value = 0 + update_text() + + +func progress_init(p_max_value: int) -> void: + bar.value = 0 + bar.max_value = p_max_value + style.bg_color = Color.DARK_GREEN + update_text() + + +func progress_update(p_value: int, is_failed: bool) -> void: + bar.value += p_value + update_text() + if is_failed: + style.bg_color = Color.DARK_RED + + +func update_text() -> void: + status.text = "%d:%d" % [bar.value, bar.max_value] + + +func _on_gdunit_event(event: GdUnitEvent) -> void: + match event.type(): + GdUnitEvent.INIT: + progress_init(event.total_count()) + + GdUnitEvent.DISCOVER_END: + progress_init(event.total_count()) + + GdUnitEvent.TESTCASE_AFTER: + # we only count when the test is finished (excluding parameterized test iterrations) + # test_name: indicates a parameterized test run + if event.test_name().find(":") == -1: + progress_update(1, event.is_failed() or event.is_error()) + + GdUnitEvent.TESTSUITE_AFTER: + progress_update(0, event.is_failed() or event.is_error()) diff --git a/addons/gdUnit4/src/ui/parts/InspectorProgressBar.tscn b/addons/gdUnit4/src/ui/parts/InspectorProgressBar.tscn new file mode 100644 index 0000000..1824230 --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorProgressBar.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=3 format=3 uid="uid://dva3tonxsxrlk"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/parts/InspectorProgressBar.gd" id="1"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ayfir"] +bg_color = Color(0, 0.392157, 0, 1) + +[node name="ProgressBar" type="ProgressBar"] +custom_minimum_size = Vector2(0, 20) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 9 +theme_override_styles/fill = SubResource("StyleBoxFlat_ayfir") +rounded = true +allow_greater = true +show_percentage = false +script = ExtResource("1") + +[node name="Label" type="Label" parent="."] +use_parent_material = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +horizontal_alignment = 1 +vertical_alignment = 1 +max_lines_visible = 1 diff --git a/addons/gdUnit4/src/ui/parts/InspectorStatusBar.gd b/addons/gdUnit4/src/ui/parts/InspectorStatusBar.gd new file mode 100644 index 0000000..0075085 --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorStatusBar.gd @@ -0,0 +1,173 @@ +@tool +extends PanelContainer + +signal failure_next() +signal failure_prevous() +signal request_discover_tests() + +signal tree_view_mode_changed(flat :bool) + +@onready var _errors := %error_value +@onready var _failures := %failure_value +@onready var _button_errors := %btn_errors +@onready var _button_failures := %btn_failures +@onready var _button_failure_up := %btn_failure_up +@onready var _button_failure_down := %btn_failure_down +@onready var _button_sync := %btn_tree_sync +@onready var _button_view_mode := %btn_tree_mode +@onready var _button_sort_mode := %btn_tree_sort + + +var total_failed := 0 +var total_errors := 0 + + +var icon_mappings := { + # tree sort modes + 0x100 + GdUnitInspectorTreeConstants.SORT_MODE.UNSORTED : GdUnitUiTools.get_icon("TripleBar"), + 0x100 + GdUnitInspectorTreeConstants.SORT_MODE.NAME_ASCENDING : GdUnitUiTools.get_icon("Sort"), + 0x100 + GdUnitInspectorTreeConstants.SORT_MODE.NAME_DESCENDING : GdUnitUiTools.get_flipped_icon("Sort"), + 0x100 + GdUnitInspectorTreeConstants.SORT_MODE.EXECUTION_TIME : GdUnitUiTools.get_icon("History"), + # tree view modes + 0x200 + GdUnitInspectorTreeConstants.TREE_VIEW_MODE.TREE : GdUnitUiTools.get_icon("Tree", Color.GHOST_WHITE), + 0x200 + GdUnitInspectorTreeConstants.TREE_VIEW_MODE.FLAT : GdUnitUiTools.get_icon("AnimationTrackGroup", Color.GHOST_WHITE) +} + + +func _ready() -> void: + _failures.text = "0" + _errors.text = "0" + _button_errors.icon = GdUnitUiTools.get_icon("StatusError") + _button_failures.icon = GdUnitUiTools.get_icon("StatusError", Color.SKY_BLUE) + _button_failure_up.icon = GdUnitUiTools.get_icon("ArrowUp") + _button_failure_down.icon = GdUnitUiTools.get_icon("ArrowDown") + _button_sync.icon = GdUnitUiTools.get_icon("Loop") + _set_sort_mode_menu_options() + _set_view_mode_menu_options() + GdUnitSignals.instance().gdunit_event.connect(_on_gdunit_event) + GdUnitSignals.instance().gdunit_settings_changed.connect(_on_settings_changed) + var command_handler := GdUnitCommandHandler.instance() + command_handler.gdunit_runner_start.connect(_on_gdunit_runner_start) + command_handler.gdunit_runner_stop.connect(_on_gdunit_runner_stop) + + + +func _set_sort_mode_menu_options() -> void: + _button_sort_mode.icon = GdUnitUiTools.get_icon("Sort") + # construct context sort menu according to the available modes + var context_menu :PopupMenu = _button_sort_mode.get_popup() + context_menu.clear() + + if not context_menu.index_pressed.is_connected(_on_sort_mode_changed): + context_menu.index_pressed.connect(_on_sort_mode_changed) + + var configured_sort_mode := GdUnitSettings.get_inspector_tree_sort_mode() + for sort_mode: String in GdUnitInspectorTreeConstants.SORT_MODE.keys(): + var enum_value :int = GdUnitInspectorTreeConstants.SORT_MODE.get(sort_mode) + var icon :Texture2D = icon_mappings[0x100 + enum_value] + context_menu.add_icon_check_item(icon, normalise(sort_mode), enum_value) + context_menu.set_item_checked(enum_value, configured_sort_mode == enum_value) + + +func _set_view_mode_menu_options() -> void: + _button_view_mode.icon = GdUnitUiTools.get_icon("Tree", Color.GHOST_WHITE) + # construct context tree view menu according to the available modes + var context_menu :PopupMenu = _button_view_mode.get_popup() + context_menu.clear() + + if not context_menu.index_pressed.is_connected(_on_tree_view_mode_changed): + context_menu.index_pressed.connect(_on_tree_view_mode_changed) + + var configured_tree_view_mode := GdUnitSettings.get_inspector_tree_view_mode() + for tree_view_mode: String in GdUnitInspectorTreeConstants.TREE_VIEW_MODE.keys(): + var enum_value :int = GdUnitInspectorTreeConstants.TREE_VIEW_MODE.get(tree_view_mode) + var icon :Texture2D = icon_mappings[0x200 + enum_value] + context_menu.add_icon_check_item(icon, normalise(tree_view_mode), enum_value) + context_menu.set_item_checked(enum_value, configured_tree_view_mode == enum_value) + + +func normalise(value: String) -> String: + var parts := value.to_lower().split("_") + parts[0] = parts[0].capitalize() + return " ".join(parts) + + +func status_changed(errors: int, failed: int) -> void: + total_failed += failed + total_errors += errors + _failures.text = str(total_failed) + _errors.text = str(total_errors) + + +func disable_buttons(value :bool) -> void: + _button_sync.set_disabled(value) + _button_sort_mode.set_disabled(value) + _button_view_mode.set_disabled(value) + + +func _on_gdunit_event(event: GdUnitEvent) -> void: + match event.type(): + GdUnitEvent.DISCOVER_START: + disable_buttons(true) + + GdUnitEvent.DISCOVER_END: + disable_buttons(false) + + GdUnitEvent.INIT: + total_failed = 0 + total_errors = 0 + status_changed(0, 0) + GdUnitEvent.TESTCASE_BEFORE: + pass + GdUnitEvent.TESTCASE_AFTER: + if event.is_error(): + status_changed(event.error_count(), 0) + else: + status_changed(0, event.failed_count()) + GdUnitEvent.TESTSUITE_BEFORE: + pass + GdUnitEvent.TESTSUITE_AFTER: + if event.is_error(): + status_changed(event.error_count(), 0) + else: + status_changed(0, event.failed_count()) + + +func _on_failure_up_pressed() -> void: + failure_prevous.emit() + + +func _on_failure_down_pressed() -> void: + failure_next.emit() + + +func _on_tree_sync_pressed() -> void: + request_discover_tests.emit() + + +func _on_sort_mode_changed(index: int) -> void: + var selected_sort_mode :GdUnitInspectorTreeConstants.SORT_MODE = GdUnitInspectorTreeConstants.SORT_MODE.values()[index] + GdUnitSettings.set_inspector_tree_sort_mode(selected_sort_mode) + + +func _on_tree_view_mode_changed(index: int) ->void: + var selected_tree_mode :GdUnitInspectorTreeConstants.TREE_VIEW_MODE = GdUnitInspectorTreeConstants.TREE_VIEW_MODE.values()[index] + GdUnitSettings.set_inspector_tree_view_mode(selected_tree_mode) + + +################################################################################ +# external signal receiver +################################################################################ +func _on_gdunit_runner_start() -> void: + disable_buttons(true) + + +func _on_gdunit_runner_stop(_client_id: int) -> void: + disable_buttons(false) + + +func _on_settings_changed(property :GdUnitProperty) -> void: + if property.name() == GdUnitSettings.INSPECTOR_TREE_SORT_MODE: + _set_sort_mode_menu_options() + if property.name() == GdUnitSettings.INSPECTOR_TREE_VIEW_MODE: + _set_view_mode_menu_options() diff --git a/addons/gdUnit4/src/ui/parts/InspectorStatusBar.tscn b/addons/gdUnit4/src/ui/parts/InspectorStatusBar.tscn new file mode 100644 index 0000000..3ef31f8 --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorStatusBar.tscn @@ -0,0 +1,257 @@ +[gd_scene load_steps=22 format=3 uid="uid://bf53e4y5peguj"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/parts/InspectorStatusBar.gd" id="3"] + +[sub_resource type="Image" id="Image_xlwc6"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 100, 100, 23, 255, 95, 95, 126, 255, 95, 95, 206, 255, 96, 96, 240, 255, 96, 96, 240, 255, 95, 95, 206, 255, 97, 97, 124, 255, 104, 104, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 80, 255, 96, 96, 240, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 239, 255, 96, 96, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 95, 95, 78, 255, 95, 95, 254, 255, 95, 95, 255, 255, 96, 96, 240, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 96, 96, 240, 255, 95, 95, 255, 255, 95, 95, 254, 255, 95, 95, 75, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 104, 104, 22, 255, 95, 95, 239, 255, 95, 95, 255, 255, 95, 95, 107, 255, 97, 97, 42, 255, 95, 95, 233, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 231, 255, 96, 96, 40, 255, 96, 96, 112, 255, 95, 95, 255, 255, 95, 95, 238, 255, 102, 102, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 124, 255, 95, 95, 255, 255, 96, 96, 240, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 95, 95, 233, 255, 96, 96, 232, 255, 99, 99, 41, 255, 255, 255, 0, 255, 96, 96, 45, 255, 95, 95, 242, 255, 95, 95, 255, 255, 96, 96, 119, 255, 255, 255, 0, 255, 255, 255, 0, 255, 95, 95, 207, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 95, 95, 235, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 202, 255, 255, 255, 0, 255, 255, 255, 0, 255, 95, 95, 242, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 95, 95, 235, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 95, 95, 242, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 96, 96, 232, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 98, 98, 44, 255, 95, 95, 234, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 95, 95, 207, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 231, 255, 99, 99, 41, 255, 255, 255, 0, 255, 96, 96, 45, 255, 98, 98, 44, 255, 255, 255, 0, 255, 95, 95, 43, 255, 95, 95, 233, 255, 95, 95, 255, 255, 95, 95, 255, 255, 96, 96, 200, 255, 255, 255, 0, 255, 255, 255, 0, 255, 95, 95, 123, 255, 95, 95, 255, 255, 96, 96, 240, 255, 96, 96, 40, 255, 255, 255, 0, 255, 96, 96, 45, 255, 95, 95, 235, 255, 95, 95, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 95, 95, 43, 255, 95, 95, 242, 255, 95, 95, 255, 255, 97, 97, 116, 255, 255, 255, 0, 255, 255, 255, 0, 255, 104, 104, 22, 255, 95, 95, 238, 255, 95, 95, 255, 255, 96, 96, 112, 255, 96, 96, 45, 255, 95, 95, 235, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 233, 255, 95, 95, 43, 255, 96, 96, 117, 255, 95, 95, 255, 255, 95, 95, 235, 255, 99, 99, 18, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 76, 255, 95, 95, 254, 255, 95, 95, 255, 255, 95, 95, 242, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 242, 255, 95, 95, 255, 255, 95, 95, 253, 255, 95, 95, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 77, 255, 95, 95, 239, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 255, 255, 95, 95, 236, 255, 97, 97, 71, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 21, 255, 96, 96, 122, 255, 95, 95, 203, 255, 95, 95, 238, 255, 95, 95, 238, 255, 95, 95, 202, 255, 96, 96, 119, 255, 102, 102, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_6b21o"] +image = SubResource("Image_xlwc6") + +[sub_resource type="Image" id="Image_d3qlj"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 222, 232, 147, 195, 221, 242, 147, 195, 221, 250, 147, 195, 221, 254, 147, 195, 221, 254, 147, 195, 221, 250, 147, 195, 221, 242, 147, 196, 222, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 238, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 237, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 196, 222, 232, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 240, 147, 195, 221, 234, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 234, 147, 195, 221, 241, 147, 195, 221, 255, 147, 195, 221, 253, 147, 196, 222, 232, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 242, 147, 195, 221, 255, 147, 195, 221, 254, 147, 195, 221, 234, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 253, 147, 195, 221, 253, 147, 195, 221, 234, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 241, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 250, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 234, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 234, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 250, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 234, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 234, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 250, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 234, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 234, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 250, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 242, 147, 195, 221, 255, 147, 195, 221, 254, 147, 195, 221, 234, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 253, 147, 195, 221, 253, 147, 195, 221, 234, 255, 255, 255, 0, 147, 195, 221, 234, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 241, 255, 255, 255, 0, 255, 255, 255, 0, 147, 196, 222, 232, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 241, 147, 195, 221, 234, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 234, 147, 195, 221, 241, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 231, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 237, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 254, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 237, 147, 195, 221, 253, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 255, 147, 195, 221, 253, 147, 195, 221, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 195, 221, 232, 147, 195, 221, 242, 147, 195, 221, 250, 147, 195, 221, 253, 147, 195, 221, 253, 147, 195, 221, 250, 147, 195, 221, 241, 147, 196, 222, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_y22c0"] +image = SubResource("Image_d3qlj") + +[sub_resource type="Image" id="Image_dqkot"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 255, 224, 224, 224, 255, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 195, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 224, 224, 224, 255, 224, 224, 224, 255, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 194, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 178, 224, 224, 224, 194, 230, 230, 230, 20, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 194, 224, 224, 224, 179, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 180, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_lxhvf"] +image = SubResource("Image_dqkot") + +[sub_resource type="Image" id="Image_tuw0u"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 181, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 180, 224, 224, 224, 195, 231, 231, 231, 21, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 195, 224, 224, 224, 178, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 195, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 224, 224, 224, 255, 224, 224, 224, 255, 231, 231, 231, 21, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 194, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 255, 224, 224, 224, 255, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_odc2f"] +image = SubResource("Image_tuw0u") + +[sub_resource type="Image" id="Image_epiia"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 160, 230, 230, 230, 10, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 213, 225, 225, 225, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 76, 224, 224, 224, 189, 224, 224, 224, 238, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 245, 224, 224, 224, 96, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 135, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 245, 226, 226, 226, 95, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 77, 224, 224, 224, 255, 224, 224, 224, 253, 225, 225, 225, 117, 224, 224, 224, 32, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 212, 225, 225, 225, 42, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 129, 225, 225, 225, 68, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 189, 224, 224, 224, 255, 224, 224, 224, 113, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 159, 230, 230, 230, 10, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 73, 224, 224, 224, 255, 225, 225, 225, 183, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 242, 224, 224, 224, 255, 224, 224, 224, 24, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 25, 224, 224, 224, 255, 224, 224, 224, 237, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 243, 224, 224, 224, 254, 233, 233, 233, 23, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 229, 229, 229, 29, 224, 224, 224, 255, 224, 224, 224, 236, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 188, 224, 224, 224, 255, 225, 225, 225, 68, 255, 255, 255, 0, 255, 255, 255, 0, 230, 230, 230, 10, 224, 224, 224, 160, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 120, 224, 224, 224, 255, 224, 224, 224, 181, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 71, 225, 225, 225, 126, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 43, 224, 224, 224, 213, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 34, 225, 225, 225, 124, 224, 224, 224, 254, 224, 224, 224, 255, 226, 226, 226, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 96, 224, 224, 224, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 125, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 95, 224, 224, 224, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 237, 224, 224, 224, 185, 227, 227, 227, 71, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 42, 224, 224, 224, 213, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 230, 230, 230, 10, 225, 225, 225, 159, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_ulpsv"] +image = SubResource("Image_epiia") + +[sub_resource type="Image" id="Image_ft60s"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 233, 233, 233, 23, 224, 224, 224, 198, 224, 224, 224, 200, 224, 224, 224, 24, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 233, 233, 233, 23, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 215, 224, 224, 224, 24, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 196, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 199, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 195, 224, 224, 224, 253, 224, 224, 224, 255, 224, 224, 224, 195, 225, 225, 225, 175, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 176, 224, 224, 224, 200, 224, 224, 224, 253, 224, 224, 224, 255, 225, 225, 225, 199, 224, 224, 224, 179, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 194, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 197, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 194, 224, 224, 224, 196, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_vn5m0"] +image = SubResource("Image_ft60s") + +[sub_resource type="Image" id="Image_pj4yi"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_0bjic"] +image = SubResource("Image_pj4yi") + +[sub_resource type="Image" id="Image_ykisp"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 194, 224, 224, 224, 196, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 194, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 197, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 176, 224, 224, 224, 200, 224, 224, 224, 253, 224, 224, 224, 255, 225, 225, 225, 199, 224, 224, 224, 179, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 252, 224, 224, 224, 255, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 195, 224, 224, 224, 253, 224, 224, 224, 255, 224, 224, 224, 195, 225, 225, 225, 175, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 196, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 199, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 233, 233, 233, 23, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 215, 224, 224, 224, 24, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 233, 233, 233, 23, 224, 224, 224, 198, 224, 224, 224, 200, 224, 224, 224, 24, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_uvtgc"] +image = SubResource("Image_ykisp") + +[sub_resource type="Image" id="Image_57ty0"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 3, 224, 224, 224, 105, 224, 224, 224, 192, 224, 224, 224, 244, 224, 224, 224, 238, 224, 224, 224, 197, 224, 224, 224, 105, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 233, 233, 233, 23, 225, 225, 225, 207, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 198, 226, 226, 226, 26, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 6, 224, 224, 224, 205, 224, 224, 224, 255, 224, 224, 224, 218, 225, 225, 225, 83, 237, 237, 237, 14, 237, 237, 237, 14, 224, 224, 224, 82, 224, 224, 224, 220, 224, 224, 224, 255, 224, 224, 224, 197, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 102, 224, 224, 224, 255, 224, 224, 224, 218, 227, 227, 227, 18, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 16, 224, 224, 224, 221, 224, 224, 224, 255, 225, 225, 225, 101, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 198, 224, 224, 224, 255, 225, 225, 225, 84, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 86, 224, 224, 224, 255, 224, 224, 224, 194, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 4, 224, 224, 224, 238, 224, 224, 224, 255, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 229, 229, 229, 19, 224, 224, 224, 255, 224, 224, 224, 233, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 160, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 159, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 230, 230, 230, 20, 224, 224, 224, 255, 224, 224, 224, 237, 255, 255, 255, 0, 255, 255, 255, 0, 230, 230, 230, 10, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 230, 230, 230, 10, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 90, 224, 224, 224, 255, 224, 224, 224, 185, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 42, 224, 224, 224, 245, 224, 224, 224, 245, 225, 225, 225, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 224, 224, 224, 224, 255, 224, 224, 224, 98, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 96, 226, 226, 226, 95, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 230, 230, 230, 20, 224, 224, 224, 88, 224, 224, 224, 221, 224, 224, 224, 255, 225, 225, 225, 199, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 200, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 236, 224, 224, 224, 195, 224, 224, 224, 96, 255, 255, 255, 5, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_2tlxj"] +image = SubResource("Image_57ty0") + +[sub_resource type="Image" id="Image_ot6ar"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 248, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 237, 247, 245, 248, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 237, 247, 245, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_143fp"] +image = SubResource("Image_ot6ar") + +[node name="StatusBar" type="PanelContainer"] +clip_contents = true +anchors_preset = 10 +anchor_right = 1.0 +offset_right = -807.0 +offset_bottom = 31.0 +grow_horizontal = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +script = ExtResource("3") + +[node name="bar" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 0 + +[node name="errors" type="HBoxContainer" parent="bar"] +layout_mode = 2 +size_flags_vertical = 4 + +[node name="btn_errors" type="Button" parent="bar/errors"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +auto_translate = false +localize_numeral_system = false +text = "Errors" +icon = SubResource("ImageTexture_6b21o") + +[node name="error_value" type="Label" parent="bar/errors"] +unique_name_in_owner = true +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +vertical_alignment = 1 +justification_flags = 160 +max_lines_visible = 1 + +[node name="failures" type="HBoxContainer" parent="bar"] +layout_mode = 2 +size_flags_vertical = 4 + +[node name="btn_failures" type="Button" parent="bar/failures"] +unique_name_in_owner = true +clip_contents = true +layout_mode = 2 +size_flags_horizontal = 9 +size_flags_vertical = 3 +auto_translate = false +localize_numeral_system = false +tooltip_text = "Shows the total test failures." +text = "Failures" +icon = SubResource("ImageTexture_y22c0") + +[node name="failure_value" type="Label" parent="bar/failures"] +unique_name_in_owner = true +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +vertical_alignment = 1 +justification_flags = 160 +max_lines_visible = 1 + +[node name="navigation" type="HBoxContainer" parent="bar"] +layout_mode = 2 +size_flags_vertical = 4 +auto_translate = false +localize_numeral_system = false + +[node name="btn_failure_up" type="Button" parent="bar/navigation"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +tooltip_text = "Shows the total test errors." +icon = SubResource("ImageTexture_lxhvf") + +[node name="btn_failure_down" type="Button" parent="bar/navigation"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +tooltip_text = "Shows the total test errors." +icon = SubResource("ImageTexture_odc2f") + +[node name="tree_buttons" type="HBoxContainer" parent="bar"] +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 4 +alignment = 2 + +[node name="VSeparator" type="VSeparator" parent="bar/tree_buttons"] +layout_mode = 2 + +[node name="btn_tree_sync" type="Button" parent="bar/tree_buttons"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Run discover tests." +icon = SubResource("ImageTexture_ulpsv") + +[node name="btn_tree_sort" type="MenuButton" parent="bar/tree_buttons"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Sets tree sorting mode." +icon = SubResource("ImageTexture_vn5m0") +item_count = 4 +popup/item_0/text = "Unsorted" +popup/item_0/icon = SubResource("ImageTexture_0bjic") +popup/item_0/checkable = 1 +popup/item_0/id = 8192 +popup/item_1/text = "Name ascending" +popup/item_1/icon = SubResource("ImageTexture_vn5m0") +popup/item_1/checkable = 1 +popup/item_1/id = 8193 +popup/item_2/text = "Name descending" +popup/item_2/icon = SubResource("ImageTexture_uvtgc") +popup/item_2/checkable = 1 +popup/item_2/id = 8194 +popup/item_3/text = "Execution time" +popup/item_3/icon = SubResource("ImageTexture_2tlxj") +popup/item_3/checkable = 1 +popup/item_3/id = 8195 + +[node name="btn_tree_mode" type="MenuButton" parent="bar/tree_buttons"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Sets tree presentaion mode." +icon = SubResource("ImageTexture_143fp") + +[connection signal="pressed" from="bar/navigation/btn_failure_up" to="." method="_on_failure_up_pressed"] +[connection signal="pressed" from="bar/navigation/btn_failure_down" to="." method="_on_failure_down_pressed"] +[connection signal="pressed" from="bar/tree_buttons/btn_tree_sync" to="." method="_on_tree_sync_pressed"] diff --git a/addons/gdUnit4/src/ui/parts/InspectorToolBar.gd b/addons/gdUnit4/src/ui/parts/InspectorToolBar.gd new file mode 100644 index 0000000..c3afbec --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorToolBar.gd @@ -0,0 +1,110 @@ +@tool +extends PanelContainer + +signal run_overall_pressed(debug: bool) +signal run_pressed(debug: bool) +signal stop_pressed() + +@onready var _version_label := %version +@onready var _button_wiki := %help +@onready var _tool_button := %tool +@onready var _button_run_overall := %run_overall +@onready var _button_run := %run +@onready var _button_run_debug := %debug +@onready var _button_stop := %stop +@onready var settings_dlg := preload("res://addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.tscn").instantiate() + + +const SETTINGS_SHORTCUT_MAPPING := { + GdUnitSettings.SHORTCUT_INSPECTOR_RERUN_TEST: GdUnitShortcut.ShortCut.RERUN_TESTS, + GdUnitSettings.SHORTCUT_INSPECTOR_RERUN_TEST_DEBUG: GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG, + GdUnitSettings.SHORTCUT_INSPECTOR_RUN_TEST_OVERALL: GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL, + GdUnitSettings.SHORTCUT_INSPECTOR_RUN_TEST_STOP: GdUnitShortcut.ShortCut.STOP_TEST_RUN, +} + + +func _ready() -> void: + GdUnit4Version.init_version_label(_version_label) + var command_handler := GdUnitCommandHandler.instance() + run_pressed.connect(command_handler._on_run_pressed) + run_overall_pressed.connect(command_handler._on_run_overall_pressed) + stop_pressed.connect(command_handler._on_stop_pressed) + command_handler.gdunit_runner_start.connect(_on_gdunit_runner_start) + command_handler.gdunit_runner_stop.connect(_on_gdunit_runner_stop) + GdUnitSignals.instance().gdunit_settings_changed.connect(_on_gdunit_settings_changed) + init_buttons() + init_shortcuts(command_handler) + EditorInterface.get_base_control().add_child(settings_dlg) + + +func init_buttons() -> void: + _button_run_overall.icon = GdUnitUiTools.get_run_overall_icon() + _button_run_overall.visible = GdUnitSettings.is_inspector_toolbar_button_show() + _button_run.icon = GdUnitUiTools.get_icon("Play") + _button_run_debug.icon = GdUnitUiTools.get_icon("PlayStart") + _button_stop.icon = GdUnitUiTools.get_icon("Stop") + _tool_button.icon = GdUnitUiTools.get_icon("Tools") + _button_wiki.icon = GdUnitUiTools.get_icon("HelpSearch") + + +func init_shortcuts(command_handler: GdUnitCommandHandler) -> void: + _button_run.shortcut = command_handler.get_shortcut(GdUnitShortcut.ShortCut.RERUN_TESTS) + _button_run_overall.shortcut = command_handler.get_shortcut(GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL) + _button_run_debug.shortcut = command_handler.get_shortcut(GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG) + _button_stop.shortcut = command_handler.get_shortcut(GdUnitShortcut.ShortCut.STOP_TEST_RUN) + # register for shortcut changes + GdUnitSignals.instance().gdunit_settings_changed.connect(_on_settings_changed.bind(command_handler)) + + +func _on_runoverall_pressed(debug:=false) -> void: + run_overall_pressed.emit(debug) + + +func _on_run_pressed(debug := false) -> void: + run_pressed.emit(debug) + + +func _on_stop_pressed() -> void: + stop_pressed.emit() + + +func _on_gdunit_runner_start() -> void: + _button_run_overall.disabled = true + _button_run.disabled = true + _button_run_debug.disabled = true + _button_stop.disabled = false + + +func _on_gdunit_runner_stop(_client_id: int) -> void: + _button_run_overall.disabled = false + _button_run.disabled = false + _button_run_debug.disabled = false + _button_stop.disabled = true + + +func _on_gdunit_settings_changed(_property: GdUnitProperty) -> void: + _button_run_overall.visible = GdUnitSettings.is_inspector_toolbar_button_show() + + +func _on_wiki_pressed() -> void: + OS.shell_open("https://mikeschulze.github.io/gdUnit4/") + + +func _on_btn_tool_pressed() -> void: + settings_dlg.popup_centered_ratio(.60) + + +func _on_settings_changed(property: GdUnitProperty, command_handler: GdUnitCommandHandler) -> void: + # needs to wait a frame to be command handler notified first for settings changes + await get_tree().process_frame + if SETTINGS_SHORTCUT_MAPPING.has(property.name()): + var shortcut: GdUnitShortcut.ShortCut = SETTINGS_SHORTCUT_MAPPING.get(property.name(), GdUnitShortcut.ShortCut.NONE) + match shortcut: + GdUnitShortcut.ShortCut.RERUN_TESTS: + _button_run.shortcut = command_handler.get_shortcut(shortcut) + GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL: + _button_run_overall.shortcut = command_handler.get_shortcut(shortcut) + GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG: + _button_run_debug.shortcut = command_handler.get_shortcut(shortcut) + GdUnitShortcut.ShortCut.STOP_TEST_RUN: + _button_stop.shortcut = command_handler.get_shortcut(shortcut) diff --git a/addons/gdUnit4/src/ui/parts/InspectorToolBar.tscn b/addons/gdUnit4/src/ui/parts/InspectorToolBar.tscn new file mode 100644 index 0000000..5de44ad --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorToolBar.tscn @@ -0,0 +1,212 @@ +[gd_scene load_steps=22 format=3 uid="uid://dx7xy4dgi3wwb"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/parts/InspectorToolBar.gd" id="3"] + +[sub_resource type="Image" id="Image_walbn"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 168, 224, 224, 224, 233, 224, 224, 224, 236, 224, 224, 224, 170, 231, 231, 231, 31, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 234, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 239, 230, 230, 230, 30, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 168, 224, 224, 224, 255, 224, 224, 224, 186, 224, 224, 224, 32, 224, 224, 224, 33, 224, 224, 224, 187, 224, 224, 224, 255, 225, 225, 225, 167, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 237, 224, 224, 224, 255, 224, 224, 224, 33, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 255, 224, 224, 224, 234, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 237, 224, 224, 224, 255, 224, 224, 224, 33, 255, 255, 255, 0, 255, 255, 255, 0, 229, 229, 229, 38, 224, 224, 224, 255, 224, 224, 224, 229, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 164, 224, 224, 224, 255, 224, 224, 224, 187, 225, 225, 225, 34, 227, 227, 227, 36, 224, 224, 224, 192, 224, 224, 224, 255, 224, 224, 224, 162, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 225, 225, 225, 215, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 229, 224, 224, 224, 32, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 161, 224, 224, 224, 232, 224, 224, 224, 231, 225, 225, 225, 159, 230, 230, 230, 30, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 107, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 105, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 221, 224, 224, 224, 130, 255, 255, 255, 1, 255, 255, 255, 1, 225, 225, 225, 134, 224, 224, 224, 224, 225, 225, 225, 223, 224, 224, 224, 132, 255, 255, 255, 1, 255, 255, 255, 6, 224, 224, 224, 137, 224, 224, 224, 231, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 130, 225, 225, 225, 133, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 129, 224, 224, 224, 137, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 65, 224, 224, 224, 255, 224, 224, 224, 220, 225, 225, 225, 223, 224, 224, 224, 255, 226, 226, 226, 61, 224, 224, 224, 65, 224, 224, 224, 255, 224, 224, 224, 222, 224, 224, 224, 231, 224, 224, 224, 255, 227, 227, 227, 62, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 67, 224, 224, 224, 255, 224, 224, 224, 219, 224, 224, 224, 222, 224, 224, 224, 255, 227, 227, 227, 63, 225, 225, 225, 67, 224, 224, 224, 255, 224, 224, 224, 219, 224, 224, 224, 230, 224, 224, 224, 255, 227, 227, 227, 63, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 126, 225, 225, 225, 135, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 221, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 1, 224, 224, 224, 128, 224, 224, 224, 220, 224, 224, 224, 219, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 5, 225, 225, 225, 134, 224, 224, 224, 229, 224, 224, 224, 255, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_t52y3"] +image = SubResource("Image_walbn") + +[sub_resource type="Image" id="Image_113nf"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 64, 224, 224, 224, 255, 227, 227, 227, 63, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 5, 225, 225, 225, 142, 255, 255, 255, 0, 255, 255, 255, 2, 224, 224, 224, 138, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 192, 224, 224, 224, 255, 225, 225, 225, 191, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 142, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 2, 224, 224, 224, 255, 224, 224, 224, 137, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 192, 224, 224, 224, 255, 225, 225, 225, 191, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 236, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 64, 224, 224, 224, 255, 227, 227, 227, 63, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 235, 224, 224, 224, 255, 224, 224, 224, 65, 225, 225, 225, 67, 224, 224, 224, 255, 224, 224, 224, 230, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 140, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 134, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 224, 224, 224, 137, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 135, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 247, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 246, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 183, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 179, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 179, 224, 224, 224, 237, 224, 224, 224, 179, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 190, 224, 224, 224, 188, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_wip2b"] +image = SubResource("Image_113nf") + +[sub_resource type="InputEventKey" id="InputEventKey_6jdrj"] +ctrl_pressed = true +pressed = true +keycode = 4194338 +physical_keycode = 4194338 + +[sub_resource type="Shortcut" id="Shortcut_t0ytp"] +events = [SubResource("InputEventKey_6jdrj")] + +[sub_resource type="Image" id="Image_fj3b5"] +data = { +"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 195, 224, 224, 224, 210, 224, 224, 224, 56, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 195, 224, 224, 224, 210, 224, 224, 224, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 139, 224, 224, 224, 8, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 139, 224, 224, 224, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 215, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 215, 224, 224, 224, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 139, 224, 224, 224, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 134, 255, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 226, 226, 226, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 134, 255, 255, 255, 6, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 134, 255, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 191, 224, 224, 224, 206, 226, 226, 226, 52, 0, 0, 0, 0, 0, 0, 0, 0, 225, 225, 225, 191, 224, 224, 224, 206, 226, 226, 226, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_mggmt"] +image = SubResource("Image_fj3b5") + +[sub_resource type="InputEventKey" id="InputEventKey_pl3pi"] +ctrl_pressed = true +pressed = true +keycode = 4194336 +physical_keycode = 4194336 + +[sub_resource type="Shortcut" id="Shortcut_77xhn"] +events = [SubResource("InputEventKey_pl3pi")] + +[sub_resource type="Image" id="Image_4apvt"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 195, 224, 224, 224, 210, 224, 224, 224, 56, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 139, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 215, 224, 224, 224, 56, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 139, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 183, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 182, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 134, 255, 255, 255, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 226, 226, 226, 52, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 134, 255, 255, 255, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 191, 224, 224, 224, 206, 226, 226, 226, 52, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_q6qbp"] +image = SubResource("Image_4apvt") + +[sub_resource type="InputEventKey" id="InputEventKey_qk8q5"] +ctrl_pressed = true +pressed = true +keycode = 4194337 +physical_keycode = 4194337 + +[sub_resource type="Shortcut" id="Shortcut_ae6em"] +events = [SubResource("InputEventKey_qk8q5")] + +[sub_resource type="Image" id="Image_jc2ll"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 181, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 184, 224, 224, 224, 202, 228, 228, 228, 37, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 239, 224, 224, 224, 74, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 123, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 173, 234, 234, 234, 12, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 188, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 185, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 168, 230, 230, 230, 10, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 118, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 237, 226, 226, 226, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 181, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 188, 224, 224, 224, 201, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_q0wt0"] +image = SubResource("Image_jc2ll") + +[sub_resource type="InputEventKey" id="InputEventKey_l8obn"] +ctrl_pressed = true +pressed = true +keycode = 4194339 +physical_keycode = 4194339 + +[sub_resource type="Shortcut" id="Shortcut_2mb87"] +events = [SubResource("InputEventKey_l8obn")] + +[sub_resource type="Image" id="Image_ib7wg"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 176, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 177, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 177, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 176, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_1wiyx"] +image = SubResource("Image_ib7wg") + +[node name="ToolBar" type="PanelContainer"] +anchors_preset = 10 +anchor_right = 1.0 +offset_right = -894.0 +offset_bottom = 24.0 +grow_horizontal = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +script = ExtResource("3") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="tools" type="HBoxContainer" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 4 + +[node name="help" type="Button" parent="HBoxContainer/tools"] +unique_name_in_owner = true +layout_mode = 2 +icon = SubResource("ImageTexture_t52y3") + +[node name="tool" type="Button" parent="HBoxContainer/tools"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "GdUnit Settings" +icon = SubResource("ImageTexture_wip2b") + +[node name="controls" type="HBoxContainer" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 4 +alignment = 1 + +[node name="VSeparator3" type="VSeparator" parent="HBoxContainer/controls"] +layout_mode = 2 + +[node name="run_overall" type="Button" parent="HBoxContainer/controls"] +unique_name_in_owner = true +visible = false +use_parent_material = true +layout_mode = 2 +tooltip_text = "Run overall tests" +shortcut = SubResource("Shortcut_t0ytp") +icon = SubResource("ImageTexture_mggmt") + +[node name="run" type="Button" parent="HBoxContainer/controls"] +unique_name_in_owner = true +use_parent_material = true +layout_mode = 2 +tooltip_text = "Rerun unit tests" +shortcut = SubResource("Shortcut_77xhn") +icon = SubResource("ImageTexture_q6qbp") + +[node name="debug" type="Button" parent="HBoxContainer/controls"] +unique_name_in_owner = true +use_parent_material = true +layout_mode = 2 +tooltip_text = "Rerun unit tests (Debug)" +shortcut = SubResource("Shortcut_ae6em") +icon = SubResource("ImageTexture_q0wt0") + +[node name="stop" type="Button" parent="HBoxContainer/controls"] +unique_name_in_owner = true +use_parent_material = true +layout_mode = 2 +tooltip_text = "Stops runing unit tests" +disabled = true +shortcut = SubResource("Shortcut_2mb87") +icon = SubResource("ImageTexture_1wiyx") + +[node name="VSeparator4" type="VSeparator" parent="HBoxContainer/controls"] +layout_mode = 2 + +[node name="CenterContainer" type="HBoxContainer" parent="HBoxContainer"] +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 4 +alignment = 2 + +[node name="version" type="Label" parent="HBoxContainer/CenterContainer"] +unique_name_in_owner = true +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 13 +auto_translate = false +localize_numeral_system = false +text = "gdUnit4 4.3.0" +horizontal_alignment = 1 +justification_flags = 160 + +[connection signal="pressed" from="HBoxContainer/tools/help" to="." method="_on_wiki_pressed"] +[connection signal="pressed" from="HBoxContainer/tools/tool" to="." method="_on_btn_tool_pressed"] +[connection signal="pressed" from="HBoxContainer/controls/run_overall" to="." method="_on_runoverall_pressed"] +[connection signal="pressed" from="HBoxContainer/controls/run" to="." method="_on_run_pressed"] +[connection signal="pressed" from="HBoxContainer/controls/debug" to="." method="_on_run_pressed" binds= [true]] +[connection signal="pressed" from="HBoxContainer/controls/stop" to="." method="_on_stop_pressed"] diff --git a/addons/gdUnit4/src/ui/parts/InspectorTreeMainPanel.gd b/addons/gdUnit4/src/ui/parts/InspectorTreeMainPanel.gd new file mode 100644 index 0000000..3cc35cc --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorTreeMainPanel.gd @@ -0,0 +1,990 @@ +@tool +extends VSplitContainer + +signal run_testcase(test_suite_resource_path: String, test_case: String, test_param_index: int, run_debug: bool) +signal run_testsuite() + +const CONTEXT_MENU_RUN_ID = 0 +const CONTEXT_MENU_DEBUG_ID = 1 +const CONTEXT_MENU_COLLAPSE_ALL = 3 +const CONTEXT_MENU_EXPAND_ALL = 4 + + +@onready var _tree: Tree = $Panel/Tree +@onready var _report_list: Node = $report/ScrollContainer/list +@onready var _report_template: RichTextLabel = $report/report_template +@onready var _context_menu: PopupMenu = $contextMenu +@onready var _discover_hint := %discover_hint +@onready var _spinner := %spinner + +# loading tree icons +@onready var ICON_SPINNER := GdUnitUiTools.get_spinner() +@onready var ICON_FOLDER := GdUnitUiTools.get_icon("Folder") +# gdscript icons +@onready var ICON_GDSCRIPT_TEST_DEFAULT := GdUnitUiTools.get_icon("GDScript", Color.LIGHT_GRAY) +@onready var ICON_GDSCRIPT_TEST_SUCCESS := GdUnitUiTools.get_GDScript_icon("StatusSuccess", Color.DARK_GREEN) +@onready var ICON_GDSCRIPT_TEST_FAILED := GdUnitUiTools.get_GDScript_icon("StatusError", Color.SKY_BLUE) +@onready var ICON_GDSCRIPT_TEST_ERROR := GdUnitUiTools.get_GDScript_icon("StatusError", Color.DARK_RED) +@onready var ICON_GDSCRIPT_TEST_SUCCESS_ORPHAN := GdUnitUiTools.get_GDScript_icon("Unlinked", Color.DARK_GREEN) +@onready var ICON_GDSCRIPT_TEST_FAILED_ORPHAN := GdUnitUiTools.get_GDScript_icon("Unlinked", Color.SKY_BLUE) +@onready var ICON_GDSCRIPT_TEST_ERRORS_ORPHAN := GdUnitUiTools.get_GDScript_icon("Unlinked", Color.DARK_RED) +# csharp script icons +@onready var ICON_CSSCRIPT_TEST_DEFAULT := GdUnitUiTools.get_icon("CSharpScript", Color.LIGHT_GRAY) +@onready var ICON_CSSCRIPT_TEST_SUCCESS := GdUnitUiTools.get_CSharpScript_icon("StatusSuccess", Color.DARK_GREEN) +@onready var ICON_CSSCRIPT_TEST_FAILED := GdUnitUiTools.get_CSharpScript_icon("StatusError", Color.SKY_BLUE) +@onready var ICON_CSSCRIPT_TEST_ERROR := GdUnitUiTools.get_CSharpScript_icon("StatusError", Color.DARK_RED) +@onready var ICON_CSSCRIPT_TEST_SUCCESS_ORPHAN := GdUnitUiTools.get_CSharpScript_icon("Unlinked", Color.DARK_GREEN) +@onready var ICON_CSSCRIPT_TEST_FAILED_ORPHAN := GdUnitUiTools.get_CSharpScript_icon("Unlinked", Color.SKY_BLUE) +@onready var ICON_CSSCRIPT_TEST_ERRORS_ORPHAN := GdUnitUiTools.get_CSharpScript_icon("Unlinked", Color.DARK_RED) + + +enum GdUnitType { + FOLDER, + TEST_SUITE, + TEST_CASE, + TEST_CASE_PARAMETERIZED +} + + +enum STATE { + INITIAL, + RUNNING, + SUCCESS, + WARNING, + FAILED, + ERROR, + ABORDED, + SKIPPED +} + +const META_GDUNIT_ORIGINAL_INDEX = "gdunit_original_index" +const META_GDUNIT_NAME := "gdUnit_name" +const META_GDUNIT_STATE := "gdUnit_state" +const META_GDUNIT_TYPE := "gdUnit_type" +const META_GDUNIT_TOTAL_TESTS := "gdUnit_suite_total_tests" +const META_GDUNIT_SUCCESS_TESTS := "gdUnit_suite_success_tests" +const META_GDUNIT_REPORT := "gdUnit_report" +const META_GDUNIT_ORPHAN := "gdUnit_orphan" +const META_GDUNIT_EXECUTION_TIME := "gdUnit_execution_time" +const META_RESOURCE_PATH := "resource_path" +const META_LINE_NUMBER := "line_number" +const META_TEST_PARAM_INDEX := "test_param_index" + +var _tree_root: TreeItem +var _item_hash := Dictionary() +var _tree_view_mode_flat := GdUnitSettings.get_inspector_tree_view_mode() == GdUnitInspectorTreeConstants.TREE_VIEW_MODE.FLAT + + +func _build_cache_key(resource_path: String, test_name: String) -> Array: + return [resource_path, test_name] + + +func get_tree_item(resource_path: String, item_name: String) -> TreeItem: + var key := _build_cache_key(resource_path, item_name) + return _item_hash.get(key, null) + + +func remove_tree_item(resource_path: String, item_name: String) -> bool: + var key := _build_cache_key(resource_path, item_name) + var item :TreeItem= _item_hash.get(key, null) + if item: + item.get_parent().remove_child(item) + item.free() + return _item_hash.erase(key) + return false + + +func add_tree_item_to_cache(resource_path: String, test_name: String, item: TreeItem) -> void: + var key := _build_cache_key(resource_path, test_name) + _item_hash[key] = item + + +func clear_tree_item_cache() -> void: + _item_hash.clear() + + +func _find_by_resource_path(current: TreeItem, resource_path: String) -> TreeItem: + for item in current.get_children(): + if item.get_meta(META_RESOURCE_PATH) == resource_path: + return item + return null + + +func _find_first_failure(parent := _tree_root, reverse := false) -> TreeItem: + var itmes := parent.get_children() + if reverse: + itmes.reverse() + for item in itmes: + if is_test_case(item) and (is_state_error(item) or is_state_failed(item)): + return item + var failure_item := _find_first_failure(item, reverse) + if failure_item != null: + return failure_item + return null + + +func _find_last_failure(parent := _tree_root) -> TreeItem: + return _find_first_failure(parent, true) + + +func _find_failure(current :TreeItem, prev := false) -> TreeItem: + var next := current.get_prev_in_tree() if prev else current.get_next_in_tree() + if next == null or next == _tree_root: + return null + if is_test_case(next) and (is_state_error(next) or is_state_failed(next)): + return next + return _find_failure(next, prev) + + +func is_state_running(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_STATE) and item.get_meta(META_GDUNIT_STATE) == STATE.RUNNING + + +func is_state_success(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_STATE) and item.get_meta(META_GDUNIT_STATE) == STATE.SUCCESS + + +func is_state_warning(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_STATE) and item.get_meta(META_GDUNIT_STATE) == STATE.WARNING + + +func is_state_failed(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_STATE) and item.get_meta(META_GDUNIT_STATE) == STATE.FAILED + + +func is_state_error(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_STATE) and (item.get_meta(META_GDUNIT_STATE) == STATE.ERROR or item.get_meta(META_GDUNIT_STATE) == STATE.ABORDED) + + +func is_item_state_orphan(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_ORPHAN) + + +func is_test_suite(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_TYPE) and item.get_meta(META_GDUNIT_TYPE) == GdUnitType.TEST_SUITE + + +func is_test_case(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_TYPE) and item.get_meta(META_GDUNIT_TYPE) == GdUnitType.TEST_CASE + + +func is_folder(item: TreeItem) -> bool: + return item.has_meta(META_GDUNIT_TYPE) and item.get_meta(META_GDUNIT_TYPE) == GdUnitType.FOLDER + + +func _ready() -> void: + _context_menu.set_item_icon(CONTEXT_MENU_RUN_ID, GdUnitUiTools.get_icon("Play")) + _context_menu.set_item_icon(CONTEXT_MENU_DEBUG_ID, GdUnitUiTools.get_icon("PlayStart")) + _context_menu.set_item_icon(CONTEXT_MENU_EXPAND_ALL, GdUnitUiTools.get_icon("ExpandTree")) + _context_menu.set_item_icon(CONTEXT_MENU_COLLAPSE_ALL, GdUnitUiTools.get_icon("CollapseTree")) + # do colorize the icons + #for index in _context_menu.item_count: + # _context_menu.set_item_icon_modulate(index, Color.MEDIUM_PURPLE) + + _spinner.icon = GdUnitUiTools.get_spinner() + init_tree() + GdUnitSignals.instance().gdunit_settings_changed.connect(_on_settings_changed) + GdUnitSignals.instance().gdunit_add_test_suite.connect(do_add_test_suite) + GdUnitSignals.instance().gdunit_event.connect(_on_gdunit_event) + var command_handler := GdUnitCommandHandler.instance() + command_handler.gdunit_runner_start.connect(_on_gdunit_runner_start) + command_handler.gdunit_runner_stop.connect(_on_gdunit_runner_stop) + + +# we need current to manually redraw bacause of the animation bug +# https://github.com/godotengine/godot/issues/69330 +func _process(_delta: float) -> void: + if is_visible_in_tree(): + queue_redraw() + + +func init_tree() -> void: + cleanup_tree() + _tree.set_hide_root(true) + _tree.ensure_cursor_is_visible() + _tree.set_allow_reselect(true) + _tree.set_allow_rmb_select(true) + _tree.set_columns(2) + _tree.set_column_clip_content(0, true) + _tree.set_column_expand_ratio(0, 1) + _tree.set_column_custom_minimum_width(0, 240) + _tree.set_column_expand_ratio(1, 0) + _tree.set_column_custom_minimum_width(1, 100) + _tree_root = _tree.create_item() + # fix tree icon scaling + var scale_factor := EditorInterface.get_editor_scale() if Engine.is_editor_hint() else 1.0 + _tree.set("theme_override_constants/icon_max_width", 16 * scale_factor) + + +func cleanup_tree() -> void: + clear_reports() + clear_tree_item_cache() + if not _tree_root: + return + _free_recursive() + _tree.clear() + + +func _free_recursive(items:=_tree_root.get_children()) -> void: + for item in items: + _free_recursive(item.get_children()) + item.call_deferred("free") + + +func sort_tree_items(parent :TreeItem) -> void: + parent.visible = false + var items := parent.get_children() + + # do sort by selected sort mode + match GdUnitSettings.get_inspector_tree_sort_mode(): + GdUnitInspectorTreeConstants.SORT_MODE.UNSORTED: + items.sort_custom(sort_items_by_original_index) + + GdUnitInspectorTreeConstants.SORT_MODE.NAME_ASCENDING: + items.sort_custom(sort_items_by_name.bind(true)) + + GdUnitInspectorTreeConstants.SORT_MODE.NAME_DESCENDING: + items.sort_custom(sort_items_by_name.bind(false)) + + GdUnitInspectorTreeConstants.SORT_MODE.EXECUTION_TIME: + items.sort_custom(sort_items_by_execution_time) + + for item in items: + parent.remove_child(item) + parent.add_child(item) + if item.get_child_count() > 0: + sort_tree_items(item) + parent.visible = true + _tree.queue_redraw() + + +func sort_items_by_name(a: TreeItem, b: TreeItem, ascending: bool) -> bool: + var type_a: GdUnitType = a.get_meta(META_GDUNIT_TYPE) + var type_b: GdUnitType = b.get_meta(META_GDUNIT_TYPE) + # Compare types first + if type_a != type_b: + return type_a == GdUnitType.FOLDER + var name_a :String = a.get_meta(META_GDUNIT_NAME) + var name_b :String = b.get_meta(META_GDUNIT_NAME) + return name_a.naturalnocasecmp_to(name_b) < 0 if ascending else name_a.naturalnocasecmp_to(name_b) > 0 + + +func sort_items_by_execution_time(a: TreeItem, b: TreeItem) -> bool: + var type_a: GdUnitType = a.get_meta(META_GDUNIT_TYPE) + var type_b: GdUnitType = b.get_meta(META_GDUNIT_TYPE) + # Compare types first + if type_a != type_b: + return type_a == GdUnitType.FOLDER + var execution_time_a :int = a.get_meta(META_GDUNIT_EXECUTION_TIME) + var execution_time_b :int = b.get_meta(META_GDUNIT_EXECUTION_TIME) + # if has same execution time sort by name + if execution_time_a == execution_time_b: + var name_a :String = a.get_meta(META_GDUNIT_NAME) + var name_b :String = b.get_meta(META_GDUNIT_NAME) + return name_a.naturalnocasecmp_to(name_b) > 0 + return execution_time_a > execution_time_b + + +func sort_items_by_original_index(a: TreeItem, b: TreeItem) -> bool: + var type_a: GdUnitType = a.get_meta(META_GDUNIT_TYPE) + var type_b: GdUnitType = b.get_meta(META_GDUNIT_TYPE) + if type_a != type_b: + return type_a == GdUnitType.FOLDER + var index_a :int = a.get_meta(META_GDUNIT_ORIGINAL_INDEX) + var index_b :int = b.get_meta(META_GDUNIT_ORIGINAL_INDEX) + return index_a < index_b + + +func reset_tree_state(parent: TreeItem) -> void: + for item in parent.get_children(): + set_state_initial(item) + reset_tree_state(item) + + +func select_item(item: TreeItem) -> TreeItem: + if item != null: + # enshure the parent is collapsed + do_collapse_parent(item) + item.select(0) + _tree.ensure_cursor_is_visible() + _tree.scroll_to_item(item, true) + return item + + +func do_collapse_parent(item: TreeItem) -> void: + if item != null: + item.collapsed = false + do_collapse_parent(item.get_parent()) + + +func do_collapse_all(collapse: bool, parent := _tree_root) -> void: + for item in parent.get_children(): + item.collapsed = collapse + if not collapse: + do_collapse_all(collapse, item) + + +func set_state_initial(item: TreeItem) -> void: + item.set_custom_color(0, Color.LIGHT_GRAY) + item.set_tooltip_text(0, "") + item.set_text_overrun_behavior(0, TextServer.OVERRUN_TRIM_CHAR) + item.set_expand_right(0, true) + + item.set_custom_color(1, Color.LIGHT_GRAY) + item.set_text(1, "") + item.set_expand_right(1, true) + item.set_tooltip_text(1, "") + + item.set_meta(META_GDUNIT_STATE, STATE.INITIAL) + item.set_meta(META_GDUNIT_SUCCESS_TESTS, 0) + item.remove_meta(META_GDUNIT_REPORT) + item.remove_meta(META_GDUNIT_ORPHAN) + set_item_icon_by_state(item) + init_item_counter(item) + + +func set_state_running(item: TreeItem) -> void: + if is_state_running(item): + return + item.set_custom_color(0, Color.DARK_GREEN) + item.set_custom_color(1, Color.DARK_GREEN) + item.set_icon(0, ICON_SPINNER) + item.set_meta(META_GDUNIT_STATE, STATE.RUNNING) + item.collapsed = false + var parent := item.get_parent() + if parent != _tree_root: + set_state_running(parent) + # force scrolling to current test case + select_item(item) + + +func set_state_succeded(item: TreeItem) -> void: + item.set_custom_color(0, Color.GREEN) + item.set_custom_color(1, Color.GREEN) + item.set_meta(META_GDUNIT_STATE, STATE.SUCCESS) + item.collapsed = GdUnitSettings.is_inspector_node_collapse() + set_item_icon_by_state(item) + + +func set_state_skipped(item: TreeItem) -> void: + item.set_meta(META_GDUNIT_STATE, STATE.SKIPPED) + item.set_text(1, "(skipped)") + item.set_text_alignment(1, HORIZONTAL_ALIGNMENT_RIGHT) + item.set_custom_color(0, Color.DARK_GRAY) + item.set_custom_color(1, Color.DARK_GRAY) + item.collapsed = false + set_item_icon_by_state(item) + + +func set_state_warnings(item: TreeItem) -> void: + # Do not overwrite higher states + if is_state_error(item) or is_state_failed(item): + return + item.set_meta(META_GDUNIT_STATE, STATE.WARNING) + item.set_custom_color(0, Color.YELLOW) + item.set_custom_color(1, Color.YELLOW) + item.collapsed = false + set_item_icon_by_state(item) + + +func set_state_failed(item: TreeItem) -> void: + # Do not overwrite higher states + if is_state_error(item): + return + item.set_meta(META_GDUNIT_STATE, STATE.FAILED) + item.set_custom_color(0, Color.LIGHT_BLUE) + item.set_custom_color(1, Color.LIGHT_BLUE) + item.collapsed = false + set_item_icon_by_state(item) + + +func set_state_error(item: TreeItem) -> void: + item.set_meta(META_GDUNIT_STATE, STATE.ERROR) + item.set_custom_color(0, Color.ORANGE_RED) + item.set_custom_color(1, Color.ORANGE_RED) + set_item_icon_by_state(item) + item.collapsed = false + + +func set_state_aborted(item: TreeItem) -> void: + item.set_meta(META_GDUNIT_STATE, STATE.ABORDED) + item.set_custom_color(0, Color.ORANGE_RED) + item.set_custom_color(1, Color.ORANGE_RED) + item.clear_custom_bg_color(0) + item.set_text(1, "(aborted)") + item.set_text_alignment(1, HORIZONTAL_ALIGNMENT_RIGHT) + set_item_icon_by_state(item) + item.collapsed = false + + +func set_state_orphan(item: TreeItem, event: GdUnitEvent) -> void: + var orphan_count := event.statistic(GdUnitEvent.ORPHAN_NODES) + if orphan_count == 0: + return + if item.has_meta(META_GDUNIT_ORPHAN): + orphan_count += item.get_meta(META_GDUNIT_ORPHAN) + item.set_meta(META_GDUNIT_ORPHAN, orphan_count) + item.set_custom_color(0, Color.YELLOW) + item.set_custom_color(1, Color.YELLOW) + item.set_tooltip_text(0, "Total <%d> orphan nodes detected." % orphan_count) + set_item_icon_by_state(item) + + +func update_state(item: TreeItem, event: GdUnitEvent, add_reports := true) -> void: + # we do not show the root + if item == _tree_root: + return + if is_state_running(item) and event.is_success(): + set_state_succeded(item) + else: + if event.is_skipped(): + set_state_skipped(item) + elif event.is_error(): + set_state_error(item) + elif event.is_failed(): + set_state_failed(item) + elif event.is_warning(): + set_state_warnings(item) + if add_reports: + for report in event.reports(): + add_report(item, report) + set_state_orphan(item, event) + if is_folder(item): + update_state(item.get_parent(), event, false) + + +func add_report(item: TreeItem, report: GdUnitReport) -> void: + var reports: Array[GdUnitReport] = [] + if item.has_meta(META_GDUNIT_REPORT): + reports = get_item_reports(item) + reports.append(report) + item.set_meta(META_GDUNIT_REPORT, reports) + + +func abort_running(items:=_tree_root.get_children()) -> void: + for item in items: + if is_state_running(item): + set_state_aborted(item) + abort_running(item.get_children()) + + +func select_first_failure() -> TreeItem: + return select_item(_find_first_failure()) + + +func select_next_failure() -> TreeItem: + var current_selected := _tree.get_selected() + # If nothing is selected, the first error is selected or the next one in the vicinity of the current selection is found + current_selected = _find_first_failure() if current_selected == null else _find_failure(current_selected) + # If no next failure found, then we try to select first + if current_selected == null: + current_selected = _find_first_failure() + return select_item(current_selected) + + +func select_previous_failure() -> TreeItem: + var current_selected := _tree.get_selected() + # If nothing is selected, the first error is selected or the next one in the vicinity of the current selection is found + current_selected = _find_last_failure() if current_selected == null else _find_failure(current_selected, true) + # If no next failure found, then we try to select first last + if current_selected == null: + current_selected = _find_last_failure() + return select_item(current_selected) + + +func select_first_orphan() -> void: + for parent in _tree_root.get_children(): + if not is_state_success(parent): + for item in parent.get_children(): + if is_item_state_orphan(item): + parent.set_collapsed(false) + select_item(item) + return + + +func clear_reports() -> void: + for child in _report_list.get_children(): + _report_list.remove_child(child) + child.queue_free() + + +func show_failed_report(selected_item: TreeItem) -> void: + clear_reports() + if selected_item == null or not selected_item.has_meta(META_GDUNIT_REPORT): + return + # add new reports + for report in get_item_reports(selected_item): + var reportNode: RichTextLabel = _report_template.duplicate() + _report_list.add_child(reportNode) + reportNode.append_text(report.to_string()) + reportNode.visible = true + + +func update_test_suite(event: GdUnitEvent) -> void: + var item := get_tree_item(event.resource_path(), event.suite_name()) + if not item: + push_error("Internal Error: Can't find test suite %s" % event.suite_name()) + return + if event.type() == GdUnitEvent.TESTSUITE_BEFORE: + set_state_running(item) + return + if event.type() == GdUnitEvent.TESTSUITE_AFTER: + update_item_counter(item) + update_item_elapsed_time_counter(item, event.elapsed_time()) + + update_state(item, event) + update_state(item.get_parent(), event, false) + + +func update_test_case(event: GdUnitEvent) -> void: + var item := get_tree_item(event.resource_path(), event.test_name()) + if not item: + push_error("Internal Error: Can't find test case %s:%s" % [event.suite_name(), event.test_name()]) + return + if event.type() == GdUnitEvent.TESTCASE_BEFORE: + set_state_running(item) + return + if event.type() == GdUnitEvent.TESTCASE_AFTER: + update_item_elapsed_time_counter(item, event.elapsed_time()) + if event.is_success() or event.is_warning(): + update_item_counter(item) + update_state(item, event) + + +func create_tree_item(test_suite: GdUnitTestSuiteDto) -> TreeItem: + var root_folder := GdUnitSettings.test_root_folder() + var path_spliced := ProjectSettings.localize_path(test_suite.path()).split(root_folder) + var resource_path := path_spliced[0] + "/" + root_folder + var parent := _tree_root + + if _tree_view_mode_flat: + var element := path_spliced[1].get_base_dir().trim_prefix("/") + if element.is_empty(): + return _tree.create_item(parent) + resource_path += "/" + element + parent = create_or_find_item(parent, resource_path, element) + return _tree.create_item(parent) + + var path_elements := path_spliced[1] + var elements := path_elements.split("/") + elements.remove_at(0) + elements.remove_at(elements.size() - 1) + for element in elements: + resource_path += "/" + element + parent = create_or_find_item(parent, resource_path, element) + return _tree.create_item(parent) + + +func create_or_find_item(parent: TreeItem, resource_path: String, item_name: String) -> TreeItem: + var item := _find_by_resource_path(parent, resource_path) + if item != null: + return item + item = _tree.create_item(parent) + item.set_meta(META_GDUNIT_ORIGINAL_INDEX, item.get_index()) + item.set_text(0, item_name) + item.set_meta(META_GDUNIT_STATE, STATE.INITIAL) + item.set_meta(META_GDUNIT_NAME, item_name) + item.set_meta(META_GDUNIT_TYPE, GdUnitType.FOLDER) + item.set_meta(META_RESOURCE_PATH, resource_path) + item.set_meta(META_GDUNIT_TOTAL_TESTS, 0) + item.set_meta(META_GDUNIT_EXECUTION_TIME, 0) + set_item_icon_by_state(item) + item.collapsed = true + return item + + +func create_item(parent: TreeItem, resource_path: String, item_name: String, type: GdUnitType) -> TreeItem: + var item := _tree.create_item(parent) + item.set_meta(META_GDUNIT_ORIGINAL_INDEX, item.get_index()) + item.set_text(0, item_name) + item.set_meta(META_GDUNIT_STATE, STATE.INITIAL) + item.set_meta(META_GDUNIT_NAME, item_name) + item.set_meta(META_GDUNIT_TYPE, type) + item.set_meta(META_RESOURCE_PATH, resource_path) + item.set_meta(META_GDUNIT_TOTAL_TESTS, 0) + item.set_meta(META_GDUNIT_EXECUTION_TIME, 0) + set_item_icon_by_state(item) + item.collapsed = true + return item + + +func set_item_icon_by_state(item :TreeItem) -> void: + var resource_path :String = item.get_meta(META_RESOURCE_PATH) + var state :STATE = item.get_meta(META_GDUNIT_STATE) + var is_orphan := is_item_state_orphan(item) + item.set_icon(0, get_icon_by_file_type(resource_path, state, is_orphan)) + if item.get_meta(META_GDUNIT_TYPE) == GdUnitType.FOLDER: + item.set_icon_modulate(0, Color.SKY_BLUE) + + +func init_item_counter(item: TreeItem) -> void: + if item.has_meta(META_GDUNIT_TOTAL_TESTS) and item.get_meta(META_GDUNIT_TOTAL_TESTS) > 0: + item.set_text(0, "(0/%s) %s" % [ + item.get_meta(META_GDUNIT_TOTAL_TESTS), + item.get_meta(META_GDUNIT_NAME)]) + init_folder_counter(item.get_parent()) + + +func increment_item_counter(item: TreeItem, increment_count: int) -> void: + if item != _tree_root and item.get_meta(META_GDUNIT_TOTAL_TESTS) != 0: + var count: int = item.get_meta(META_GDUNIT_SUCCESS_TESTS) + item.set_meta(META_GDUNIT_SUCCESS_TESTS, count + increment_count) + item.set_text(0, "(%s/%s) %s" % [ + item.get_meta(META_GDUNIT_SUCCESS_TESTS), + item.get_meta(META_GDUNIT_TOTAL_TESTS), + item.get_meta(META_GDUNIT_NAME)]) + if is_folder(item): + increment_item_counter(item.get_parent(), increment_count) + + +func init_folder_counter(item: TreeItem) -> void: + if item == _tree_root: + return + var type :GdUnitType = item.get_meta(META_GDUNIT_TYPE) + if type == GdUnitType.FOLDER: + var count :int = item.get_children().reduce(count_tests_total, 0) + item.set_meta(META_GDUNIT_TOTAL_TESTS, count) + item.set_meta(META_GDUNIT_SUCCESS_TESTS, 0) + item.set_meta(META_GDUNIT_EXECUTION_TIME, 0) + init_item_counter(item) + + +func count_tests_total(accum: int, item: TreeItem) -> int: + return accum + item.get_meta(META_GDUNIT_TOTAL_TESTS) + + +func update_item_counter(item: TreeItem) -> void: + if item == _tree_root: + return + var type :GdUnitType = item.get_meta(META_GDUNIT_TYPE) + match type: + GdUnitType.TEST_CASE: + increment_item_counter(item.get_parent(), 1) + GdUnitType.TEST_CASE_PARAMETERIZED: + increment_item_counter(item.get_parent(), 1) + GdUnitType.TEST_SUITE: + var count: int = item.get_meta(META_GDUNIT_SUCCESS_TESTS) + increment_item_counter(item.get_parent(), count) + + +func update_item_elapsed_time_counter(item: TreeItem, time: int) -> void: + item.set_text(1, "%s" % LocalTime.elapsed(time)) + item.set_text_alignment(1, HORIZONTAL_ALIGNMENT_RIGHT) + item.set_meta(META_GDUNIT_EXECUTION_TIME, time) + + var parent := item.get_parent() + if parent == _tree_root: + return + var elapsed_time :int = parent.get_meta(META_GDUNIT_EXECUTION_TIME) + time + var type :GdUnitType = item.get_meta(META_GDUNIT_TYPE) + match type: + GdUnitType.TEST_CASE: + return + GdUnitType.TEST_SUITE: + update_item_elapsed_time_counter(parent, elapsed_time) + #GdUnitType.FOLDER: + # update_item_elapsed_time_counter(parent, elapsed_time) + + +func get_icon_by_file_type(path: String, state: STATE, orphans: bool) -> Texture2D: + if path.get_extension() == "gd": + match state: + STATE.INITIAL: + return ICON_GDSCRIPT_TEST_DEFAULT + STATE.SUCCESS: + return ICON_GDSCRIPT_TEST_SUCCESS_ORPHAN if orphans else ICON_GDSCRIPT_TEST_SUCCESS + STATE.ERROR: + return ICON_GDSCRIPT_TEST_ERRORS_ORPHAN if orphans else ICON_GDSCRIPT_TEST_ERROR + STATE.FAILED: + return ICON_GDSCRIPT_TEST_FAILED_ORPHAN if orphans else ICON_GDSCRIPT_TEST_FAILED + STATE.WARNING: + return ICON_GDSCRIPT_TEST_SUCCESS_ORPHAN if orphans else ICON_GDSCRIPT_TEST_DEFAULT + _: + return ICON_GDSCRIPT_TEST_DEFAULT + if path.get_extension() == "cs": + match state: + STATE.INITIAL: + return ICON_CSSCRIPT_TEST_DEFAULT + STATE.SUCCESS: + return ICON_CSSCRIPT_TEST_SUCCESS_ORPHAN if orphans else ICON_CSSCRIPT_TEST_SUCCESS + STATE.ERROR: + return ICON_CSSCRIPT_TEST_ERRORS_ORPHAN if orphans else ICON_CSSCRIPT_TEST_ERROR + STATE.FAILED: + return ICON_CSSCRIPT_TEST_FAILED_ORPHAN if orphans else ICON_CSSCRIPT_TEST_FAILED + STATE.WARNING: + return ICON_CSSCRIPT_TEST_SUCCESS_ORPHAN if orphans else ICON_CSSCRIPT_TEST_DEFAULT + _: + return ICON_CSSCRIPT_TEST_DEFAULT + match state: + STATE.INITIAL: + return ICON_FOLDER + STATE.ERROR: + return ICON_FOLDER + STATE.FAILED: + return ICON_FOLDER + _: + return ICON_FOLDER + + +func discover_test_suite_added(event: GdUnitEventTestDiscoverTestSuiteAdded) -> void: + # Check first if the test suite already exists + var item := get_tree_item(event.resource_path(), event.suite_name()) + if item != null: + return + # Otherwise create it + prints("Discovered test suite added: '%s' on %s" % [event.suite_name(), event.resource_path()]) + do_add_test_suite(event.suite_dto()) + + +func discover_test_added(event: GdUnitEventTestDiscoverTestAdded) -> void: + # check if the test already exists + var test_name := event.test_case_dto().name() + var item := get_tree_item(event.resource_path(), test_name) + if item != null: + return + + item = get_tree_item(event.resource_path(), event.suite_name()) + if not item: + push_error("Internal Error: Can't find test suite %s:%s" % [event.suite_name(), event.resource_path()]) + return + prints("Discovered test added: '%s' on %s" % [event.test_name(), event.resource_path()]) + # update test case count + var test_count :int = item.get_meta(META_GDUNIT_TOTAL_TESTS) + item.set_meta(META_GDUNIT_TOTAL_TESTS, test_count + 1) + init_item_counter(item) + # add new discovered test + add_test(item, event.test_case_dto()) + + +func discover_test_removed(event: GdUnitEventTestDiscoverTestRemoved) -> void: + prints("Discovered test removed: '%s' on %s" % [event.test_name(), event.resource_path()]) + var item := get_tree_item(event.resource_path(), event.test_name()) + if not item: + push_error("Internal Error: Can't find test suite %s:%s" % [event.suite_name(), event.resource_path()]) + return + # update test case count on test suite + var parent := item.get_parent() + var test_count :int = parent.get_meta(META_GDUNIT_TOTAL_TESTS) + parent.set_meta(META_GDUNIT_TOTAL_TESTS, test_count - 1) + init_item_counter(parent) + # finally remove the test + remove_tree_item(event.resource_path(), event.test_name()) + + +func do_add_test_suite(test_suite: GdUnitTestSuiteDto) -> void: + var item := create_tree_item(test_suite) + var suite_name := test_suite.name() + + item.set_text(0, suite_name) + item.set_meta(META_GDUNIT_ORIGINAL_INDEX, item.get_index()) + item.set_meta(META_GDUNIT_STATE, STATE.INITIAL) + item.set_meta(META_GDUNIT_NAME, suite_name) + item.set_meta(META_GDUNIT_TYPE, GdUnitType.TEST_SUITE) + item.set_meta(META_GDUNIT_TOTAL_TESTS, test_suite.test_case_count()) + item.set_meta(META_GDUNIT_SUCCESS_TESTS, 0) + item.set_meta(META_GDUNIT_EXECUTION_TIME, 0) + item.set_meta(META_RESOURCE_PATH, test_suite.path()) + item.set_meta(META_LINE_NUMBER, 1) + item.collapsed = true + set_item_icon_by_state(item) + init_item_counter(item) + add_tree_item_to_cache(test_suite.path(), suite_name, item) + for test_case in test_suite.test_cases(): + add_test(item, test_case) + + +func add_test(parent: TreeItem, test_case: GdUnitTestCaseDto) -> void: + var item := _tree.create_item(parent) + var test_name := test_case.name() + var resource_path :String = parent.get_meta(META_RESOURCE_PATH) + var test_case_names := test_case.test_case_names() + + item.set_meta(META_GDUNIT_ORIGINAL_INDEX, item.get_index()) + item.set_text(0, test_name) + item.set_meta(META_GDUNIT_STATE, STATE.INITIAL) + item.set_meta(META_GDUNIT_NAME, test_name) + item.set_meta(META_GDUNIT_TYPE, GdUnitType.TEST_CASE) + item.set_meta(META_RESOURCE_PATH, resource_path) + item.set_meta(META_GDUNIT_SUCCESS_TESTS, 0) + item.set_meta(META_GDUNIT_EXECUTION_TIME, 0) + item.set_meta(META_GDUNIT_TOTAL_TESTS, test_case_names.size()) + item.set_meta(META_LINE_NUMBER, test_case.line_number()) + item.set_meta(META_TEST_PARAM_INDEX, -1) + set_item_icon_by_state(item) + init_item_counter(item) + add_tree_item_to_cache(resource_path, test_name, item) + if not test_case_names.is_empty(): + add_test_cases(item, test_case_names) + + +func add_test_cases(parent: TreeItem, test_case_names: PackedStringArray) -> void: + for index in test_case_names.size(): + var item := _tree.create_item(parent) + var test_case_name := test_case_names[index] + var resource_path :String = parent.get_meta(META_RESOURCE_PATH) + item.set_meta(META_GDUNIT_ORIGINAL_INDEX, item.get_index()) + item.set_text(0, test_case_name) + item.set_meta(META_GDUNIT_STATE, STATE.INITIAL) + item.set_meta(META_GDUNIT_NAME, test_case_name) + item.set_meta(META_GDUNIT_TOTAL_TESTS, 0) + item.set_meta(META_GDUNIT_TYPE, GdUnitType.TEST_CASE_PARAMETERIZED) + item.set_meta(META_GDUNIT_EXECUTION_TIME, 0) + item.set_meta(META_RESOURCE_PATH, resource_path) + item.set_meta(META_LINE_NUMBER, parent.get_meta(META_LINE_NUMBER)) + item.set_meta(META_TEST_PARAM_INDEX, index) + set_item_icon_by_state(item) + add_tree_item_to_cache(resource_path, test_case_name, item) + + +func get_item_reports(item: TreeItem) -> Array[GdUnitReport]: + return item.get_meta(META_GDUNIT_REPORT) + + +func _dump_tree_as_json(dump_name: String) -> void: + var dict := _to_json(_tree_root) + var file := FileAccess.open("res://%s.json" % dump_name, FileAccess.WRITE) + file.store_string(JSON.stringify(dict, "\t")) + + +func _to_json(parent :TreeItem) -> Dictionary: + var item_as_dict := GdObjects.obj2dict(parent) + item_as_dict["TreeItem"]["childs"] = parent.get_children().map(func(item: TreeItem) -> Dictionary: + return _to_json(item)) + return item_as_dict + + +################################################################################ +# Tree signal receiver +################################################################################ +func _on_tree_item_mouse_selected(mouse_position: Vector2, mouse_button_index: int) -> void: + if mouse_button_index == MOUSE_BUTTON_RIGHT: + _context_menu.position = get_screen_position() + mouse_position + _context_menu.popup() + + +func _on_run_pressed(run_debug: bool) -> void: + _context_menu.hide() + var item := _tree.get_selected() + if item.get_meta(META_GDUNIT_TYPE) == GdUnitType.TEST_SUITE or item.get_meta(META_GDUNIT_TYPE) == GdUnitType.FOLDER: + var resource_path: String = item.get_meta(META_RESOURCE_PATH) + run_testsuite.emit([resource_path], run_debug) + return + var parent := item.get_parent() + var test_suite_resource_path: String = parent.get_meta(META_RESOURCE_PATH) + var test_case: String = item.get_meta(META_GDUNIT_NAME) + # handle parameterized test selection + var test_param_index: int = item.get_meta(META_TEST_PARAM_INDEX) + if test_param_index != -1: + test_case = parent.get_meta(META_GDUNIT_NAME) + run_testcase.emit(test_suite_resource_path, test_case, test_param_index, run_debug) + + +func _on_Tree_item_selected() -> void: + # only show report checked manual item selection + # we need to check the run mode here otherwise it will be called every selection + if not _context_menu.is_item_disabled(CONTEXT_MENU_RUN_ID): + var selected_item: TreeItem = _tree.get_selected() + show_failed_report(selected_item) + + +# Opens the test suite +func _on_Tree_item_activated() -> void: + var selected_item := _tree.get_selected() + var resource_path: String = selected_item.get_meta(META_RESOURCE_PATH) + var line_number: int = selected_item.get_meta(META_LINE_NUMBER) + var resource := load(resource_path) + + if selected_item.has_meta(META_GDUNIT_REPORT): + var reports := get_item_reports(selected_item) + var report_line_number := reports[0].line_number() + # if number -1 we use original stored line number of the test case + # in non debug mode the line number is not available + if report_line_number != -1: + line_number = report_line_number + + EditorInterface.get_file_system_dock().navigate_to_path(resource_path) + EditorInterface.edit_resource(resource) + EditorInterface.get_script_editor().goto_line(line_number - 1) + + +################################################################################ +# external signal receiver +################################################################################ +func _on_gdunit_runner_start() -> void: + reset_tree_state(_tree_root) + _context_menu.set_item_disabled(CONTEXT_MENU_RUN_ID, true) + _context_menu.set_item_disabled(CONTEXT_MENU_DEBUG_ID, true) + clear_reports() + + +func _on_gdunit_runner_stop(_client_id: int) -> void: + _context_menu.set_item_disabled(CONTEXT_MENU_RUN_ID, false) + _context_menu.set_item_disabled(CONTEXT_MENU_DEBUG_ID, false) + abort_running() + sort_tree_items(_tree_root) + select_first_failure() + + +func _on_gdunit_event(event: GdUnitEvent) -> void: + match event.type(): + GdUnitEvent.DISCOVER_START: + _tree_root.visible = false + _discover_hint.visible = true + init_tree() + + GdUnitEvent.DISCOVER_END: + sort_tree_items(_tree_root) + _discover_hint.visible = false + _tree_root.visible = true + #_dump_tree_as_json("tree_example_discovered") + + GdUnitEvent.DISCOVER_SUITE_ADDED: + discover_test_suite_added(event) + + GdUnitEvent.DISCOVER_TEST_ADDED: + discover_test_added(event) + + GdUnitEvent.DISCOVER_TEST_REMOVED: + discover_test_removed(event) + + GdUnitEvent.INIT: + if not GdUnitSettings.is_test_discover_enabled(): + init_tree() + + GdUnitEvent.STOP: + sort_tree_items(_tree_root) + #_dump_tree_as_json("tree_example") + + GdUnitEvent.TESTCASE_BEFORE: + update_test_case(event) + + GdUnitEvent.TESTCASE_AFTER: + update_test_case(event) + + GdUnitEvent.TESTSUITE_BEFORE: + update_test_suite(event) + + GdUnitEvent.TESTSUITE_AFTER: + update_test_suite(event) + + +func _on_context_m_index_pressed(index: int) -> void: + match index: + CONTEXT_MENU_DEBUG_ID: + _on_run_pressed(true) + CONTEXT_MENU_RUN_ID: + _on_run_pressed(false) + CONTEXT_MENU_EXPAND_ALL: + do_collapse_all(false) + CONTEXT_MENU_COLLAPSE_ALL: + do_collapse_all(true) + + +func _on_settings_changed(property :GdUnitProperty) -> void: + if property.name() == GdUnitSettings.INSPECTOR_TREE_SORT_MODE: + sort_tree_items(_tree_root) + # _dump_tree_as_json("tree_sorted_by_%s" % GdUnitInspectorTreeConstants.SORT_MODE.keys()[property.value()]) + + if property.name() == GdUnitSettings.INSPECTOR_TREE_VIEW_MODE: + _tree_view_mode_flat = property.value() == GdUnitInspectorTreeConstants.TREE_VIEW_MODE.FLAT + GdUnitCommandHandler.instance().cmd_discover_tests() diff --git a/addons/gdUnit4/src/ui/parts/InspectorTreePanel.tscn b/addons/gdUnit4/src/ui/parts/InspectorTreePanel.tscn new file mode 100644 index 0000000..1ad110d --- /dev/null +++ b/addons/gdUnit4/src/ui/parts/InspectorTreePanel.tscn @@ -0,0 +1,273 @@ +[gd_scene load_steps=27 format=3 uid="uid://bqfpidewtpeg0"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/parts/InspectorTreeMainPanel.gd" id="1"] + +[sub_resource type="Image" id="Image_jitv6"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 26, 224, 224, 224, 41, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 223, 224, 224, 224, 148, 228, 228, 228, 28, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 211, 255, 255, 255, 5, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 221, 229, 229, 229, 29, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 43, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 65, 229, 229, 229, 29, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 1, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 229, 229, 229, 39, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 255, 255, 255, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 43, 224, 224, 224, 8, 255, 255, 255, 0, 227, 227, 227, 9, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 1, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 1, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 26, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 1, 229, 229, 229, 39, 225, 225, 225, 25, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_nwpuj"] +image = SubResource("Image_jitv6") + +[sub_resource type="Image" id="Image_ww2bl"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 26, 224, 224, 224, 41, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 226, 226, 226, 26, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 224, 224, 224, 8, 255, 255, 255, 0, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 43, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 17, 255, 255, 255, 8, 255, 255, 255, 0, 224, 224, 224, 48, 224, 224, 224, 217, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 228, 228, 228, 47, 224, 224, 224, 236, 224, 224, 224, 255, 225, 225, 225, 125, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 86, 224, 224, 224, 252, 224, 224, 224, 252, 224, 224, 224, 194, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 230, 230, 230, 40, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 255, 255, 255, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 43, 224, 224, 224, 8, 255, 255, 255, 0, 227, 227, 227, 9, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 225, 225, 225, 25, 230, 230, 230, 40, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 40, 225, 225, 225, 25, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_pdcj5"] +image = SubResource("Image_ww2bl") + +[sub_resource type="Image" id="Image_xkapw"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 26, 224, 224, 224, 41, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 226, 226, 226, 26, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 43, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 17, 255, 255, 255, 8, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 89, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 200, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 255, 255, 255, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 42, 224, 224, 224, 233, 224, 224, 224, 255, 225, 225, 225, 124, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 43, 224, 224, 224, 8, 255, 255, 255, 0, 227, 227, 227, 9, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 227, 227, 227, 9, 255, 255, 255, 0, 225, 225, 225, 42, 224, 224, 224, 211, 238, 238, 238, 15, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 1, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 1, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 26, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 1, 229, 229, 229, 39, 225, 225, 225, 25, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_o41n3"] +image = SubResource("Image_xkapw") + +[sub_resource type="Image" id="Image_3hs4q"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 26, 224, 224, 224, 41, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 226, 226, 226, 26, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 43, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 17, 255, 255, 255, 8, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 255, 255, 255, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 43, 224, 224, 224, 8, 255, 255, 255, 0, 227, 227, 227, 9, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 101, 224, 224, 224, 49, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 238, 224, 224, 224, 49, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 209, 255, 255, 255, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 26, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 188, 224, 224, 224, 112, 230, 230, 230, 10, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_6oiqe"] +image = SubResource("Image_3hs4q") + +[sub_resource type="Image" id="Image_mvvke"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 26, 224, 224, 224, 41, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 226, 226, 226, 26, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 43, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 17, 255, 255, 255, 8, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 255, 255, 255, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 43, 224, 224, 224, 8, 255, 255, 255, 0, 226, 226, 226, 52, 225, 225, 225, 101, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 0, 227, 227, 227, 53, 224, 224, 224, 239, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 1, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 7, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 1, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 11, 224, 224, 224, 113, 224, 224, 224, 188, 255, 255, 255, 0, 255, 255, 255, 1, 229, 229, 229, 39, 225, 225, 225, 25, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_l0amb"] +image = SubResource("Image_mvvke") + +[sub_resource type="Image" id="Image_tw7gd"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 26, 224, 224, 224, 41, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 226, 226, 226, 26, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 43, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 17, 255, 255, 255, 8, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 1, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 202, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 128, 224, 224, 224, 255, 224, 224, 224, 231, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 17, 224, 224, 224, 212, 229, 229, 229, 39, 255, 255, 255, 0, 227, 227, 227, 9, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 5, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 225, 225, 225, 25, 230, 230, 230, 40, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 40, 225, 225, 225, 25, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_nonnc"] +image = SubResource("Image_tw7gd") + +[sub_resource type="Image" id="Image_3q3qx"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 26, 224, 224, 224, 41, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 226, 226, 226, 26, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 8, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 229, 229, 229, 19, 224, 224, 224, 218, 227, 227, 227, 45, 255, 255, 255, 0, 227, 227, 227, 9, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 17, 255, 255, 255, 8, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 131, 224, 224, 224, 255, 224, 224, 224, 234, 227, 227, 227, 45, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 202, 224, 224, 224, 252, 224, 224, 224, 252, 224, 224, 224, 82, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 255, 255, 255, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 43, 224, 224, 224, 8, 255, 255, 255, 0, 227, 227, 227, 9, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 26, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 40, 225, 225, 225, 25, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_d2btj"] +image = SubResource("Image_3q3qx") + +[sub_resource type="Image" id="Image_3cynh"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 230, 230, 230, 30, 225, 225, 225, 149, 224, 224, 224, 221, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 226, 226, 226, 26, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 7, 224, 224, 224, 214, 224, 224, 224, 255, 224, 224, 224, 253, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 231, 231, 231, 31, 224, 224, 224, 224, 224, 224, 224, 252, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 51, 223, 223, 223, 47, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 226, 226, 226, 43, 227, 227, 227, 9, 255, 255, 255, 0, 224, 224, 224, 32, 227, 227, 227, 63, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 17, 255, 255, 255, 8, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 192, 192, 192, 4, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 41, 225, 225, 225, 51, 225, 225, 225, 51, 225, 225, 225, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 225, 225, 225, 51, 225, 225, 225, 51, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 26, 225, 225, 225, 51, 223, 223, 223, 47, 255, 255, 255, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 9, 223, 223, 223, 47, 225, 225, 225, 51, 225, 225, 225, 25, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 43, 224, 224, 224, 8, 255, 255, 255, 0, 227, 227, 227, 9, 227, 227, 227, 18, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 18, 227, 227, 227, 9, 255, 255, 255, 0, 227, 227, 227, 9, 226, 226, 226, 43, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 0, 227, 227, 227, 9, 228, 228, 228, 47, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 1, 225, 225, 225, 51, 223, 223, 223, 47, 227, 227, 227, 9, 255, 255, 255, 0, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 2, 226, 226, 226, 43, 225, 225, 225, 51, 225, 225, 225, 51, 255, 255, 255, 0, 255, 255, 255, 1, 225, 225, 225, 51, 225, 225, 225, 51, 226, 226, 226, 43, 255, 255, 255, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 192, 192, 192, 4, 226, 226, 226, 26, 224, 224, 224, 40, 255, 255, 255, 0, 255, 255, 255, 1, 229, 229, 229, 39, 225, 225, 225, 25, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_1bxo7"] +image = SubResource("Image_3cynh") + +[sub_resource type="AnimatedTexture" id="AnimatedTexture_eylo1"] +frames = 8 +speed_scale = 2.5 +frame_0/texture = SubResource("ImageTexture_nwpuj") +frame_0/duration = 0.2 +frame_1/texture = SubResource("ImageTexture_pdcj5") +frame_1/duration = 0.2 +frame_2/texture = SubResource("ImageTexture_o41n3") +frame_2/duration = 0.2 +frame_3/texture = SubResource("ImageTexture_6oiqe") +frame_3/duration = 0.2 +frame_4/texture = SubResource("ImageTexture_l0amb") +frame_4/duration = 0.2 +frame_5/texture = SubResource("ImageTexture_nonnc") +frame_5/duration = 0.2 +frame_6/texture = SubResource("ImageTexture_d2btj") +frame_6/duration = 0.2 +frame_7/texture = SubResource("ImageTexture_1bxo7") +frame_7/duration = 0.2 + +[sub_resource type="Image" id="Image_5n8ks"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 195, 224, 224, 224, 210, 224, 224, 224, 56, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 139, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 215, 224, 224, 224, 56, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 139, 224, 224, 224, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 183, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 182, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 134, 255, 255, 255, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 226, 226, 226, 52, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 134, 255, 255, 255, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 191, 224, 224, 224, 206, 226, 226, 226, 52, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_dr7yj"] +image = SubResource("Image_5n8ks") + +[sub_resource type="Image" id="Image_63duq"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 181, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 184, 224, 224, 224, 202, 228, 228, 228, 37, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 239, 224, 224, 224, 74, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 123, 255, 255, 255, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 173, 234, 234, 234, 12, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 188, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 185, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 168, 230, 230, 230, 10, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 225, 225, 225, 118, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 237, 226, 226, 226, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 181, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 188, 224, 224, 224, 201, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_oh8cr"] +image = SubResource("Image_63duq") + +[sub_resource type="Image" id="Image_lqrfl"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 196, 224, 224, 224, 196, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 226, 226, 226, 60, 226, 226, 226, 60, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 60, 226, 226, 226, 60, 233, 233, 233, 23, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 5, 225, 225, 225, 134, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 254, 225, 225, 225, 133, 255, 255, 255, 5, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 67, 224, 224, 224, 231, 224, 224, 224, 230, 224, 224, 224, 66, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 71, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 224, 224, 224, 236, 225, 225, 225, 67, 226, 226, 226, 69, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 232, 224, 224, 224, 66, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 65, 224, 224, 224, 229, 224, 224, 224, 229, 224, 224, 224, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 224, 224, 224, 132, 224, 224, 224, 253, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 253, 224, 224, 224, 130, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 64, 224, 224, 224, 64, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 64, 224, 224, 224, 64, 233, 233, 233, 23, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 200, 224, 224, 224, 200, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_x1ivs"] +image = SubResource("Image_lqrfl") + +[sub_resource type="Image" id="Image_fec2x"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 237, 237, 237, 14, 224, 224, 224, 165, 224, 224, 224, 165, 237, 237, 237, 14, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 58, 225, 225, 225, 223, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 223, 225, 225, 225, 58, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 233, 233, 233, 23, 225, 225, 225, 124, 224, 224, 224, 128, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 128, 225, 225, 225, 124, 233, 233, 233, 23, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 233, 233, 233, 23, 225, 225, 225, 125, 224, 224, 224, 128, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 128, 225, 225, 225, 125, 233, 233, 233, 23, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 59, 224, 224, 224, 224, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 223, 225, 225, 225, 59, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 238, 238, 238, 15, 224, 224, 224, 165, 224, 224, 224, 165, 238, 238, 238, 15, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_i13wr"] +image = SubResource("Image_fec2x") + +[node name="MainPanel" type="VSplitContainer"] +use_parent_material = true +clip_contents = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -924.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +split_offset = 200 +script = ExtResource("1") + +[node name="Panel" type="PanelContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Tree" type="Tree" parent="Panel"] +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/icon_max_width = 16 +columns = 2 +allow_rmb_select = true +hide_root = true +select_mode = 1 + +[node name="discover_hint" type="HBoxContainer" parent="Panel"] +unique_name_in_owner = true +visible = false +use_parent_material = true +layout_mode = 2 +alignment = 1 + +[node name="spinner" type="Button" parent="Panel/discover_hint"] +unique_name_in_owner = true +clip_contents = true +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +size_flags_stretch_ratio = 1.94 +disabled = true +button_mask = 0 +text = "Discover Tests" +icon = SubResource("AnimatedTexture_eylo1") +flat = true +alignment = 2 + +[node name="report" type="PanelContainer" parent="."] +clip_contents = true +layout_mode = 2 +size_flags_horizontal = 11 +size_flags_vertical = 11 + +[node name="report_template" type="RichTextLabel" parent="report"] +use_parent_material = true +clip_contents = false +layout_mode = 2 +size_flags_horizontal = 3 +auto_translate = false +localize_numeral_system = false +focus_mode = 2 +bbcode_enabled = true +fit_content = true +selection_enabled = true + +[node name="ScrollContainer" type="ScrollContainer" parent="report"] +use_parent_material = true +custom_minimum_size = Vector2(0, 80) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 11 + +[node name="list" type="VBoxContainer" parent="report/ScrollContainer"] +clip_contents = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="contextMenu" type="PopupMenu" parent="."] +size = Vector2i(133, 120) +auto_translate = false +item_count = 5 +item_0/text = "Run" +item_0/icon = SubResource("ImageTexture_dr7yj") +item_0/id = 0 +item_1/text = "Debug" +item_1/icon = SubResource("ImageTexture_oh8cr") +item_1/id = 1 +item_2/text = "" +item_2/id = 2 +item_2/separator = true +item_3/text = "Collapse All" +item_3/icon = SubResource("ImageTexture_x1ivs") +item_3/id = 3 +item_4/text = "Expand All" +item_4/icon = SubResource("ImageTexture_i13wr") +item_4/id = 4 + +[connection signal="item_activated" from="Panel/Tree" to="." method="_on_Tree_item_activated"] +[connection signal="item_mouse_selected" from="Panel/Tree" to="." method="_on_tree_item_mouse_selected"] +[connection signal="item_selected" from="Panel/Tree" to="." method="_on_Tree_item_selected"] +[connection signal="index_pressed" from="contextMenu" to="." method="_on_context_m_index_pressed"] diff --git a/addons/gdUnit4/src/ui/settings/GdUnitInputCapture.gd b/addons/gdUnit4/src/ui/settings/GdUnitInputCapture.gd new file mode 100644 index 0000000..473de98 --- /dev/null +++ b/addons/gdUnit4/src/ui/settings/GdUnitInputCapture.gd @@ -0,0 +1,51 @@ +@tool +class_name GdUnitInputCapture +extends Control + +signal input_completed(input_event: InputEventKey) + + +var _tween: Tween +var _input_event: InputEventKey + + +func _ready() -> void: + reset() + _tween = create_tween() + _tween.set_loops(-1) + _tween.tween_property(self, "modulate", Color(0, 0, 0, .1), 1.0).from_current().set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) + + +func reset() -> void: + _input_event = InputEventKey.new() + + +func _input(event: InputEvent) -> void: + if not is_visible_in_tree(): + return + if event is InputEventKey and event.is_pressed() and not event.is_echo(): + match event.keycode: + KEY_CTRL: + _input_event.ctrl_pressed = true + KEY_SHIFT: + _input_event.shift_pressed = true + KEY_ALT: + _input_event.alt_pressed = true + KEY_META: + _input_event.meta_pressed = true + _: + _input_event.keycode = event.keycode + _apply_input_modifiers(event) + accept_event() + + if event is InputEventKey and not event.is_pressed(): + input_completed.emit(_input_event) + hide() + + +func _apply_input_modifiers(event: InputEvent) -> void: + if event is InputEventWithModifiers: + _input_event.meta_pressed = event.meta_pressed or _input_event.meta_pressed + _input_event.alt_pressed = event.alt_pressed or _input_event.alt_pressed + _input_event.shift_pressed = event.shift_pressed or _input_event.shift_pressed + _input_event.ctrl_pressed = event.ctrl_pressed or _input_event.ctrl_pressed diff --git a/addons/gdUnit4/src/ui/settings/GdUnitInputCapture.tscn b/addons/gdUnit4/src/ui/settings/GdUnitInputCapture.tscn new file mode 100644 index 0000000..8081a66 --- /dev/null +++ b/addons/gdUnit4/src/ui/settings/GdUnitInputCapture.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/settings/GdUnitInputCapture.gd" id="1_gki1u"] + +[node name="GdUnitInputMapper" type="Control"] +top_level = true +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_gki1u") + +[node name="Label" type="Label" parent="."] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -60.5 +offset_top = -19.5 +offset_right = 60.5 +offset_bottom = 19.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 26 +text = "Press keys for shortcut" diff --git a/addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.gd b/addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.gd new file mode 100644 index 0000000..57219f2 --- /dev/null +++ b/addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.gd @@ -0,0 +1,288 @@ +@tool +extends Window + +const EAXAMPLE_URL := "https://github.com/MikeSchulze/gdUnit4-examples/archive/refs/heads/master.zip" +const GdUnitTools := preload ("res://addons/gdUnit4/src/core/GdUnitTools.gd") +const GdUnitUpdateClient = preload ("res://addons/gdUnit4/src/update/GdUnitUpdateClient.gd") + +@onready var _update_client: GdUnitUpdateClient = $GdUnitUpdateClient +@onready var _version_label: RichTextLabel = %version +@onready var _btn_install: Button = %btn_install_examples +@onready var _progress_bar: ProgressBar = %ProgressBar +@onready var _progress_text: Label = %progress_lbl +@onready var _properties_template: Node = $property_template +@onready var _properties_common: Node = % "common-content" +@onready var _properties_ui: Node = % "ui-content" +@onready var _properties_shortcuts: Node = % "shortcut-content" +@onready var _properties_report: Node = % "report-content" +@onready var _input_capture: GdUnitInputCapture = %GdUnitInputCapture +@onready var _property_error: Window = % "propertyError" + +var _font_size: float + + +func _ready() -> void: + # initialize for testing + if not Engine.is_editor_hint(): + GdUnitSettings.setup() + GdUnit4Version.init_version_label(_version_label) + _font_size = GdUnitFonts.init_fonts(_version_label) + about_to_popup.connect(_do_setup_properties) + + +# do setup the dialog with given settings +func _do_setup_properties() -> void: + setup_properties(_properties_common, GdUnitSettings.COMMON_SETTINGS) + setup_properties(_properties_ui, GdUnitSettings.UI_SETTINGS) + setup_properties(_properties_report, GdUnitSettings.REPORT_SETTINGS) + setup_properties(_properties_shortcuts, GdUnitSettings.SHORTCUT_SETTINGS) + + +func _sort_by_key(left: GdUnitProperty, right: GdUnitProperty) -> bool: + return left.name() < right.name() + + +func setup_properties(properties_parent: Node, property_category: String) -> void: + # Do remove first potential previous added properties (could be happened when the dlg is opened at twice) + for child in properties_parent.get_children(): + properties_parent.remove_child(child) + + var category_properties := GdUnitSettings.list_settings(property_category) + # sort by key + category_properties.sort_custom(_sort_by_key) + var theme_ := Theme.new() + theme_.set_constant("h_separation", "GridContainer", 12) + var last_category := "!" + var min_size_overall := 0.0 + for p in category_properties: + var min_size_ := 0.0 + var grid := GridContainer.new() + grid.columns = 4 + grid.theme = theme_ + var property: GdUnitProperty = p + var current_category := property.category() + if current_category != last_category: + var sub_category: Node = _properties_template.get_child(3).duplicate() + sub_category.get_child(0).text = current_category.capitalize() + sub_category.custom_minimum_size.y = _font_size + 16 + properties_parent.add_child(sub_category) + last_category = current_category + # property name + var label: Label = _properties_template.get_child(0).duplicate() + label.text = _to_human_readable(property.name()) + label.custom_minimum_size = Vector2(_font_size * 20, 0) + grid.add_child(label) + min_size_ += label.size.x + + # property reset btn + var reset_btn: Button = _properties_template.get_child(1).duplicate() + reset_btn.icon = _get_btn_icon("Reload") + reset_btn.disabled = property.value() == property.default() + grid.add_child(reset_btn) + min_size_ += reset_btn.size.x + + # property type specific input element + var input: Node = _create_input_element(property, reset_btn) + input.custom_minimum_size = Vector2(_font_size * 15, 0) + grid.add_child(input) + min_size_ += input.size.x + reset_btn.pressed.connect(_on_btn_property_reset_pressed.bind(property, input, reset_btn)) + # property help text + var info: Node = _properties_template.get_child(2).duplicate() + info.text = property.help() + grid.add_child(info) + min_size_ += info.text.length() * _font_size + if min_size_overall < min_size_: + min_size_overall = min_size_ + properties_parent.add_child(grid) + properties_parent.custom_minimum_size.x = min_size_overall + + +func _create_input_element(property: GdUnitProperty, reset_btn: Button) -> Node: + if property.is_selectable_value(): + var options := OptionButton.new() + options.alignment = HORIZONTAL_ALIGNMENT_CENTER + for value in property.value_set(): + options.add_item(value) + options.item_selected.connect(_on_option_selected.bind(property, reset_btn)) + options.select(property.value()) + return options + if property.type() == TYPE_BOOL: + var check_btn := CheckButton.new() + check_btn.toggled.connect(_on_property_text_changed.bind(property, reset_btn)) + check_btn.button_pressed = property.value() + return check_btn + if property.type() in [TYPE_INT, TYPE_STRING]: + var input := LineEdit.new() + input.text_changed.connect(_on_property_text_changed.bind(property, reset_btn)) + input.set_context_menu_enabled(false) + input.set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER) + input.set_expand_to_text_length_enabled(true) + input.text = str(property.value()) + return input + if property.type() == TYPE_PACKED_INT32_ARRAY: + var key_input_button := Button.new() + key_input_button.text = to_shortcut(property.value()) + key_input_button.pressed.connect(_on_shortcut_change.bind(key_input_button, property, reset_btn)) + return key_input_button + return Control.new() + + +func to_shortcut(keys: PackedInt32Array) -> String: + var input_event := InputEventKey.new() + for key in keys: + match key: + KEY_CTRL: input_event.ctrl_pressed = true + KEY_SHIFT: input_event.shift_pressed = true + KEY_ALT: input_event.alt_pressed = true + KEY_META: input_event.meta_pressed = true + _: + input_event.keycode = key as Key + return input_event.as_text() + + +func to_keys(input_event: InputEventKey) -> PackedInt32Array: + var keys := PackedInt32Array() + if input_event.ctrl_pressed: + keys.append(KEY_CTRL) + if input_event.shift_pressed: + keys.append(KEY_SHIFT) + if input_event.alt_pressed: + keys.append(KEY_ALT) + if input_event.meta_pressed: + keys.append(KEY_META) + keys.append(input_event.keycode) + return keys + + +func _to_human_readable(value: String) -> String: + return value.split("/")[-1].capitalize() + + +func _get_btn_icon(p_name: String) -> Texture2D: + if not Engine.is_editor_hint(): + var placeholder := PlaceholderTexture2D.new() + placeholder.size = Vector2(8, 8) + return placeholder + return GdUnitUiTools.get_icon(p_name) + + +func _install_examples() -> void: + _init_progress(5) + update_progress("Downloading examples") + await get_tree().process_frame + var tmp_path := GdUnitFileAccess.create_temp_dir("download") + var zip_file := tmp_path + "/examples.zip" + var response: GdUnitUpdateClient.HttpResponse = await _update_client.request_zip_package(EAXAMPLE_URL, zip_file) + if response.code() != 200: + push_warning("Examples cannot be retrieved from GitHub! \n Error code: %d : %s" % [response.code(), response.response()]) + update_progress("Install examples failed! Try it later again.") + await get_tree().create_timer(3).timeout + stop_progress() + return + # extract zip to tmp + update_progress("Install examples into project") + var result := GdUnitFileAccess.extract_zip(zip_file, "res://gdUnit4-examples/") + if result.is_error(): + update_progress("Install examples failed! %s" % result.error_message()) + await get_tree().create_timer(3).timeout + stop_progress() + return + update_progress("Refresh project") + await rescan(true) + update_progress("Examples successfully installed") + await get_tree().create_timer(3).timeout + stop_progress() + + +func rescan(update_scripts:=false) -> void: + await get_tree().idle_frame + var fs := EditorInterface.get_resource_filesystem() + fs.scan_sources() + while fs.is_scanning(): + await get_tree().create_timer(1).timeout + if update_scripts: + EditorInterface.get_resource_filesystem().update_script_classes() + + +func _on_btn_report_bug_pressed() -> void: + OS.shell_open("https://github.com/MikeSchulze/gdUnit4/issues/new?assignees=MikeSchulze&labels=bug&projects=projects%2F5&template=bug_report.yml&title=GD-XXX%3A+Describe+the+issue+briefly") + + +func _on_btn_request_feature_pressed() -> void: + OS.shell_open("https://github.com/MikeSchulze/gdUnit4/issues/new?assignees=MikeSchulze&labels=enhancement&projects=&template=feature_request.md&title=") + + +func _on_btn_install_examples_pressed() -> void: + _btn_install.disabled = true + await _install_examples() + _btn_install.disabled = false + + +func _on_btn_close_pressed() -> void: + hide() + + +func _on_btn_property_reset_pressed(property: GdUnitProperty, input: Node, reset_btn: Button) -> void: + if input is CheckButton: + input.button_pressed = property.default() + elif input is LineEdit: + input.text = str(property.default()) + # we have to update manually for text input fields because of no change event is emited + _on_property_text_changed(property.default(), property, reset_btn) + elif input is OptionButton: + input.select(0) + _on_option_selected(0, property, reset_btn) + elif input is Button: + input.text = to_shortcut(property.default()) + _on_property_text_changed(property.default(), property, reset_btn) + + +func _on_property_text_changed(new_value: Variant, property: GdUnitProperty, reset_btn: Button) -> void: + property.set_value(new_value) + reset_btn.disabled = property.value() == property.default() + var error: Variant = GdUnitSettings.update_property(property) + if error: + var label: Label = _property_error.get_child(0) as Label + label.set_text(error) + var control := gui_get_focus_owner() + _property_error.show() + if control != null: + _property_error.position = control.global_position + Vector2(self.position) + Vector2(40, 40) + + +func _on_option_selected(index: int, property: GdUnitProperty, reset_btn: Button) -> void: + property.set_value(index) + reset_btn.disabled = property.value() == property.default() + GdUnitSettings.update_property(property) + + +func _on_shortcut_change(input_button: Button, property: GdUnitProperty, reset_btn: Button) -> void: + _input_capture.set_custom_minimum_size(_properties_shortcuts.get_size()) + _input_capture.visible = true + _input_capture.show() + set_process_input(false) + _input_capture.reset() + var input_event: InputEventKey = await _input_capture.input_completed + input_button.text = input_event.as_text() + _on_property_text_changed(to_keys(input_event), property, reset_btn) + set_process_input(true) + + +func _init_progress(max_value: int) -> void: + _progress_bar.visible = true + _progress_bar.max_value = max_value + _progress_bar.value = 0 + + +func _progress() -> void: + _progress_bar.value += 1 + + +func stop_progress() -> void: + _progress_bar.visible = false + + +func update_progress(message: String) -> void: + _progress_text.text = message + _progress_bar.value += 1 diff --git a/addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.tscn b/addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.tscn new file mode 100644 index 0000000..f682231 --- /dev/null +++ b/addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.tscn @@ -0,0 +1,645 @@ +[gd_scene load_steps=13 format=3 uid="uid://dwgat6j2u77g4"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.gd" id="2"] +[ext_resource type="Texture2D" uid="uid://bkh022wwqq7s3" path="res://addons/gdUnit4/src/ui/settings/logo.png" id="3_isfyl"] +[ext_resource type="PackedScene" uid="uid://dte0m2endcgtu" path="res://addons/gdUnit4/src/ui/templates/TestSuiteTemplate.tscn" id="4"] +[ext_resource type="PackedScene" path="res://addons/gdUnit4/src/ui/settings/GdUnitInputCapture.tscn" id="5_xu3j8"] +[ext_resource type="Script" path="res://addons/gdUnit4/src/update/GdUnitUpdateClient.gd" id="8_2ggr0"] + +[sub_resource type="Image" id="Image_pi2b6"] +data = { +"data": PackedByteArray(255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 146, 255, 245, 255, 239, 255, 139, 255, 253, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 200, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 106, 255, 173, 255, 247, 255, 227, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 242, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 184, 255, 249, 255, 234, 255, 137, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 127, 255, 235, 255, 249, 255, 189, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 236, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 155, 255, 133, 255, 239, 255, 240, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 223, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 210, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 32, 255, 246, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 122, 255, 228, 255, 48, 255, 13, 255, 145, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 201, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 232, 255, 92, 255, 42, 255, 146, 255, 245, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 126, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 226, 255, 254, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 252, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 216, 255, 169, 255, 39, 255, 66, 255, 233, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 102, 255, 230, 255, 65, 255, 36, 255, 165, 255, 209, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 236, 255, 0, 255, 0, 255, 0, 255, 9, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 245, 255, 130, 255, 42, 255, 97, 255, 254, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 253, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 253, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 236, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 231, 255, 185, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 109, 255, 0, 255, 0, 255, 17, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 204, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 127, 255, 0, 255, 0, 255, 11, 255, 255, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 139, 255, 169, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 107, 255, 245, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 255, 255, 21, 255, 0, 255, 0, 255, 137, 255, 187, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 117, 255, 0, 255, 0, 255, 14, 255, 250, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 236, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 191, 255, 0, 255, 0, 255, 0, 255, 203, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 238, 255, 161, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 224, 255, 189, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 169, 255, 228, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 225, 255, 177, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 255, 255, 63, 255, 0, 255, 0, 255, 16, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 144, 255, 245, 255, 235, 255, 135, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 204, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 255, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 35, 255, 255, 255, 58, 255, 12, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 238, 255, 29, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 12, 255, 0, 255, 0, 255, 0, 255, 133, 255, 193, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 248, 255, 74, 255, 0, 255, 0, 255, 55, 255, 246, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 212, 255, 251, 255, 195, 255, 179, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 236, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 255, 255, 255, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 144, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 222, 255, 80, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 255, 255, 65, 255, 0, 255, 0, 255, 16, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 240, 255, 83, 255, 48, 255, 171, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 204, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 44, 255, 64, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 194, 255, 118, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 229, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 68, 255, 0, 255, 92, 255, 237, 255, 241, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 234, 255, 167, 255, 48, 255, 85, 255, 242, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 240, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 38, 255, 44, 255, 117, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 231, 255, 15, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 131, 255, 182, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 121, 255, 0, 255, 0, 255, 22, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 219, 255, 119, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 206, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 214, 255, 5, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 245, 255, 255, 255, 179, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 70, 255, 135, 255, 224, 255, 49, 255, 212, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 239, 255, 8, 255, 0, 255, 0, 255, 152, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 240, 255, 0, 255, 0, 255, 0, 255, 14, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 216, 255, 91, 255, 0, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 241, 255, 35, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 117, 255, 240, 255, 82, 255, 48, 255, 174, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 255, 255, 64, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 232, 255, 65, 255, 0, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 37, 255, 77, 255, 226, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 219, 255, 196, 255, 23, 255, 0, 255, 212, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 192, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 240, 255, 0, 255, 0, 255, 0, 255, 16, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 121, 255, 191, 255, 1, 255, 0, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 185, 255, 128, 255, 0, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 144, 255, 245, 255, 238, 255, 135, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 255, 255, 64, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 212, 255, 111, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 115, 255, 255, 255, 244, 255, 244, 255, 244, 255, 255, 255, 248, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 231, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 249, 255, 166, 255, 6, 255, 0, 255, 0, 255, 218, 255, 101, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 192, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 244, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 243, 255, 249, 255, 244, 255, 244, 255, 249, 255, 254, 255, 244, 255, 50, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 255, 255, 246, 255, 244, 255, 244, 255, 252, 255, 251, 255, 233, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 3, 255, 0, 255, 0, 255, 45, 255, 255, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 118, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 108, 255, 0, 255, 0, 255, 16, 255, 248, 255, 69, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 229, 255, 161, 255, 41, 255, 64, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 17, 255, 36, 255, 36, 255, 36, 255, 36, 255, 246, 255, 105, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 210, 255, 3, 255, 0, 255, 0, 255, 98, 255, 229, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 206, 255, 117, 255, 0, 255, 0, 255, 12, 255, 249, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 238, 255, 8, 255, 0, 255, 0, 255, 152, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 255, 255, 44, 255, 0, 255, 0, 255, 72, 255, 249, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 35, 255, 36, 255, 36, 255, 36, 255, 136, 255, 215, 255, 36, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 36, 255, 36, 255, 36, 255, 36, 255, 191, 255, 160, 255, 34, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 118, 255, 168, 255, 42, 255, 45, 255, 192, 255, 194, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 117, 255, 238, 255, 81, 255, 48, 255, 172, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 236, 255, 82, 255, 50, 255, 180, 255, 205, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 40, 255, 60, 255, 255, 255, 77, 255, 40, 255, 23, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 224, 255, 252, 255, 219, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 239, 255, 146, 255, 34, 255, 55, 255, 215, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 230, 255, 62, 255, 32, 255, 161, 255, 212, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 232, 255, 165, 255, 46, 255, 85, 255, 243, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 173, 255, 205, 255, 59, 255, 65, 255, 219, 255, 143, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 40, 255, 114, 255, 239, 255, 40, 255, 40, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 17, 255, 156, 255, 239, 255, 245, 255, 175, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 142, 255, 245, 255, 235, 255, 120, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 120, 255, 233, 255, 248, 255, 177, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 196, 255, 249, 255, 235, 255, 146, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 125, 255, 234, 255, 251, 255, 190, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 211, 255, 251, 255, 195, 255, 163, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 159, 255, 245, 255, 239, 255, 142, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0), +"format": "LumAlpha8", +"height": 256, +"mipmaps": false, +"width": 256 +} + +[sub_resource type="Image" id="Image_xbauv"] +data = { +"data": PackedByteArray(255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 146, 255, 245, 255, 239, 255, 139, 255, 253, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 200, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 106, 255, 173, 255, 247, 255, 227, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 242, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 184, 255, 249, 255, 234, 255, 137, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 127, 255, 235, 255, 249, 255, 189, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 236, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 155, 255, 133, 255, 239, 255, 240, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 223, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 210, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 32, 255, 246, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 122, 255, 228, 255, 48, 255, 13, 255, 145, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 201, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 232, 255, 92, 255, 42, 255, 146, 255, 245, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 126, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 226, 255, 254, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 252, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 216, 255, 169, 255, 39, 255, 66, 255, 233, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 102, 255, 230, 255, 65, 255, 36, 255, 165, 255, 209, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 236, 255, 0, 255, 0, 255, 0, 255, 9, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 245, 255, 130, 255, 42, 255, 97, 255, 254, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 253, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 253, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 236, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 231, 255, 185, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 109, 255, 0, 255, 0, 255, 17, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 204, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 127, 255, 0, 255, 0, 255, 11, 255, 255, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 139, 255, 169, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 107, 255, 245, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 255, 255, 21, 255, 0, 255, 0, 255, 137, 255, 187, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 117, 255, 0, 255, 0, 255, 14, 255, 250, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 236, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 191, 255, 0, 255, 0, 255, 0, 255, 203, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 238, 255, 161, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 224, 255, 189, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 169, 255, 228, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 225, 255, 177, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 255, 255, 63, 255, 0, 255, 0, 255, 16, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 144, 255, 245, 255, 235, 255, 135, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 204, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 255, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 35, 255, 255, 255, 58, 255, 12, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 238, 255, 29, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 12, 255, 0, 255, 0, 255, 0, 255, 133, 255, 193, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 248, 255, 74, 255, 0, 255, 0, 255, 55, 255, 246, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 212, 255, 251, 255, 195, 255, 179, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 236, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 255, 255, 255, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 144, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 222, 255, 80, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 255, 255, 65, 255, 0, 255, 0, 255, 16, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 240, 255, 83, 255, 48, 255, 171, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 204, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 44, 255, 64, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 194, 255, 118, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 229, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 68, 255, 0, 255, 92, 255, 237, 255, 241, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 234, 255, 167, 255, 48, 255, 85, 255, 242, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 240, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 38, 255, 44, 255, 117, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 231, 255, 15, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 131, 255, 182, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 121, 255, 0, 255, 0, 255, 22, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 219, 255, 119, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 206, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 214, 255, 5, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 245, 255, 255, 255, 179, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 70, 255, 135, 255, 224, 255, 49, 255, 212, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 239, 255, 8, 255, 0, 255, 0, 255, 152, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 240, 255, 0, 255, 0, 255, 0, 255, 14, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 216, 255, 91, 255, 0, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 241, 255, 35, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 117, 255, 240, 255, 82, 255, 48, 255, 174, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 255, 255, 64, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 232, 255, 65, 255, 0, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 37, 255, 77, 255, 226, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 219, 255, 196, 255, 23, 255, 0, 255, 212, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 192, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 240, 255, 0, 255, 0, 255, 0, 255, 16, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 121, 255, 191, 255, 1, 255, 0, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 185, 255, 128, 255, 0, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 144, 255, 245, 255, 238, 255, 135, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 255, 255, 64, 255, 0, 255, 0, 255, 20, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 212, 255, 111, 255, 0, 255, 0, 255, 0, 255, 0, 255, 208, 255, 116, 255, 0, 255, 0, 255, 0, 255, 252, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 115, 255, 255, 255, 244, 255, 244, 255, 244, 255, 255, 255, 248, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 231, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 249, 255, 166, 255, 6, 255, 0, 255, 0, 255, 218, 255, 101, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 192, 255, 0, 255, 0, 255, 0, 255, 148, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 244, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 180, 255, 0, 255, 0, 255, 0, 255, 188, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 243, 255, 249, 255, 244, 255, 244, 255, 249, 255, 254, 255, 244, 255, 50, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 255, 255, 246, 255, 244, 255, 244, 255, 252, 255, 251, 255, 233, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 3, 255, 0, 255, 0, 255, 45, 255, 255, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 118, 255, 0, 255, 0, 255, 24, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 108, 255, 0, 255, 0, 255, 16, 255, 248, 255, 69, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 229, 255, 161, 255, 41, 255, 64, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 17, 255, 36, 255, 36, 255, 36, 255, 36, 255, 246, 255, 105, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 210, 255, 3, 255, 0, 255, 0, 255, 98, 255, 229, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 206, 255, 117, 255, 0, 255, 0, 255, 12, 255, 249, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 238, 255, 8, 255, 0, 255, 0, 255, 152, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 255, 255, 44, 255, 0, 255, 0, 255, 72, 255, 249, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 35, 255, 36, 255, 36, 255, 36, 255, 136, 255, 215, 255, 36, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 36, 255, 36, 255, 36, 255, 36, 255, 191, 255, 160, 255, 34, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 118, 255, 168, 255, 42, 255, 45, 255, 192, 255, 194, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 117, 255, 238, 255, 81, 255, 48, 255, 172, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 236, 255, 82, 255, 50, 255, 180, 255, 205, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 40, 255, 60, 255, 255, 255, 77, 255, 40, 255, 23, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 224, 255, 252, 255, 219, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 239, 255, 146, 255, 34, 255, 55, 255, 215, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 230, 255, 62, 255, 32, 255, 161, 255, 212, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 232, 255, 165, 255, 46, 255, 85, 255, 243, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 173, 255, 205, 255, 59, 255, 65, 255, 219, 255, 143, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 40, 255, 114, 255, 239, 255, 40, 255, 40, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 17, 255, 156, 255, 239, 255, 245, 255, 175, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 142, 255, 245, 255, 235, 255, 120, 255, 255, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 120, 255, 233, 255, 248, 255, 177, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 196, 255, 249, 255, 235, 255, 146, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 125, 255, 234, 255, 251, 255, 190, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 211, 255, 251, 255, 195, 255, 163, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 159, 255, 245, 255, 239, 255, 142, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0), +"format": "LumAlpha8", +"height": 256, +"mipmaps": false, +"width": 256 +} + +[sub_resource type="FontFile" id="FontFile_ulks6"] +data = PackedByteArray(0, 1, 0, 0, 0, 14, 0, 128, 0, 3, 0, 96, 71, 83, 85, 66, 54, 189, 53, 203, 0, 1, 80, 140, 0, 0, 2, 168, 79, 83, 47, 50, 151, 183, 193, 116, 0, 1, 35, 84, 0, 0, 0, 96, 83, 84, 65, 84, 231, 112, 204, 46, 0, 1, 83, 52, 0, 0, 0, 72, 99, 109, 97, 112, 171, 156, 209, 185, 0, 1, 35, 180, 0, 0, 7, 96, 103, 97, 115, 112, 0, 0, 0, 16, 0, 1, 80, 132, 0, 0, 0, 8, 103, 108, 121, 102, 169, 206, 21, 232, 0, 0, 0, 236, 0, 1, 18, 76, 104, 101, 97, 100, 1, 53, 156, 14, 0, 1, 27, 40, 0, 0, 0, 54, 104, 104, 101, 97, 10, 177, 1, 42, 0, 1, 35, 48, 0, 0, 0, 36, 104, 109, 116, 120, 7, 23, 19, 209, 0, 1, 27, 96, 0, 0, 7, 208, 108, 111, 99, 97, 62, 238, 130, 139, 0, 1, 19, 88, 0, 0, 7, 208, 109, 97, 120, 112, 4, 6, 1, 58, 0, 1, 19, 56, 0, 0, 0, 32, 110, 97, 109, 101, 96, 57, 138, 199, 0, 1, 43, 28, 0, 0, 3, 172, 112, 111, 115, 116, 151, 185, 175, 6, 0, 1, 46, 200, 0, 0, 33, 188, 112, 114, 101, 112, 104, 6, 140, 133, 0, 1, 43, 20, 0, 0, 0, 7, 0, 2, 0, 81, 0, 0, 4, 144, 5, 176, 0, 7, 0, 10, 0, 0, 65, 19, 51, 1, 35, 1, 51, 19, 55, 19, 19, 3, 101, 115, 184, 254, 50, 155, 254, 42, 185, 117, 50, 195, 192, 1, 121, 254, 135, 5, 176, 250, 80, 1, 121, 161, 2, 120, 253, 136, 0, 3, 0, 172, 0, 0, 4, 96, 5, 176, 0, 27, 0, 42, 0, 57, 0, 0, 115, 33, 54, 54, 55, 54, 54, 39, 52, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 33, 19, 33, 22, 22, 23, 22, 22, 7, 20, 6, 7, 6, 6, 7, 33, 17, 17, 51, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 172, 1, 210, 93, 175, 67, 67, 80, 1, 39, 35, 33, 102, 55, 53, 75, 31, 30, 35, 1, 1, 80, 67, 67, 172, 90, 254, 79, 186, 1, 39, 59, 102, 38, 38, 43, 1, 47, 40, 40, 104, 58, 254, 227, 253, 54, 103, 40, 39, 47, 48, 39, 39, 100, 52, 1, 56, 53, 52, 156, 102, 65, 112, 45, 41, 68, 13, 3, 23, 52, 38, 37, 94, 57, 102, 146, 47, 47, 45, 1, 252, 249, 2, 36, 33, 34, 96, 62, 61, 96, 33, 33, 37, 1, 2, 166, 1, 207, 1, 26, 27, 28, 86, 61, 57, 86, 29, 30, 31, 1, 0, 1, 0, 107, 255, 236, 4, 93, 5, 196, 0, 63, 0, 0, 65, 35, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 93, 185, 9, 44, 37, 37, 107, 73, 67, 100, 37, 37, 48, 15, 15, 13, 13, 15, 15, 49, 37, 36, 101, 66, 73, 107, 37, 37, 44, 9, 185, 12, 75, 62, 62, 172, 109, 91, 146, 57, 58, 83, 27, 28, 27, 1, 1, 27, 28, 27, 83, 58, 57, 147, 90, 105, 171, 63, 62, 78, 1, 182, 66, 113, 41, 42, 46, 43, 38, 37, 98, 56, 55, 115, 54, 205, 54, 115, 55, 55, 98, 37, 37, 43, 49, 43, 43, 114, 66, 104, 172, 62, 61, 67, 51, 45, 45, 123, 72, 72, 158, 81, 203, 81, 158, 72, 72, 122, 45, 45, 51, 67, 61, 60, 169, 0, 2, 0, 155, 0, 0, 4, 112, 5, 176, 0, 21, 0, 43, 0, 0, 115, 33, 54, 54, 55, 54, 54, 55, 54, 54, 53, 53, 38, 38, 39, 38, 38, 39, 38, 38, 39, 33, 23, 51, 22, 22, 23, 22, 22, 23, 22, 22, 23, 21, 6, 6, 7, 6, 6, 7, 6, 6, 7, 35, 155, 1, 81, 105, 181, 72, 68, 110, 36, 35, 37, 1, 39, 37, 41, 137, 89, 64, 151, 85, 254, 175, 188, 149, 69, 116, 47, 66, 91, 27, 21, 21, 1, 1, 20, 20, 23, 79, 54, 51, 131, 80, 149, 1, 48, 45, 43, 122, 75, 72, 172, 96, 107, 100, 176, 74, 87, 133, 41, 30, 33, 1, 152, 1, 29, 26, 35, 113, 70, 54, 125, 68, 109, 67, 123, 53, 65, 105, 36, 35, 38, 1, 0, 1, 0, 182, 0, 0, 4, 52, 5, 176, 0, 11, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 33, 53, 33, 17, 3, 207, 253, 160, 2, 188, 252, 139, 3, 126, 253, 59, 2, 161, 157, 1, 212, 158, 250, 80, 157, 2, 4, 0, 0, 1, 0, 191, 0, 0, 4, 61, 5, 176, 0, 9, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 51, 17, 3, 216, 253, 162, 2, 195, 252, 130, 187, 2, 131, 157, 1, 242, 158, 250, 80, 2, 131, 0, 0, 1, 0, 100, 255, 235, 4, 92, 5, 196, 0, 67, 0, 0, 101, 3, 33, 21, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 4, 92, 3, 254, 40, 1, 40, 2, 23, 68, 39, 39, 83, 38, 66, 104, 39, 40, 56, 18, 18, 17, 1, 14, 16, 16, 50, 38, 38, 102, 66, 69, 104, 38, 37, 46, 11, 183, 9, 78, 64, 64, 172, 102, 92, 148, 58, 59, 84, 28, 28, 27, 1, 1, 31, 31, 30, 90, 60, 60, 151, 90, 89, 162, 70, 41, 76, 191, 2, 22, 156, 254, 185, 33, 41, 12, 12, 8, 1, 1, 45, 38, 38, 100, 56, 56, 117, 55, 171, 54, 116, 56, 56, 101, 38, 38, 45, 43, 38, 38, 107, 63, 102, 165, 59, 58, 63, 54, 46, 47, 127, 74, 74, 161, 81, 169, 82, 161, 73, 74, 126, 46, 47, 53, 1, 1, 41, 42, 24, 65, 0, 1, 0, 141, 0, 0, 4, 63, 5, 176, 0, 11, 0, 0, 97, 17, 35, 17, 33, 17, 35, 17, 51, 17, 33, 17, 4, 63, 175, 253, 171, 174, 174, 2, 85, 5, 176, 253, 142, 2, 114, 250, 80, 2, 161, 253, 95, 0, 0, 1, 0, 174, 0, 0, 4, 30, 5, 176, 0, 11, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 33, 53, 174, 1, 85, 254, 171, 3, 112, 254, 163, 1, 93, 5, 176, 161, 251, 145, 160, 160, 4, 111, 161, 0, 0, 1, 0, 98, 255, 236, 4, 22, 5, 176, 0, 27, 0, 0, 65, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 35, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 17, 3, 89, 2, 39, 36, 37, 104, 66, 64, 103, 37, 37, 43, 3, 188, 9, 74, 62, 61, 167, 102, 101, 171, 63, 63, 73, 2, 5, 176, 252, 11, 62, 111, 42, 42, 49, 42, 39, 38, 104, 61, 101, 163, 57, 58, 62, 69, 62, 61, 170, 101, 3, 245, 0, 0, 1, 0, 172, 0, 0, 4, 164, 5, 176, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 7, 17, 35, 17, 51, 17, 2, 11, 1, 184, 225, 253, 225, 1, 253, 225, 254, 85, 141, 189, 189, 2, 164, 253, 92, 3, 51, 2, 125, 253, 233, 176, 2, 199, 250, 80, 1, 236, 0, 0, 1, 0, 198, 0, 0, 4, 71, 5, 176, 0, 5, 0, 0, 101, 17, 35, 17, 33, 53, 1, 127, 185, 3, 129, 157, 5, 19, 250, 80, 157, 0, 0, 1, 0, 148, 0, 0, 4, 76, 5, 176, 0, 14, 0, 0, 65, 35, 17, 51, 17, 3, 19, 51, 1, 3, 17, 51, 17, 35, 1, 1, 121, 229, 180, 15, 247, 106, 1, 13, 15, 180, 230, 255, 0, 5, 176, 250, 80, 2, 69, 2, 75, 253, 5, 3, 16, 253, 160, 253, 187, 5, 176, 253, 40, 0, 0, 1, 0, 143, 0, 0, 4, 62, 5, 176, 0, 9, 0, 0, 97, 17, 35, 3, 1, 35, 17, 51, 19, 1, 4, 62, 187, 3, 253, 203, 188, 187, 3, 2, 53, 5, 176, 251, 194, 4, 62, 250, 80, 4, 64, 251, 192, 0, 0, 2, 0, 106, 255, 236, 4, 97, 5, 196, 0, 37, 0, 75, 0, 0, 65, 53, 38, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 39, 21, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 4, 97, 1, 25, 26, 27, 81, 56, 56, 146, 90, 90, 145, 56, 56, 81, 26, 27, 25, 1, 1, 26, 27, 26, 82, 56, 56, 145, 90, 90, 145, 56, 56, 81, 26, 26, 25, 182, 1, 11, 14, 15, 47, 35, 36, 99, 65, 65, 98, 36, 36, 48, 15, 15, 13, 1, 1, 13, 15, 14, 48, 36, 36, 98, 64, 65, 98, 36, 36, 48, 15, 14, 12, 2, 132, 166, 78, 160, 74, 74, 129, 48, 48, 55, 55, 48, 49, 129, 74, 74, 159, 78, 166, 78, 158, 74, 74, 129, 48, 48, 55, 55, 48, 48, 128, 74, 74, 159, 246, 168, 52, 114, 55, 56, 101, 38, 39, 46, 46, 39, 38, 102, 56, 55, 114, 51, 168, 51, 113, 56, 55, 101, 39, 38, 46, 45, 38, 39, 101, 55, 56, 113, 0, 2, 0, 191, 0, 0, 4, 121, 5, 176, 0, 16, 0, 31, 0, 0, 65, 33, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 33, 17, 51, 17, 17, 33, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 1, 120, 1, 31, 98, 175, 66, 66, 77, 77, 66, 66, 175, 98, 254, 40, 185, 1, 31, 64, 109, 40, 39, 45, 45, 40, 40, 108, 64, 2, 72, 1, 58, 55, 55, 161, 105, 105, 162, 55, 55, 58, 2, 250, 80, 2, 224, 2, 56, 1, 40, 37, 37, 106, 66, 66, 103, 36, 36, 39, 1, 0, 0, 2, 0, 94, 255, 10, 4, 140, 5, 196, 0, 40, 0, 78, 0, 0, 65, 53, 38, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 5, 55, 39, 54, 54, 55, 54, 54, 39, 21, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 4, 110, 1, 26, 26, 27, 83, 57, 58, 149, 93, 93, 149, 57, 58, 82, 27, 27, 26, 1, 1, 26, 27, 27, 84, 58, 57, 148, 93, 36, 67, 31, 1, 32, 127, 251, 58, 83, 27, 26, 26, 183, 1, 11, 14, 15, 48, 37, 37, 103, 69, 68, 103, 37, 37, 49, 15, 15, 13, 13, 15, 15, 49, 37, 37, 102, 68, 69, 103, 37, 37, 49, 15, 14, 11, 2, 151, 128, 80, 165, 76, 76, 133, 49, 49, 57, 57, 49, 50, 133, 76, 76, 164, 80, 128, 80, 163, 76, 76, 133, 49, 49, 57, 9, 9, 244, 121, 209, 49, 133, 76, 76, 164, 211, 130, 55, 119, 58, 58, 104, 39, 40, 47, 47, 40, 40, 104, 58, 58, 119, 54, 130, 54, 119, 58, 57, 104, 40, 39, 47, 46, 39, 40, 104, 57, 58, 119, 0, 2, 0, 181, 0, 0, 4, 114, 5, 176, 0, 20, 0, 35, 0, 0, 65, 1, 51, 55, 1, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 33, 17, 51, 17, 53, 17, 51, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 2, 144, 1, 30, 195, 1, 254, 203, 60, 100, 36, 36, 41, 77, 67, 68, 180, 102, 254, 85, 184, 243, 67, 113, 41, 41, 46, 48, 41, 42, 110, 62, 2, 82, 253, 174, 12, 2, 110, 26, 74, 48, 48, 118, 71, 110, 163, 54, 54, 54, 2, 250, 80, 2, 82, 152, 2, 46, 1, 36, 35, 36, 105, 70, 66, 101, 35, 35, 37, 1, 0, 1, 0, 118, 255, 236, 4, 105, 5, 196, 0, 73, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 35, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 168, 52, 41, 41, 105, 54, 68, 115, 44, 44, 56, 9, 189, 3, 77, 66, 74, 201, 104, 87, 174, 69, 69, 87, 81, 66, 67, 162, 81, 49, 111, 47, 48, 62, 1, 47, 40, 39, 101, 53, 66, 105, 38, 38, 46, 8, 190, 2, 82, 68, 68, 176, 95, 86, 170, 67, 67, 83, 83, 66, 65, 159, 77, 53, 115, 48, 48, 61, 1, 112, 60, 87, 28, 29, 27, 37, 37, 36, 105, 68, 94, 153, 57, 66, 70, 49, 49, 48, 146, 98, 97, 148, 51, 55, 71, 25, 15, 40, 30, 30, 87, 63, 58, 88, 30, 30, 30, 41, 37, 37, 103, 63, 100, 162, 57, 57, 63, 53, 51, 51, 148, 94, 94, 139, 51, 50, 71, 25, 17, 42, 31, 32, 92, 0, 1, 0, 76, 0, 0, 4, 132, 5, 176, 0, 7, 0, 0, 65, 53, 33, 21, 33, 17, 51, 17, 4, 132, 251, 200, 1, 194, 180, 5, 18, 158, 158, 250, 238, 5, 18, 0, 0, 1, 0, 139, 255, 236, 4, 66, 5, 176, 0, 29, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 3, 35, 3, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 64, 179, 3, 2, 38, 36, 37, 108, 71, 71, 109, 36, 37, 39, 1, 4, 176, 2, 1, 70, 62, 62, 174, 106, 104, 174, 63, 63, 72, 5, 176, 252, 38, 65, 120, 46, 47, 55, 56, 46, 46, 120, 65, 3, 218, 252, 38, 102, 179, 66, 67, 76, 77, 67, 66, 178, 102, 0, 1, 0, 71, 0, 0, 4, 127, 5, 176, 0, 8, 0, 0, 97, 51, 1, 35, 1, 7, 39, 1, 35, 2, 19, 161, 1, 203, 197, 254, 190, 22, 21, 254, 192, 198, 5, 176, 251, 195, 73, 71, 4, 63, 0, 1, 0, 73, 0, 0, 4, 158, 5, 176, 0, 18, 0, 0, 115, 51, 19, 55, 23, 19, 51, 19, 35, 3, 7, 39, 3, 35, 3, 7, 39, 3, 35, 250, 190, 178, 11, 10, 177, 189, 177, 175, 105, 6, 11, 177, 161, 176, 11, 6, 105, 176, 4, 11, 62, 61, 251, 244, 5, 176, 252, 22, 60, 59, 3, 235, 252, 22, 60, 58, 3, 236, 0, 1, 0, 87, 0, 0, 4, 143, 5, 176, 0, 11, 0, 0, 65, 1, 35, 1, 1, 51, 1, 1, 51, 1, 1, 35, 2, 113, 254, 202, 217, 1, 167, 254, 78, 219, 1, 67, 1, 66, 216, 254, 79, 1, 167, 218, 3, 117, 2, 59, 253, 46, 253, 34, 2, 70, 253, 186, 2, 222, 2, 210, 0, 1, 0, 61, 0, 0, 4, 121, 5, 176, 0, 8, 0, 0, 65, 1, 35, 1, 19, 51, 19, 1, 35, 2, 91, 254, 181, 211, 1, 197, 3, 172, 3, 1, 197, 210, 2, 213, 2, 219, 252, 111, 253, 225, 2, 31, 3, 145, 0, 1, 0, 114, 0, 0, 4, 55, 5, 176, 0, 9, 0, 0, 101, 1, 39, 33, 21, 33, 1, 23, 33, 53, 1, 69, 2, 215, 2, 252, 101, 2, 200, 253, 43, 2, 3, 195, 157, 4, 134, 141, 158, 251, 126, 144, 157, 0, 0, 2, 0, 156, 255, 236, 4, 54, 4, 78, 0, 53, 0, 73, 0, 0, 97, 51, 53, 38, 38, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 37, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 21, 6, 6, 7, 6, 6, 3, 117, 193, 18, 20, 66, 57, 58, 158, 92, 101, 159, 55, 56, 59, 1, 186, 33, 30, 30, 87, 55, 59, 95, 33, 33, 36, 202, 113, 183, 65, 65, 71, 53, 49, 48, 139, 86, 53, 94, 42, 41, 69, 28, 3, 13, 254, 196, 54, 82, 27, 27, 27, 31, 30, 42, 143, 96, 172, 16, 56, 38, 39, 94, 16, 45, 121, 54, 1, 247, 91, 136, 46, 45, 45, 56, 45, 46, 114, 59, 34, 63, 23, 23, 28, 30, 27, 28, 78, 49, 85, 44, 44, 45, 134, 89, 68, 117, 42, 43, 50, 22, 19, 19, 50, 28, 34, 63, 120, 28, 25, 24, 68, 40, 42, 66, 24, 34, 33, 219, 32, 59, 23, 23, 28, 0, 0, 2, 0, 175, 255, 236, 4, 67, 6, 0, 0, 35, 0, 67, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 17, 35, 17, 51, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 39, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 4, 67, 28, 27, 26, 68, 43, 48, 118, 70, 56, 96, 40, 32, 56, 23, 185, 170, 9, 18, 40, 22, 46, 115, 70, 61, 105, 44, 61, 87, 27, 20, 21, 185, 12, 13, 16, 54, 40, 30, 76, 46, 48, 80, 32, 32, 49, 18, 17, 49, 32, 31, 80, 48, 44, 72, 29, 42, 58, 18, 13, 13, 2, 17, 21, 85, 153, 63, 56, 91, 32, 34, 38, 22, 21, 17, 47, 29, 2, 58, 250, 0, 123, 23, 38, 16, 32, 34, 30, 27, 39, 119, 75, 57, 131, 92, 21, 48, 92, 40, 53, 86, 28, 22, 23, 25, 23, 23, 61, 36, 1, 217, 36, 61, 23, 22, 25, 20, 18, 25, 88, 53, 43, 97, 0, 1, 0, 143, 255, 236, 4, 51, 4, 78, 0, 51, 0, 0, 101, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 35, 6, 6, 7, 6, 6, 2, 123, 87, 117, 35, 36, 31, 31, 36, 36, 117, 86, 56, 97, 35, 35, 41, 1, 175, 66, 58, 59, 161, 96, 123, 184, 61, 62, 62, 62, 62, 61, 184, 123, 86, 158, 61, 61, 73, 1, 175, 1, 45, 37, 37, 95, 130, 69, 56, 55, 139, 71, 42, 70, 138, 56, 55, 69, 38, 33, 33, 87, 49, 82, 144, 53, 52, 61, 88, 74, 75, 196, 107, 42, 108, 195, 74, 75, 88, 59, 50, 49, 131, 72, 45, 77, 28, 29, 32, 0, 0, 2, 0, 139, 255, 236, 4, 28, 6, 0, 0, 23, 0, 43, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 23, 51, 17, 35, 17, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 17, 6, 6, 35, 34, 38, 39, 38, 38, 139, 62, 56, 56, 159, 98, 100, 150, 54, 8, 170, 185, 53, 145, 97, 99, 160, 56, 57, 61, 185, 34, 36, 35, 111, 78, 91, 122, 36, 36, 122, 93, 77, 110, 35, 36, 34, 2, 38, 21, 116, 201, 74, 74, 84, 68, 66, 114, 6, 0, 253, 207, 62, 65, 82, 73, 73, 203, 142, 21, 79, 143, 55, 54, 64, 85, 66, 254, 10, 71, 84, 63, 54, 54, 142, 0, 0, 2, 0, 135, 255, 236, 4, 69, 4, 78, 0, 34, 0, 48, 0, 0, 69, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 39, 53, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 19, 50, 22, 23, 22, 22, 21, 21, 33, 54, 54, 55, 54, 54, 2, 140, 158, 215, 54, 113, 51, 154, 99, 75, 124, 44, 43, 49, 7, 3, 5, 57, 58, 58, 175, 117, 93, 177, 69, 70, 84, 76, 68, 68, 191, 90, 71, 103, 34, 34, 38, 253, 186, 11, 55, 40, 40, 100, 20, 127, 82, 88, 66, 80, 56, 49, 46, 120, 79, 7, 83, 113, 194, 72, 71, 81, 76, 71, 72, 207, 131, 42, 113, 192, 70, 70, 78, 3, 202, 52, 42, 42, 115, 50, 9, 75, 115, 40, 39, 41, 0, 0, 1, 0, 152, 0, 0, 4, 107, 6, 43, 0, 32, 0, 0, 97, 51, 17, 33, 53, 33, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 33, 21, 33, 1, 194, 186, 1, 161, 254, 95, 35, 34, 32, 97, 63, 62, 109, 41, 22, 26, 50, 25, 38, 78, 40, 96, 156, 55, 56, 61, 254, 214, 1, 42, 3, 171, 143, 76, 68, 102, 32, 31, 31, 21, 14, 153, 7, 11, 5, 7, 9, 54, 53, 53, 157, 104, 76, 143, 0, 2, 0, 140, 254, 86, 4, 29, 4, 78, 0, 53, 0, 79, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 35, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 140, 60, 56, 55, 160, 99, 59, 102, 42, 27, 47, 21, 40, 37, 38, 106, 66, 37, 74, 37, 37, 72, 34, 96, 37, 103, 56, 55, 108, 42, 102, 168, 61, 60, 67, 168, 9, 19, 43, 24, 44, 109, 65, 101, 160, 56, 56, 59, 185, 33, 36, 35, 111, 78, 46, 76, 31, 31, 48, 18, 18, 48, 30, 31, 77, 48, 77, 110, 35, 36, 33, 2, 38, 21, 116, 201, 74, 74, 84, 25, 23, 15, 40, 24, 93, 70, 108, 36, 37, 38, 15, 17, 17, 57, 41, 111, 53, 72, 21, 22, 19, 60, 58, 58, 166, 107, 4, 35, 118, 24, 40, 15, 29, 30, 82, 73, 73, 203, 142, 21, 79, 143, 55, 54, 64, 23, 20, 21, 56, 34, 254, 16, 35, 58, 21, 21, 23, 63, 54, 54, 142, 0, 0, 1, 0, 174, 0, 0, 4, 44, 6, 0, 0, 31, 0, 0, 65, 17, 35, 17, 51, 17, 54, 54, 55, 54, 54, 51, 54, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 6, 6, 7, 6, 6, 1, 103, 185, 185, 20, 51, 30, 38, 90, 50, 61, 94, 31, 29, 30, 185, 53, 49, 49, 139, 85, 65, 115, 48, 30, 54, 3, 153, 2, 103, 250, 0, 3, 18, 32, 53, 20, 26, 28, 1, 35, 35, 32, 97, 64, 253, 85, 2, 169, 109, 159, 52, 52, 49, 1, 36, 35, 21, 55, 0, 0, 2, 0, 203, 0, 0, 4, 85, 5, 195, 0, 9, 0, 27, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 3, 20, 22, 51, 50, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 203, 1, 112, 254, 144, 3, 138, 254, 159, 209, 55, 56, 55, 56, 16, 16, 13, 40, 26, 26, 41, 13, 16, 15, 4, 58, 161, 253, 7, 160, 160, 3, 154, 1, 28, 45, 60, 60, 45, 25, 42, 14, 13, 15, 15, 13, 15, 42, 0, 2, 0, 211, 254, 75, 3, 88, 5, 195, 0, 29, 0, 41, 0, 0, 65, 21, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 43, 1, 105, 39, 34, 34, 92, 52, 14, 49, 26, 27, 52, 17, 13, 25, 46, 23, 28, 58, 31, 100, 157, 55, 54, 57, 211, 54, 56, 56, 56, 56, 56, 56, 54, 4, 58, 161, 252, 96, 77, 105, 32, 32, 27, 1, 2, 1, 5, 3, 152, 4, 7, 2, 2, 2, 57, 55, 54, 160, 104, 4, 65, 1, 29, 45, 61, 61, 45, 45, 63, 63, 0, 0, 1, 0, 176, 0, 0, 4, 106, 6, 0, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 7, 17, 35, 17, 51, 17, 1, 242, 1, 141, 235, 254, 7, 1, 182, 225, 254, 157, 121, 186, 186, 1, 249, 254, 7, 2, 119, 1, 195, 254, 156, 130, 3, 172, 250, 0, 1, 118, 0, 0, 1, 0, 203, 0, 0, 4, 85, 6, 0, 0, 9, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 203, 1, 112, 254, 144, 3, 138, 254, 159, 6, 0, 161, 251, 65, 160, 160, 5, 96, 0, 1, 0, 93, 0, 0, 4, 114, 4, 78, 0, 58, 0, 0, 65, 35, 17, 51, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 52, 53, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 6, 6, 7, 1, 3, 166, 176, 6, 19, 13, 17, 49, 33, 30, 45, 15, 16, 15, 176, 3, 18, 16, 16, 48, 33, 31, 47, 16, 15, 16, 176, 36, 34, 31, 90, 56, 41, 69, 28, 22, 38, 14, 11, 31, 19, 26, 69, 43, 76, 107, 33, 4, 58, 251, 198, 3, 93, 16, 28, 11, 14, 15, 15, 16, 17, 52, 34, 252, 213, 3, 42, 6, 9, 5, 25, 41, 16, 15, 18, 16, 16, 17, 52, 34, 252, 214, 3, 40, 78, 115, 36, 32, 33, 1, 20, 17, 15, 40, 23, 25, 40, 14, 18, 19, 1, 64, 57, 0, 0, 1, 0, 174, 0, 0, 4, 41, 4, 78, 0, 31, 0, 0, 115, 51, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 6, 6, 7, 6, 6, 7, 39, 35, 174, 185, 19, 51, 30, 37, 88, 51, 59, 91, 32, 31, 32, 185, 53, 49, 49, 139, 85, 63, 113, 48, 32, 57, 24, 13, 166, 3, 8, 35, 58, 22, 25, 29, 28, 31, 31, 100, 72, 253, 85, 2, 175, 108, 157, 51, 51, 48, 1, 35, 32, 21, 57, 34, 160, 0, 0, 2, 0, 122, 255, 236, 4, 82, 4, 78, 0, 25, 0, 51, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 122, 68, 64, 63, 183, 115, 114, 182, 64, 63, 68, 68, 63, 64, 183, 115, 114, 182, 63, 64, 68, 185, 38, 39, 38, 114, 77, 77, 115, 39, 38, 39, 38, 38, 39, 115, 76, 77, 116, 38, 39, 38, 2, 39, 22, 117, 200, 74, 74, 84, 84, 74, 74, 200, 117, 22, 117, 201, 74, 74, 85, 85, 74, 74, 201, 139, 22, 79, 145, 55, 55, 65, 65, 55, 55, 145, 79, 22, 80, 145, 55, 55, 64, 64, 55, 55, 145, 0, 0, 2, 0, 173, 254, 96, 4, 63, 4, 78, 0, 29, 0, 55, 0, 0, 83, 51, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 39, 35, 1, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 173, 185, 20, 46, 26, 43, 107, 62, 102, 159, 54, 54, 56, 56, 54, 54, 160, 104, 59, 103, 42, 30, 52, 22, 9, 169, 2, 217, 35, 36, 36, 112, 77, 48, 79, 32, 28, 44, 17, 19, 50, 32, 29, 73, 43, 78, 112, 37, 36, 35, 254, 96, 2, 8, 22, 37, 15, 24, 26, 84, 74, 74, 201, 116, 21, 121, 203, 73, 73, 82, 25, 24, 16, 45, 28, 118, 253, 236, 21, 79, 144, 55, 55, 65, 24, 21, 18, 52, 30, 2, 9, 34, 56, 19, 19, 20, 64, 54, 55, 143, 0, 2, 0, 140, 254, 96, 4, 28, 4, 78, 0, 29, 0, 55, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 17, 51, 17, 35, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 140, 59, 56, 56, 161, 103, 53, 92, 39, 31, 53, 24, 185, 170, 8, 21, 48, 27, 42, 101, 58, 104, 163, 56, 56, 58, 185, 35, 37, 36, 112, 77, 43, 73, 31, 30, 49, 19, 20, 50, 32, 30, 72, 43, 77, 111, 36, 36, 35, 2, 38, 21, 116, 201, 74, 74, 84, 20, 19, 14, 40, 25, 253, 254, 5, 218, 107, 24, 40, 15, 24, 24, 82, 73, 73, 203, 142, 21, 79, 144, 56, 55, 66, 21, 19, 19, 51, 31, 253, 234, 33, 55, 19, 17, 20, 65, 55, 55, 144, 0, 0, 1, 1, 73, 0, 0, 4, 49, 4, 78, 0, 21, 0, 0, 65, 34, 6, 7, 39, 39, 35, 17, 51, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 3, 115, 118, 185, 66, 1, 8, 176, 186, 18, 55, 37, 41, 110, 68, 53, 97, 54, 25, 28, 111, 4, 78, 103, 89, 27, 145, 251, 198, 2, 182, 50, 81, 28, 32, 33, 11, 12, 181, 12, 14, 0, 0, 1, 0, 175, 255, 236, 4, 54, 4, 78, 0, 73, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 125, 20, 19, 31, 110, 74, 47, 96, 39, 40, 53, 4, 185, 63, 60, 59, 172, 110, 96, 162, 58, 58, 65, 57, 54, 54, 158, 100, 76, 99, 29, 30, 24, 30, 30, 29, 89, 59, 57, 91, 32, 32, 36, 185, 61, 56, 56, 160, 100, 93, 155, 56, 56, 62, 60, 55, 54, 153, 93, 76, 102, 31, 31, 26, 1, 31, 26, 46, 19, 31, 35, 20, 24, 24, 78, 57, 69, 128, 48, 49, 59, 46, 42, 42, 118, 72, 67, 102, 39, 38, 55, 21, 15, 32, 20, 20, 50, 32, 31, 58, 22, 22, 26, 32, 26, 26, 67, 35, 71, 123, 46, 46, 52, 50, 43, 43, 115, 66, 67, 101, 37, 38, 54, 19, 15, 37, 22, 22, 53, 0, 1, 0, 142, 255, 236, 4, 41, 5, 64, 0, 35, 0, 0, 65, 35, 17, 33, 21, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 53, 33, 2, 100, 186, 254, 228, 1, 28, 53, 46, 46, 125, 72, 43, 87, 39, 39, 66, 23, 26, 17, 53, 30, 31, 64, 30, 41, 73, 28, 28, 32, 1, 156, 254, 100, 5, 64, 254, 250, 143, 253, 180, 100, 141, 44, 45, 41, 8, 8, 7, 21, 14, 131, 4, 11, 5, 5, 7, 20, 25, 24, 82, 63, 2, 76, 143, 0, 0, 1, 0, 180, 255, 236, 4, 31, 4, 58, 0, 28, 0, 0, 97, 51, 17, 35, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 3, 119, 168, 186, 15, 45, 30, 36, 98, 62, 53, 81, 28, 28, 28, 185, 53, 49, 49, 138, 85, 106, 162, 54, 4, 58, 252, 248, 35, 59, 21, 26, 29, 28, 35, 34, 116, 88, 2, 133, 253, 125, 121, 173, 56, 56, 53, 89, 80, 0, 1, 0, 98, 0, 0, 4, 101, 4, 58, 0, 8, 0, 0, 97, 51, 1, 35, 1, 7, 39, 1, 35, 2, 31, 141, 1, 185, 189, 254, 209, 18, 17, 254, 202, 190, 4, 58, 252, 208, 67, 67, 3, 48, 0, 1, 0, 48, 0, 0, 4, 167, 4, 58, 0, 18, 0, 0, 97, 51, 19, 55, 23, 19, 51, 19, 35, 3, 7, 39, 3, 35, 3, 7, 39, 3, 35, 1, 22, 146, 167, 27, 28, 169, 146, 230, 164, 120, 27, 29, 172, 119, 173, 27, 22, 126, 164, 2, 151, 168, 168, 253, 105, 4, 58, 253, 78, 170, 170, 2, 178, 253, 78, 155, 155, 2, 178, 0, 0, 1, 0, 110, 0, 0, 4, 114, 4, 58, 0, 11, 0, 0, 65, 1, 35, 1, 1, 51, 1, 1, 51, 1, 1, 35, 2, 109, 254, 226, 214, 1, 147, 254, 98, 216, 1, 43, 1, 43, 214, 254, 98, 1, 147, 217, 2, 169, 1, 145, 253, 233, 253, 221, 1, 156, 254, 100, 2, 35, 2, 23, 0, 1, 0, 68, 254, 75, 4, 133, 4, 58, 0, 27, 0, 0, 65, 50, 54, 55, 54, 54, 55, 1, 35, 1, 7, 39, 1, 35, 1, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 1, 5, 73, 112, 42, 42, 59, 19, 2, 37, 207, 254, 233, 51, 48, 254, 215, 207, 1, 210, 74, 10, 35, 24, 25, 63, 38, 14, 49, 25, 30, 18, 70, 254, 75, 54, 40, 40, 94, 42, 4, 225, 253, 66, 127, 131, 2, 186, 251, 249, 144, 20, 62, 29, 29, 42, 3, 2, 151, 4, 12, 0, 0, 1, 0, 160, 0, 0, 4, 61, 4, 58, 0, 9, 0, 0, 101, 1, 53, 33, 21, 33, 1, 21, 33, 53, 1, 140, 2, 141, 252, 144, 2, 125, 253, 122, 3, 157, 151, 3, 32, 131, 153, 252, 231, 136, 151, 0, 0, 3, 0, 145, 255, 236, 4, 64, 5, 197, 0, 25, 0, 42, 0, 59, 0, 0, 65, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 52, 52, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 19, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 1, 20, 20, 21, 4, 64, 64, 60, 61, 175, 112, 111, 175, 60, 61, 64, 64, 61, 61, 176, 111, 112, 174, 60, 60, 64, 253, 11, 41, 42, 35, 101, 66, 65, 99, 34, 35, 41, 8, 4, 43, 46, 34, 98, 63, 60, 96, 34, 37, 46, 9, 2, 54, 2, 45, 1, 85, 139, 215, 74, 74, 77, 77, 74, 74, 215, 139, 254, 171, 139, 215, 73, 75, 75, 76, 74, 73, 215, 176, 26, 50, 25, 244, 102, 155, 49, 39, 41, 38, 38, 37, 111, 72, 254, 1, 107, 158, 49, 36, 38, 35, 34, 36, 111, 73, 1, 177, 28, 85, 15, 0, 1, 0, 208, 0, 0, 3, 6, 5, 176, 0, 6, 0, 0, 97, 17, 35, 5, 21, 37, 17, 3, 6, 15, 253, 217, 1, 125, 5, 176, 212, 169, 145, 251, 60, 0, 0, 1, 0, 85, 0, 0, 4, 43, 5, 196, 0, 42, 0, 0, 97, 53, 33, 1, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 1, 21, 4, 43, 253, 37, 1, 135, 55, 99, 38, 37, 44, 61, 57, 57, 165, 103, 112, 175, 60, 61, 64, 186, 35, 36, 35, 107, 73, 60, 95, 34, 33, 35, 22, 26, 26, 86, 64, 254, 35, 151, 1, 168, 60, 121, 62, 62, 127, 65, 87, 148, 54, 54, 61, 72, 61, 61, 163, 92, 68, 110, 39, 38, 42, 41, 35, 35, 95, 54, 44, 83, 46, 47, 110, 71, 253, 238, 133, 0, 1, 0, 94, 255, 236, 3, 249, 5, 196, 0, 76, 0, 0, 65, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 1, 134, 132, 69, 115, 41, 40, 45, 39, 36, 36, 102, 63, 63, 103, 36, 36, 39, 185, 73, 62, 62, 169, 96, 98, 169, 62, 62, 70, 23, 28, 29, 95, 71, 59, 85, 27, 27, 26, 64, 58, 58, 162, 98, 101, 165, 59, 59, 65, 186, 38, 35, 34, 97, 59, 61, 95, 32, 33, 34, 38, 36, 37, 107, 70, 3, 49, 150, 32, 33, 33, 99, 68, 69, 101, 34, 34, 33, 36, 33, 33, 94, 57, 96, 150, 52, 52, 54, 57, 55, 54, 158, 102, 50, 102, 46, 46, 74, 23, 25, 75, 43, 42, 90, 42, 101, 154, 52, 52, 53, 63, 54, 55, 147, 83, 57, 92, 33, 33, 35, 31, 31, 32, 97, 65, 55, 92, 33, 33, 38, 0, 0, 2, 0, 75, 0, 0, 4, 103, 5, 176, 0, 10, 0, 14, 0, 0, 65, 17, 35, 1, 21, 33, 17, 51, 17, 51, 53, 33, 1, 55, 17, 3, 156, 197, 253, 116, 2, 152, 185, 203, 252, 177, 1, 173, 30, 1, 233, 3, 199, 252, 15, 109, 254, 174, 1, 82, 151, 2, 153, 56, 253, 47, 0, 1, 0, 187, 255, 236, 4, 79, 5, 176, 0, 48, 0, 0, 83, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 35, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 19, 33, 53, 33, 240, 148, 25, 47, 27, 27, 67, 46, 70, 108, 37, 37, 39, 35, 34, 35, 102, 66, 117, 149, 17, 176, 10, 79, 62, 61, 158, 89, 116, 172, 57, 56, 56, 60, 56, 56, 160, 101, 79, 120, 43, 41, 2, 79, 253, 21, 2, 218, 38, 22, 34, 12, 12, 13, 50, 43, 44, 118, 68, 75, 122, 43, 44, 47, 128, 124, 101, 152, 50, 50, 50, 73, 65, 64, 178, 104, 110, 180, 64, 63, 70, 38, 25, 1, 132, 180, 0, 0, 2, 0, 141, 255, 236, 4, 37, 5, 177, 0, 39, 0, 64, 0, 0, 65, 35, 34, 6, 7, 6, 2, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 54, 54, 55, 54, 54, 51, 51, 3, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 54, 54, 55, 54, 54, 3, 88, 16, 156, 246, 86, 125, 86, 64, 65, 58, 170, 112, 111, 169, 57, 57, 57, 48, 51, 51, 158, 109, 50, 91, 39, 40, 68, 26, 6, 65, 63, 60, 184, 132, 16, 242, 67, 100, 33, 33, 32, 35, 34, 35, 100, 65, 56, 102, 39, 39, 46, 17, 58, 38, 38, 88, 5, 177, 87, 86, 125, 254, 160, 182, 87, 106, 211, 79, 72, 90, 78, 68, 67, 180, 102, 89, 172, 68, 68, 83, 23, 19, 20, 53, 31, 96, 182, 66, 63, 75, 254, 22, 56, 47, 47, 121, 64, 72, 123, 44, 44, 50, 53, 51, 51, 149, 96, 62, 46, 76, 27, 27, 30, 0, 0, 1, 0, 112, 0, 0, 4, 72, 5, 176, 0, 6, 0, 0, 65, 53, 33, 21, 33, 1, 51, 4, 72, 252, 40, 3, 20, 253, 167, 194, 5, 72, 104, 162, 250, 242, 0, 3, 0, 177, 255, 236, 4, 79, 5, 196, 0, 47, 0, 71, 0, 95, 0, 0, 65, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 46, 66, 58, 58, 158, 92, 93, 157, 56, 57, 64, 30, 27, 27, 78, 48, 56, 90, 32, 32, 34, 72, 63, 62, 169, 98, 96, 168, 63, 62, 73, 35, 32, 33, 91, 56, 32, 56, 23, 48, 54, 151, 41, 36, 37, 102, 61, 64, 103, 36, 36, 39, 39, 36, 36, 102, 63, 61, 103, 37, 37, 41, 34, 36, 32, 33, 90, 53, 54, 89, 32, 33, 35, 35, 32, 32, 88, 54, 54, 90, 33, 32, 37, 4, 52, 95, 149, 51, 51, 54, 54, 51, 51, 149, 95, 54, 98, 41, 42, 67, 24, 24, 72, 45, 46, 109, 61, 100, 154, 52, 53, 54, 55, 53, 52, 154, 99, 61, 108, 46, 46, 71, 24, 16, 40, 23, 48, 127, 253, 162, 63, 99, 34, 34, 36, 36, 34, 34, 99, 63, 61, 102, 37, 36, 40, 40, 36, 37, 102, 2, 103, 56, 92, 32, 33, 35, 35, 33, 32, 91, 57, 57, 93, 33, 33, 35, 37, 33, 34, 92, 0, 0, 2, 0, 149, 255, 255, 4, 41, 5, 196, 0, 40, 0, 65, 0, 0, 101, 35, 21, 51, 50, 54, 55, 54, 18, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 21, 6, 6, 7, 6, 6, 19, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 6, 6, 7, 6, 6, 1, 117, 19, 19, 180, 251, 71, 118, 72, 66, 66, 56, 165, 112, 112, 169, 56, 57, 57, 48, 51, 51, 157, 108, 56, 95, 39, 39, 62, 24, 5, 48, 69, 57, 187, 81, 67, 99, 32, 33, 32, 36, 35, 34, 100, 65, 57, 101, 39, 38, 45, 17, 59, 37, 38, 89, 164, 165, 99, 80, 132, 1, 85, 169, 67, 119, 239, 80, 68, 83, 81, 68, 69, 183, 103, 88, 174, 69, 69, 85, 23, 20, 20, 53, 30, 2, 92, 172, 75, 61, 67, 1, 220, 59, 48, 48, 123, 64, 72, 125, 46, 45, 52, 56, 52, 53, 152, 97, 60, 47, 77, 28, 29, 31, 0, 1, 1, 130, 2, 153, 2, 246, 5, 174, 0, 6, 0, 0, 65, 17, 35, 5, 21, 55, 17, 2, 246, 18, 254, 158, 215, 2, 153, 3, 21, 117, 128, 57, 253, 167, 0, 1, 1, 60, 2, 155, 3, 166, 5, 187, 0, 42, 0, 0, 65, 53, 33, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 1, 21, 3, 166, 254, 113, 175, 43, 71, 26, 25, 27, 40, 37, 37, 106, 66, 69, 111, 39, 39, 42, 158, 18, 18, 18, 55, 37, 29, 47, 16, 16, 16, 19, 21, 14, 41, 26, 254, 224, 2, 155, 128, 145, 39, 71, 35, 34, 71, 40, 55, 87, 31, 31, 33, 41, 35, 36, 96, 54, 29, 49, 17, 18, 20, 16, 15, 15, 40, 24, 21, 47, 28, 19, 43, 24, 254, 241, 108, 0, 1, 1, 67, 2, 143, 3, 159, 5, 186, 0, 76, 0, 0, 65, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 2, 14, 84, 45, 69, 20, 12, 13, 16, 16, 18, 57, 36, 35, 57, 19, 16, 18, 158, 51, 42, 41, 107, 57, 64, 112, 42, 41, 47, 20, 21, 18, 55, 36, 27, 44, 16, 24, 25, 43, 39, 39, 108, 64, 60, 104, 38, 39, 45, 157, 13, 11, 17, 56, 35, 32, 49, 17, 17, 18, 23, 23, 18, 51, 31, 4, 101, 116, 20, 22, 13, 36, 24, 24, 39, 14, 16, 18, 18, 16, 14, 36, 21, 61, 88, 28, 29, 27, 31, 29, 29, 86, 56, 37, 61, 23, 21, 32, 10, 10, 28, 17, 24, 59, 33, 55, 84, 29, 28, 29, 31, 28, 29, 82, 51, 17, 29, 10, 18, 18, 14, 13, 14, 39, 23, 28, 44, 14, 11, 12, 0, 0, 2, 1, 28, 2, 179, 3, 177, 5, 196, 0, 52, 0, 72, 0, 0, 65, 51, 38, 38, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 21, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 54, 54, 55, 54, 54, 55, 22, 22, 39, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 21, 6, 6, 7, 6, 6, 3, 12, 165, 14, 12, 42, 37, 38, 107, 65, 69, 114, 40, 41, 45, 1, 161, 18, 16, 19, 59, 37, 31, 46, 16, 16, 16, 1, 141, 77, 123, 42, 43, 46, 32, 31, 32, 94, 60, 48, 78, 30, 22, 35, 13, 3, 11, 201, 35, 51, 16, 12, 12, 18, 18, 21, 69, 44, 140, 8, 39, 25, 26, 59, 2, 193, 45, 88, 48, 1, 58, 68, 104, 35, 34, 35, 34, 31, 31, 86, 51, 12, 23, 37, 13, 16, 16, 17, 16, 17, 52, 33, 52, 29, 28, 29, 88, 57, 52, 83, 29, 30, 33, 1, 24, 19, 14, 35, 18, 26, 49, 101, 16, 15, 11, 32, 20, 22, 38, 15, 18, 22, 109, 18, 36, 14, 15, 17, 0, 0, 2, 1, 16, 2, 178, 3, 188, 5, 196, 0, 25, 0, 51, 0, 0, 65, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 16, 48, 45, 44, 127, 80, 79, 126, 44, 44, 47, 47, 44, 45, 127, 79, 79, 126, 44, 45, 48, 163, 22, 23, 22, 67, 45, 45, 67, 23, 22, 23, 23, 22, 22, 67, 44, 46, 68, 22, 23, 22, 4, 117, 117, 72, 123, 44, 45, 50, 50, 45, 44, 123, 72, 117, 73, 123, 45, 44, 50, 50, 44, 45, 123, 190, 117, 41, 71, 27, 26, 30, 30, 26, 27, 71, 41, 117, 42, 71, 26, 26, 30, 30, 26, 26, 71, 0, 3, 0, 36, 0, 0, 4, 150, 5, 177, 0, 6, 0, 49, 0, 53, 0, 0, 65, 17, 35, 5, 21, 55, 17, 1, 53, 33, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 5, 21, 37, 1, 39, 1, 1, 115, 16, 254, 193, 194, 3, 176, 254, 153, 157, 39, 64, 23, 23, 24, 36, 33, 34, 95, 59, 62, 100, 35, 36, 37, 142, 1, 16, 17, 16, 49, 32, 26, 41, 14, 15, 16, 14, 15, 13, 40, 27, 254, 253, 254, 219, 2, 2, 114, 253, 255, 2, 235, 2, 198, 105, 115, 51, 253, 227, 253, 21, 115, 131, 35, 64, 31, 31, 64, 36, 49, 79, 27, 28, 30, 37, 31, 33, 86, 49, 27, 44, 17, 15, 17, 14, 12, 14, 37, 22, 17, 37, 22, 19, 44, 25, 244, 97, 221, 3, 186, 66, 252, 70, 0, 0, 4, 0, 48, 0, 0, 4, 140, 5, 181, 0, 6, 0, 17, 0, 21, 0, 25, 0, 0, 65, 17, 35, 5, 21, 55, 17, 1, 17, 35, 1, 23, 33, 21, 51, 53, 51, 53, 33, 55, 55, 17, 5, 1, 39, 1, 1, 127, 16, 254, 193, 194, 3, 58, 145, 254, 173, 5, 1, 82, 141, 96, 254, 74, 186, 15, 253, 243, 2, 2, 114, 253, 255, 2, 239, 2, 198, 105, 115, 51, 253, 227, 254, 30, 1, 185, 254, 46, 92, 152, 152, 117, 235, 25, 254, 252, 48, 3, 186, 66, 252, 70, 0, 4, 0, 38, 0, 0, 4, 173, 5, 184, 0, 10, 0, 14, 0, 91, 0, 95, 0, 0, 65, 17, 35, 1, 23, 33, 21, 51, 53, 51, 53, 33, 55, 55, 17, 1, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 19, 1, 39, 1, 4, 77, 145, 254, 173, 5, 1, 82, 141, 96, 254, 74, 186, 15, 253, 29, 75, 34, 55, 19, 17, 18, 15, 14, 18, 49, 32, 34, 52, 17, 14, 14, 142, 46, 38, 36, 97, 51, 58, 100, 38, 37, 42, 21, 22, 16, 46, 30, 25, 39, 16, 20, 23, 39, 35, 35, 97, 58, 54, 93, 35, 35, 40, 141, 14, 12, 16, 48, 29, 31, 47, 15, 13, 14, 19, 18, 17, 47, 31, 173, 2, 2, 114, 253, 255, 1, 13, 1, 185, 254, 46, 92, 152, 152, 117, 235, 25, 254, 252, 3, 120, 104, 13, 13, 12, 39, 27, 21, 36, 13, 14, 16, 18, 16, 11, 32, 18, 55, 79, 25, 27, 24, 28, 26, 26, 78, 50, 36, 59, 21, 16, 26, 8, 9, 25, 15, 22, 53, 30, 49, 76, 26, 25, 26, 28, 25, 26, 74, 46, 17, 28, 11, 13, 14, 15, 14, 12, 33, 19, 23, 38, 13, 11, 13, 252, 87, 3, 186, 66, 252, 70, 0, 0, 2, 0, 32, 0, 0, 4, 171, 5, 176, 0, 15, 0, 18, 0, 0, 97, 53, 33, 3, 33, 53, 33, 3, 33, 53, 33, 1, 51, 19, 33, 19, 3, 19, 19, 4, 171, 254, 155, 1, 1, 46, 254, 210, 2, 1, 81, 253, 188, 253, 208, 198, 123, 1, 54, 1, 250, 247, 2, 151, 2, 19, 151, 1, 215, 152, 250, 80, 1, 97, 254, 159, 2, 15, 2, 194, 253, 62, 0, 3, 0, 43, 255, 236, 4, 169, 4, 78, 0, 87, 0, 112, 0, 130, 0, 0, 69, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 6, 38, 39, 38, 38, 39, 38, 38, 53, 53, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 37, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 20, 22, 21, 20, 20, 21, 6, 6, 7, 6, 6, 1, 33, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 3, 128, 59, 93, 35, 34, 46, 13, 46, 16, 38, 23, 24, 59, 38, 60, 87, 28, 21, 26, 6, 7, 9, 1, 249, 43, 42, 42, 123, 81, 47, 82, 34, 20, 37, 16, 16, 39, 22, 35, 85, 50, 72, 118, 41, 42, 45, 179, 19, 18, 19, 53, 32, 31, 46, 16, 19, 18, 63, 101, 154, 51, 49, 50, 39, 37, 37, 108, 71, 48, 80, 33, 33, 51, 19, 17, 43, 25, 42, 106, 254, 51, 36, 55, 18, 19, 19, 31, 29, 29, 84, 53, 61, 1, 13, 30, 16, 20, 42, 2, 114, 254, 183, 9, 8, 10, 29, 23, 17, 49, 29, 37, 58, 20, 20, 20, 20, 19, 13, 13, 29, 10, 136, 11, 24, 10, 11, 14, 1, 33, 27, 20, 48, 26, 28, 64, 36, 86, 234, 84, 137, 49, 48, 53, 22, 22, 12, 32, 19, 21, 35, 12, 20, 19, 43, 39, 40, 111, 69, 8, 37, 58, 20, 21, 22, 19, 18, 22, 66, 42, 148, 49, 46, 45, 129, 81, 69, 113, 39, 40, 44, 24, 20, 20, 53, 29, 27, 44, 18, 28, 29, 150, 24, 21, 20, 55, 31, 43, 77, 30, 29, 35, 65, 66, 63, 43, 39, 17, 13, 24, 10, 11, 14, 1, 254, 69, 30, 58, 26, 30, 45, 21, 15, 16, 31, 25, 26, 65, 35, 0, 2, 0, 79, 255, 236, 4, 166, 5, 196, 0, 29, 0, 49, 0, 0, 97, 53, 33, 17, 33, 53, 33, 17, 33, 53, 33, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 37, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 17, 6, 6, 4, 166, 254, 105, 1, 88, 254, 168, 1, 141, 254, 94, 62, 134, 69, 97, 155, 54, 54, 58, 59, 55, 54, 155, 97, 69, 132, 62, 254, 249, 57, 88, 30, 30, 30, 30, 29, 29, 88, 57, 26, 50, 25, 25, 49, 151, 2, 13, 152, 1, 220, 152, 8, 12, 68, 66, 66, 195, 128, 254, 61, 128, 195, 66, 66, 67, 13, 7, 131, 37, 43, 43, 143, 105, 1, 197, 105, 141, 43, 43, 37, 2, 2, 251, 94, 1, 2, 0, 0, 3, 0, 46, 255, 236, 4, 176, 4, 78, 0, 67, 0, 99, 0, 117, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 19, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 50, 22, 23, 22, 22, 21, 21, 33, 53, 52, 54, 55, 54, 54, 55, 54, 54, 46, 45, 44, 44, 128, 83, 52, 89, 37, 21, 39, 16, 15, 36, 20, 38, 97, 57, 48, 76, 30, 30, 45, 17, 55, 16, 36, 23, 23, 58, 35, 29, 46, 18, 19, 30, 10, 8, 5, 1, 202, 38, 39, 40, 121, 83, 43, 80, 34, 22, 39, 17, 15, 36, 21, 37, 92, 55, 82, 128, 43, 44, 45, 186, 18, 19, 18, 59, 42, 42, 61, 19, 9, 14, 5, 4, 5, 9, 6, 5, 29, 24, 14, 44, 26, 43, 60, 19, 19, 17, 2, 135, 37, 51, 17, 16, 15, 254, 239, 6, 4, 7, 31, 21, 15, 34, 2, 127, 198, 105, 170, 60, 60, 66, 26, 25, 15, 38, 23, 21, 36, 14, 28, 28, 16, 13, 13, 34, 18, 126, 14, 24, 10, 10, 12, 19, 19, 20, 62, 41, 31, 71, 39, 64, 181, 91, 156, 57, 57, 64, 25, 25, 15, 40, 24, 22, 37, 14, 27, 29, 66, 61, 61, 170, 254, 209, 198, 67, 115, 41, 41, 47, 46, 41, 20, 49, 27, 28, 65, 35, 198, 44, 80, 34, 29, 63, 26, 16, 19, 46, 41, 41, 115, 2, 65, 37, 30, 31, 78, 42, 85, 4, 34, 63, 27, 45, 78, 22, 15, 15, 0, 2, 0, 73, 255, 236, 4, 42, 5, 241, 0, 43, 0, 71, 0, 0, 65, 55, 39, 7, 38, 38, 39, 7, 22, 22, 23, 7, 23, 37, 22, 22, 23, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 53, 52, 2, 1, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 20, 22, 21, 21, 20, 6, 7, 6, 6, 7, 6, 6, 3, 77, 211, 73, 230, 63, 143, 80, 57, 46, 87, 41, 239, 73, 1, 10, 62, 90, 23, 57, 153, 88, 105, 179, 65, 66, 73, 72, 66, 65, 181, 108, 71, 128, 55, 63, 98, 34, 25, 27, 117, 254, 132, 74, 115, 39, 40, 42, 42, 40, 39, 112, 69, 125, 160, 34, 1, 18, 16, 21, 61, 39, 33, 79, 5, 6, 121, 100, 132, 51, 73, 22, 159, 16, 41, 27, 137, 99, 152, 63, 168, 110, 56, 68, 73, 67, 67, 188, 115, 102, 178, 66, 66, 75, 35, 33, 39, 120, 76, 61, 145, 82, 62, 206, 1, 73, 251, 242, 59, 48, 47, 121, 62, 73, 130, 49, 49, 57, 86, 54, 13, 24, 13, 64, 62, 112, 47, 58, 86, 27, 24, 25, 0, 2, 0, 168, 0, 0, 4, 94, 5, 176, 0, 18, 0, 33, 0, 0, 65, 35, 17, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 21, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 1, 97, 185, 185, 1, 21, 117, 181, 63, 62, 65, 65, 62, 63, 181, 117, 254, 235, 1, 21, 78, 115, 37, 37, 36, 36, 37, 38, 114, 78, 254, 235, 5, 176, 250, 80, 1, 57, 63, 57, 56, 156, 93, 93, 156, 57, 56, 63, 152, 45, 38, 39, 99, 54, 53, 98, 37, 38, 45, 0, 0, 2, 0, 173, 254, 96, 4, 63, 6, 22, 0, 29, 0, 55, 0, 0, 65, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 17, 35, 17, 51, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 39, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 63, 54, 53, 53, 158, 104, 58, 101, 42, 30, 53, 23, 185, 185, 23, 53, 30, 43, 102, 59, 102, 156, 54, 53, 54, 185, 34, 35, 35, 110, 76, 50, 82, 32, 28, 44, 18, 18, 47, 30, 31, 79, 47, 77, 110, 36, 35, 34, 2, 17, 21, 121, 203, 73, 73, 82, 23, 23, 16, 43, 27, 2, 76, 248, 74, 2, 11, 26, 41, 15, 22, 23, 84, 74, 74, 201, 137, 21, 79, 144, 55, 55, 65, 25, 22, 19, 51, 30, 2, 6, 32, 54, 19, 21, 23, 64, 54, 55, 143, 0, 1, 0, 186, 0, 0, 4, 114, 4, 58, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 7, 17, 35, 17, 51, 17, 2, 9, 1, 127, 234, 254, 20, 1, 200, 223, 254, 114, 110, 185, 185, 1, 221, 254, 35, 2, 91, 1, 223, 254, 101, 120, 2, 19, 251, 198, 1, 88, 0, 0, 1, 0, 169, 255, 235, 4, 76, 6, 22, 0, 81, 0, 0, 97, 17, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 1, 97, 1, 119, 99, 32, 63, 25, 24, 30, 20, 15, 16, 36, 15, 16, 20, 46, 34, 34, 80, 34, 34, 45, 21, 22, 22, 68, 47, 34, 69, 31, 32, 53, 18, 42, 20, 68, 41, 40, 88, 41, 76, 127, 46, 46, 51, 45, 34, 34, 80, 34, 34, 45, 39, 24, 24, 40, 56, 49, 49, 130, 75, 85, 144, 52, 53, 59, 4, 63, 155, 164, 26, 25, 26, 75, 50, 38, 63, 29, 30, 55, 29, 30, 66, 39, 68, 103, 41, 42, 71, 34, 35, 77, 47, 38, 64, 24, 24, 27, 15, 12, 11, 27, 11, 155, 16, 26, 9, 10, 11, 42, 42, 42, 126, 85, 65, 100, 41, 41, 70, 35, 35, 74, 46, 50, 77, 42, 42, 107, 79, 86, 127, 42, 42, 41, 63, 60, 60, 176, 112, 251, 193, 0, 0, 2, 0, 177, 255, 236, 4, 95, 4, 79, 0, 42, 0, 56, 0, 0, 65, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 20, 22, 21, 33, 21, 20, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 3, 34, 38, 39, 38, 38, 53, 53, 33, 6, 6, 7, 6, 6, 2, 97, 75, 125, 49, 50, 75, 27, 73, 25, 61, 36, 42, 103, 61, 78, 118, 41, 37, 44, 5, 1, 253, 12, 56, 57, 57, 173, 117, 96, 175, 67, 66, 78, 71, 66, 66, 189, 90, 71, 104, 33, 34, 33, 2, 53, 11, 50, 37, 38, 97, 4, 79, 23, 19, 19, 48, 25, 125, 21, 37, 14, 17, 19, 58, 50, 47, 123, 70, 5, 10, 5, 121, 105, 177, 64, 64, 72, 1, 80, 72, 71, 198, 117, 44, 117, 198, 73, 72, 81, 252, 53, 45, 38, 38, 100, 54, 26, 64, 110, 40, 41, 46, 0, 1, 0, 162, 255, 48, 4, 69, 6, 156, 0, 79, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 23, 21, 51, 53, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 38, 38, 39, 38, 38, 39, 53, 35, 21, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 139, 39, 36, 36, 104, 65, 51, 100, 39, 40, 50, 185, 66, 55, 55, 143, 78, 149, 87, 143, 50, 50, 55, 55, 52, 52, 150, 94, 77, 109, 34, 35, 32, 29, 28, 30, 95, 64, 59, 92, 32, 31, 33, 184, 1, 60, 57, 44, 120, 73, 149, 81, 133, 46, 47, 51, 58, 54, 53, 150, 93, 74, 108, 34, 34, 31, 1, 119, 55, 87, 30, 31, 32, 28, 33, 33, 111, 84, 113, 162, 53, 54, 56, 8, 191, 192, 9, 60, 50, 49, 138, 87, 89, 134, 51, 51, 76, 31, 26, 55, 32, 32, 78, 50, 51, 83, 30, 33, 36, 46, 40, 41, 113, 67, 115, 177, 60, 45, 57, 10, 220, 220, 10, 62, 50, 51, 136, 84, 89, 136, 52, 53, 76, 29, 24, 57, 33, 33, 77, 0, 1, 0, 147, 255, 11, 4, 55, 5, 38, 0, 57, 0, 0, 101, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 52, 38, 39, 38, 38, 39, 53, 35, 21, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 21, 51, 53, 54, 54, 55, 54, 54, 55, 35, 6, 6, 7, 6, 6, 2, 127, 87, 117, 35, 36, 31, 31, 36, 36, 117, 86, 56, 97, 35, 35, 41, 1, 175, 53, 48, 48, 132, 80, 185, 96, 145, 48, 48, 49, 49, 48, 48, 145, 96, 185, 73, 131, 49, 49, 58, 1, 175, 1, 45, 37, 37, 95, 130, 69, 56, 55, 139, 71, 42, 70, 138, 56, 55, 69, 38, 33, 33, 87, 49, 73, 130, 51, 51, 69, 12, 222, 226, 18, 99, 71, 72, 175, 95, 42, 95, 176, 71, 71, 99, 18, 235, 232, 12, 66, 48, 47, 117, 64, 45, 77, 28, 29, 32, 0, 0, 1, 0, 113, 0, 0, 4, 124, 5, 196, 0, 51, 0, 0, 65, 33, 53, 33, 3, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 19, 35, 21, 51, 23, 20, 6, 7, 6, 6, 7, 35, 21, 33, 55, 33, 54, 54, 55, 54, 54, 53, 1, 207, 1, 59, 254, 192, 8, 37, 32, 32, 89, 51, 48, 87, 34, 33, 39, 186, 56, 52, 53, 152, 96, 96, 164, 59, 59, 67, 9, 160, 165, 8, 8, 11, 11, 37, 27, 75, 4, 6, 1, 253, 30, 13, 19, 7, 11, 11, 2, 114, 152, 1, 5, 67, 107, 37, 36, 39, 27, 28, 29, 89, 63, 87, 142, 51, 51, 56, 60, 56, 57, 162, 102, 254, 251, 152, 226, 32, 81, 36, 37, 56, 7, 151, 151, 19, 44, 24, 37, 83, 42, 0, 0, 1, 0, 33, 0, 0, 4, 171, 5, 176, 0, 25, 0, 0, 97, 51, 17, 33, 53, 33, 53, 33, 53, 33, 1, 35, 1, 7, 35, 39, 1, 35, 1, 33, 21, 33, 21, 33, 21, 33, 2, 6, 185, 1, 133, 254, 123, 1, 133, 254, 194, 1, 165, 212, 254, 190, 46, 2, 46, 254, 190, 212, 1, 165, 254, 196, 1, 124, 254, 132, 1, 124, 1, 70, 120, 169, 121, 2, 208, 253, 177, 85, 86, 2, 78, 253, 48, 121, 169, 120, 0, 1, 0, 160, 254, 75, 4, 74, 6, 43, 0, 47, 0, 0, 65, 53, 35, 39, 52, 54, 55, 54, 54, 55, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 35, 21, 51, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 3, 127, 212, 1, 30, 32, 31, 98, 65, 40, 71, 26, 23, 47, 89, 47, 96, 154, 54, 55, 58, 177, 177, 1, 33, 32, 21, 57, 34, 22, 95, 29, 14, 39, 80, 41, 85, 135, 47, 46, 50, 3, 171, 143, 99, 58, 90, 30, 31, 31, 1, 16, 13, 147, 17, 22, 52, 50, 51, 149, 96, 99, 143, 252, 33, 65, 98, 30, 19, 21, 16, 16, 148, 20, 16, 51, 49, 48, 144, 93, 3, 223, 255, 255, 0, 17, 0, 0, 4, 61, 5, 176, 6, 38, 0, 7, 0, 0, 0, 7, 2, 106, 254, 220, 254, 127, 0, 1, 0, 105, 0, 0, 4, 118, 5, 196, 0, 59, 0, 0, 65, 53, 33, 39, 33, 53, 33, 39, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 35, 21, 51, 23, 35, 21, 51, 23, 20, 6, 7, 6, 6, 7, 35, 21, 33, 55, 33, 54, 54, 55, 54, 54, 53, 39, 3, 34, 254, 167, 4, 1, 93, 254, 159, 6, 37, 32, 32, 89, 51, 48, 87, 34, 33, 40, 185, 56, 52, 53, 152, 96, 96, 163, 59, 60, 66, 6, 159, 163, 5, 168, 172, 3, 9, 11, 11, 36, 27, 75, 4, 6, 1, 253, 30, 14, 22, 7, 9, 8, 3, 1, 215, 122, 138, 123, 185, 67, 107, 37, 36, 39, 27, 28, 29, 89, 63, 87, 142, 51, 51, 56, 60, 56, 57, 162, 102, 185, 123, 138, 122, 71, 32, 81, 36, 37, 56, 7, 151, 151, 22, 52, 29, 34, 75, 37, 71, 0, 0, 2, 0, 127, 255, 236, 4, 179, 5, 176, 0, 45, 0, 60, 0, 0, 65, 53, 35, 17, 35, 17, 35, 38, 38, 39, 38, 38, 35, 35, 17, 51, 17, 51, 50, 54, 55, 54, 54, 55, 51, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 5, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 4, 158, 176, 185, 89, 8, 54, 44, 44, 123, 78, 254, 185, 69, 78, 123, 45, 44, 53, 8, 89, 35, 32, 31, 86, 52, 42, 81, 23, 25, 12, 43, 20, 21, 36, 12, 13, 15, 253, 74, 69, 45, 65, 20, 20, 19, 19, 20, 21, 64, 45, 3, 171, 143, 1, 6, 254, 250, 82, 137, 50, 49, 56, 250, 80, 2, 53, 55, 50, 49, 138, 82, 253, 125, 83, 120, 38, 39, 36, 22, 17, 132, 4, 10, 17, 19, 18, 60, 44, 2, 132, 223, 2, 76, 50, 41, 42, 107, 56, 56, 104, 41, 41, 50, 0, 0, 2, 0, 103, 255, 229, 4, 146, 4, 56, 0, 35, 0, 59, 0, 0, 101, 23, 55, 39, 54, 54, 53, 52, 38, 39, 55, 39, 7, 38, 38, 35, 34, 6, 7, 39, 7, 23, 6, 6, 21, 20, 22, 23, 7, 23, 55, 22, 22, 51, 50, 54, 1, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 3, 163, 107, 132, 116, 36, 40, 44, 40, 124, 132, 120, 60, 144, 80, 80, 143, 60, 117, 131, 120, 42, 44, 40, 38, 112, 131, 104, 62, 149, 85, 85, 150, 253, 208, 50, 44, 43, 119, 69, 69, 118, 44, 43, 49, 49, 43, 44, 118, 69, 69, 119, 43, 44, 50, 84, 111, 136, 119, 62, 145, 80, 85, 152, 64, 128, 136, 125, 45, 49, 48, 44, 122, 135, 124, 65, 154, 86, 81, 147, 63, 115, 135, 108, 48, 54, 54, 1, 225, 74, 132, 50, 49, 58, 58, 49, 50, 132, 74, 74, 132, 49, 50, 59, 59, 50, 49, 132, 0, 2, 1, 230, 255, 245, 2, 204, 5, 176, 0, 3, 0, 15, 0, 0, 65, 17, 35, 17, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, 178, 186, 18, 57, 57, 57, 59, 59, 57, 57, 57, 1, 215, 3, 217, 252, 39, 254, 138, 46, 62, 62, 46, 48, 64, 64, 0, 0, 2, 1, 242, 254, 140, 2, 216, 4, 79, 0, 3, 0, 15, 0, 0, 65, 17, 51, 17, 19, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 2, 10, 185, 21, 59, 56, 57, 58, 58, 57, 56, 59, 2, 99, 252, 41, 3, 215, 1, 123, 48, 65, 65, 48, 46, 63, 63, 0, 0, 2, 0, 191, 255, 245, 4, 27, 5, 196, 0, 49, 0, 61, 0, 0, 65, 51, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 255, 185, 4, 8, 8, 33, 30, 47, 97, 39, 39, 50, 58, 55, 55, 159, 101, 91, 157, 57, 58, 68, 1, 185, 42, 35, 34, 89, 47, 61, 94, 31, 28, 29, 38, 29, 30, 71, 34, 50, 60, 16, 16, 10, 22, 57, 57, 57, 59, 59, 57, 57, 57, 1, 154, 39, 61, 27, 27, 52, 29, 42, 98, 57, 56, 127, 72, 90, 140, 49, 49, 51, 49, 46, 47, 134, 84, 52, 75, 25, 24, 23, 32, 31, 28, 81, 52, 50, 90, 40, 41, 74, 35, 46, 67, 36, 37, 93, 254, 127, 46, 62, 62, 46, 48, 64, 64, 0, 2, 0, 204, 254, 120, 4, 0, 4, 77, 0, 49, 0, 61, 0, 0, 65, 35, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, 212, 185, 3, 7, 8, 32, 29, 45, 91, 36, 37, 47, 55, 53, 52, 153, 97, 87, 149, 55, 55, 63, 1, 185, 38, 31, 32, 81, 43, 56, 87, 28, 27, 27, 35, 28, 27, 66, 31, 49, 59, 15, 15, 9, 214, 58, 57, 57, 58, 58, 57, 57, 58, 2, 161, 39, 60, 26, 27, 50, 29, 43, 99, 56, 57, 128, 72, 90, 140, 49, 49, 51, 49, 47, 46, 134, 84, 52, 75, 24, 25, 23, 31, 30, 28, 82, 53, 51, 90, 41, 41, 75, 35, 45, 67, 36, 36, 92, 1, 130, 46, 63, 63, 46, 48, 65, 65, 0, 1, 1, 98, 254, 176, 2, 131, 0, 219, 0, 9, 0, 0, 101, 53, 35, 21, 20, 6, 7, 23, 54, 54, 2, 131, 201, 40, 48, 115, 80, 94, 43, 176, 179, 85, 158, 70, 63, 71, 208, 0, 0, 1, 1, 240, 255, 237, 3, 20, 1, 7, 0, 11, 0, 0, 101, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 240, 73, 72, 71, 76, 75, 72, 73, 72, 120, 58, 81, 80, 59, 60, 83, 84, 255, 255, 2, 34, 255, 237, 3, 70, 4, 115, 4, 38, 0, 96, 50, 0, 0, 7, 0, 96, 0, 50, 3, 108, 255, 255, 1, 230, 254, 176, 3, 61, 4, 115, 4, 39, 0, 96, 0, 41, 3, 108, 0, 7, 0, 95, 0, 132, 0, 0, 255, 255, 1, 9, 255, 237, 5, 38, 1, 7, 4, 39, 0, 96, 255, 25, 0, 0, 0, 39, 0, 96, 0, 156, 0, 0, 0, 7, 0, 96, 2, 18, 0, 0, 0, 1, 1, 248, 2, 107, 2, 222, 3, 73, 0, 11, 0, 0, 65, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 248, 58, 57, 56, 59, 59, 56, 57, 58, 2, 217, 47, 63, 63, 47, 48, 64, 64, 0, 0, 1, 1, 154, 2, 23, 3, 49, 3, 220, 0, 25, 0, 0, 65, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 154, 29, 27, 26, 75, 47, 47, 75, 27, 26, 28, 28, 26, 27, 76, 47, 47, 75, 26, 26, 29, 3, 22, 58, 43, 72, 26, 27, 29, 29, 27, 26, 72, 43, 58, 43, 73, 26, 26, 30, 30, 26, 26, 73, 0, 0, 1, 0, 155, 255, 105, 4, 48, 0, 0, 0, 3, 0, 0, 69, 53, 33, 21, 4, 48, 252, 107, 151, 151, 151, 0, 0, 1, 0, 218, 2, 49, 3, 215, 2, 201, 0, 3, 0, 0, 65, 53, 33, 21, 3, 215, 253, 3, 2, 49, 152, 152, 0, 1, 0, 74, 2, 139, 4, 135, 3, 34, 0, 3, 0, 0, 65, 53, 33, 21, 4, 135, 251, 195, 2, 139, 151, 151, 0, 1, 0, 79, 2, 139, 4, 140, 3, 34, 0, 3, 0, 0, 65, 53, 33, 21, 4, 140, 251, 195, 2, 139, 151, 151, 0, 1, 1, 238, 4, 33, 2, 141, 6, 0, 0, 5, 0, 0, 65, 53, 35, 21, 3, 51, 2, 141, 158, 1, 138, 5, 145, 111, 127, 254, 160, 0, 0, 2, 1, 98, 4, 33, 3, 95, 6, 0, 0, 5, 0, 11, 0, 0, 65, 53, 35, 21, 3, 51, 1, 55, 35, 21, 3, 51, 1, 249, 150, 1, 130, 1, 122, 1, 150, 1, 129, 5, 147, 109, 125, 254, 158, 1, 114, 109, 125, 254, 158, 0, 0, 1, 1, 236, 4, 15, 2, 255, 6, 29, 0, 12, 0, 0, 65, 21, 51, 53, 52, 54, 55, 39, 6, 6, 7, 6, 6, 1, 236, 181, 47, 47, 101, 42, 64, 22, 23, 23, 4, 161, 146, 149, 86, 148, 71, 72, 36, 92, 50, 51, 104, 0, 0, 1, 1, 205, 4, 7, 2, 224, 6, 22, 0, 12, 0, 0, 65, 53, 35, 21, 20, 6, 7, 23, 54, 54, 55, 54, 54, 2, 224, 181, 47, 47, 101, 42, 64, 23, 22, 23, 5, 131, 147, 150, 86, 148, 71, 72, 36, 92, 51, 50, 104, 0, 0, 1, 1, 188, 254, 209, 2, 211, 0, 225, 0, 12, 0, 0, 101, 53, 35, 21, 20, 6, 7, 23, 54, 54, 55, 54, 54, 2, 211, 185, 47, 47, 105, 42, 64, 23, 22, 23, 76, 149, 151, 86, 148, 70, 73, 36, 93, 50, 50, 103, 255, 255, 1, 73, 4, 15, 3, 161, 6, 29, 4, 39, 0, 108, 255, 93, 0, 0, 0, 7, 0, 108, 0, 162, 0, 0, 255, 255, 1, 45, 4, 7, 3, 140, 6, 22, 4, 39, 0, 109, 255, 96, 0, 0, 0, 7, 0, 109, 0, 172, 0, 0, 0, 2, 1, 47, 254, 207, 3, 104, 0, 223, 0, 12, 0, 25, 0, 0, 101, 53, 35, 21, 20, 6, 7, 23, 54, 54, 55, 54, 54, 37, 53, 35, 21, 20, 6, 7, 23, 54, 54, 55, 54, 54, 2, 70, 185, 47, 47, 105, 42, 64, 23, 22, 23, 1, 34, 185, 47, 47, 105, 42, 64, 23, 22, 23, 75, 148, 151, 86, 148, 70, 73, 36, 93, 50, 50, 104, 47, 148, 151, 86, 148, 70, 73, 36, 93, 50, 50, 104, 255, 255, 1, 238, 4, 33, 2, 141, 6, 0, 6, 6, 0, 106, 0, 0, 255, 255, 1, 98, 4, 33, 3, 95, 6, 0, 6, 6, 0, 107, 0, 0, 0, 1, 1, 101, 254, 42, 3, 117, 6, 107, 0, 39, 0, 0, 65, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 7, 6, 6, 1, 101, 45, 38, 37, 99, 55, 54, 111, 50, 39, 41, 81, 38, 37, 68, 26, 24, 28, 30, 27, 28, 84, 46, 31, 65, 32, 39, 50, 110, 54, 55, 99, 38, 38, 45, 2, 79, 10, 143, 252, 107, 108, 177, 69, 70, 97, 28, 113, 33, 93, 60, 63, 159, 93, 92, 218, 125, 14, 130, 226, 94, 104, 175, 65, 42, 68, 24, 122, 28, 98, 69, 69, 178, 107, 108, 252, 0, 0, 1, 1, 64, 254, 42, 3, 81, 6, 107, 0, 39, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 54, 3, 81, 47, 36, 37, 98, 56, 54, 112, 50, 39, 33, 70, 33, 43, 82, 29, 20, 33, 25, 23, 22, 69, 37, 39, 86, 42, 39, 50, 111, 55, 54, 99, 38, 38, 45, 2, 69, 10, 153, 245, 105, 109, 174, 71, 69, 98, 28, 113, 27, 77, 51, 65, 175, 110, 77, 220, 135, 14, 119, 209, 90, 97, 163, 65, 64, 98, 31, 113, 28, 97, 70, 69, 177, 108, 107, 252, 0, 0, 1, 1, 170, 254, 200, 3, 54, 6, 128, 0, 7, 0, 0, 65, 53, 33, 17, 33, 53, 35, 17, 3, 54, 254, 116, 1, 140, 221, 5, 232, 152, 248, 72, 152, 6, 136, 0, 0, 1, 1, 149, 254, 200, 3, 34, 6, 128, 0, 7, 0, 0, 65, 21, 51, 17, 35, 21, 33, 17, 1, 149, 222, 222, 1, 141, 6, 128, 152, 249, 120, 152, 7, 184, 0, 1, 1, 67, 254, 146, 3, 231, 6, 61, 0, 42, 0, 0, 65, 55, 38, 38, 39, 38, 38, 53, 53, 38, 38, 39, 54, 54, 53, 53, 52, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 21, 21, 20, 6, 35, 21, 22, 22, 21, 21, 20, 22, 23, 22, 22, 3, 210, 21, 62, 81, 24, 25, 20, 1, 110, 116, 116, 111, 12, 22, 21, 85, 72, 21, 101, 142, 44, 47, 43, 137, 141, 141, 137, 46, 45, 47, 142, 254, 146, 115, 2, 64, 50, 49, 123, 62, 169, 119, 181, 46, 47, 181, 120, 170, 61, 124, 50, 49, 64, 2, 115, 3, 81, 64, 67, 169, 81, 170, 145, 129, 145, 1, 130, 144, 169, 80, 163, 66, 69, 84, 0, 1, 1, 67, 254, 146, 3, 231, 6, 61, 0, 54, 0, 0, 69, 23, 54, 54, 55, 54, 54, 53, 53, 52, 54, 55, 54, 54, 55, 53, 34, 38, 39, 38, 38, 53, 53, 52, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 21, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 21, 20, 6, 7, 6, 6, 1, 67, 21, 98, 142, 47, 46, 44, 32, 33, 34, 107, 72, 82, 117, 33, 23, 23, 45, 51, 45, 139, 97, 20, 72, 84, 22, 21, 13, 46, 48, 25, 67, 40, 39, 65, 26, 49, 47, 21, 24, 25, 82, 251, 115, 2, 86, 67, 67, 163, 80, 169, 70, 102, 34, 35, 33, 1, 145, 43, 47, 33, 91, 60, 170, 84, 172, 69, 61, 76, 3, 115, 2, 64, 49, 50, 124, 61, 170, 78, 133, 50, 27, 44, 16, 16, 42, 26, 49, 134, 79, 169, 62, 123, 49, 50, 64, 0, 1, 1, 140, 0, 153, 3, 64, 3, 181, 0, 6, 0, 0, 65, 1, 35, 1, 21, 1, 51, 2, 62, 1, 2, 141, 254, 217, 1, 39, 141, 2, 38, 1, 143, 254, 123, 19, 254, 124, 0, 1, 1, 140, 0, 152, 3, 64, 3, 181, 0, 6, 0, 0, 65, 35, 1, 1, 51, 1, 53, 2, 26, 142, 1, 2, 254, 254, 142, 1, 38, 3, 181, 254, 113, 254, 114, 1, 133, 19, 0, 1, 0, 119, 0, 146, 4, 93, 4, 182, 0, 11, 0, 0, 65, 17, 35, 17, 33, 21, 33, 17, 51, 17, 33, 53, 2, 198, 185, 254, 106, 1, 150, 185, 1, 151, 3, 13, 1, 169, 254, 87, 184, 254, 61, 1, 195, 184, 0, 1, 0, 169, 2, 139, 3, 236, 3, 34, 0, 3, 0, 0, 65, 53, 33, 21, 3, 236, 252, 189, 2, 139, 151, 151, 0, 2, 0, 156, 0, 1, 4, 48, 4, 243, 0, 11, 0, 15, 0, 0, 65, 17, 35, 17, 33, 21, 33, 17, 51, 17, 33, 53, 3, 53, 33, 21, 2, 197, 168, 254, 127, 1, 129, 168, 1, 107, 42, 252, 189, 3, 87, 1, 156, 254, 100, 152, 254, 98, 1, 158, 152, 252, 170, 151, 151, 0, 0, 1, 0, 181, 0, 206, 4, 58, 4, 99, 0, 11, 0, 0, 83, 23, 1, 1, 55, 1, 1, 39, 1, 1, 7, 1, 181, 119, 1, 75, 1, 76, 119, 254, 181, 1, 72, 119, 254, 183, 254, 184, 119, 1, 71, 1, 73, 123, 1, 81, 254, 175, 123, 1, 81, 1, 78, 123, 254, 177, 1, 79, 123, 254, 178, 0, 0, 3, 0, 115, 0, 177, 4, 89, 4, 180, 0, 3, 0, 15, 0, 27, 0, 0, 65, 53, 33, 21, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 4, 89, 252, 26, 1, 136, 55, 54, 54, 56, 56, 54, 54, 55, 2, 55, 54, 54, 56, 56, 54, 54, 55, 2, 88, 184, 184, 1, 241, 45, 60, 60, 45, 45, 62, 62, 252, 164, 44, 61, 61, 44, 45, 62, 62, 0, 0, 2, 0, 173, 1, 109, 4, 42, 3, 173, 0, 3, 0, 7, 0, 0, 65, 53, 33, 21, 1, 53, 33, 21, 4, 42, 252, 131, 3, 125, 252, 131, 3, 12, 161, 161, 254, 97, 160, 160, 0, 1, 0, 169, 0, 181, 4, 38, 4, 65, 0, 19, 0, 0, 65, 53, 33, 55, 33, 53, 35, 55, 39, 7, 33, 21, 33, 7, 33, 21, 33, 7, 23, 55, 4, 38, 254, 76, 128, 1, 52, 228, 49, 77, 74, 253, 205, 1, 226, 128, 254, 158, 1, 17, 66, 78, 92, 1, 109, 160, 255, 161, 97, 51, 148, 161, 255, 160, 133, 51, 184, 0, 0, 2, 0, 141, 1, 20, 4, 62, 3, 255, 0, 25, 0, 51, 0, 0, 83, 23, 54, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 35, 34, 6, 3, 23, 54, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 35, 34, 6, 151, 10, 47, 122, 67, 56, 79, 67, 69, 126, 56, 66, 122, 48, 10, 47, 122, 67, 44, 100, 56, 68, 121, 63, 67, 122, 58, 10, 47, 122, 67, 57, 73, 81, 81, 106, 55, 66, 122, 48, 10, 47, 122, 67, 53, 109, 65, 73, 95, 57, 67, 122, 3, 105, 171, 68, 79, 24, 36, 37, 46, 79, 67, 171, 68, 78, 29, 32, 39, 42, 78, 254, 18, 171, 68, 78, 23, 40, 40, 39, 78, 68, 171, 68, 79, 39, 37, 42, 25, 79, 0, 1, 0, 170, 0, 196, 3, 250, 4, 75, 0, 8, 0, 0, 101, 53, 37, 39, 55, 37, 53, 1, 21, 3, 250, 253, 156, 53, 53, 2, 100, 252, 176, 196, 196, 236, 18, 17, 240, 196, 254, 134, 146, 0, 0, 1, 0, 178, 0, 197, 4, 37, 4, 76, 0, 8, 0, 0, 119, 1, 53, 1, 21, 5, 23, 7, 5, 178, 3, 115, 252, 141, 2, 135, 60, 60, 253, 121, 197, 1, 123, 146, 1, 122, 191, 240, 19, 17, 244, 0, 0, 2, 0, 187, 0, 9, 4, 13, 4, 153, 0, 8, 0, 12, 0, 0, 65, 53, 37, 39, 55, 37, 53, 1, 21, 1, 53, 33, 21, 4, 13, 253, 156, 53, 53, 2, 100, 252, 176, 3, 65, 252, 189, 1, 108, 177, 212, 16, 16, 216, 176, 254, 172, 131, 253, 71, 151, 151, 0, 2, 0, 194, 0, 7, 4, 53, 4, 173, 0, 8, 0, 12, 0, 0, 83, 1, 53, 1, 21, 5, 23, 7, 5, 1, 53, 33, 21, 194, 3, 115, 252, 141, 2, 135, 60, 60, 253, 121, 3, 68, 252, 189, 1, 128, 1, 85, 132, 1, 84, 172, 216, 17, 15, 220, 253, 218, 151, 151, 0, 1, 0, 189, 1, 119, 3, 251, 3, 32, 0, 5, 0, 0, 65, 17, 33, 21, 33, 17, 3, 251, 252, 194, 2, 133, 1, 119, 1, 169, 161, 254, 248, 0, 0, 1, 0, 252, 255, 131, 4, 1, 5, 176, 0, 3, 0, 0, 69, 1, 35, 1, 1, 162, 2, 95, 165, 253, 160, 125, 6, 45, 249, 211, 0, 1, 0, 231, 255, 131, 3, 238, 5, 176, 0, 3, 0, 0, 83, 1, 51, 1, 231, 2, 96, 167, 253, 160, 5, 176, 249, 211, 6, 45, 0, 1, 1, 43, 0, 213, 3, 158, 4, 209, 0, 3, 0, 0, 101, 1, 39, 1, 1, 156, 2, 2, 114, 253, 255, 213, 3, 186, 66, 252, 70, 0, 0, 5, 0, 44, 255, 235, 4, 158, 5, 197, 0, 25, 0, 51, 0, 77, 0, 103, 0, 107, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 5, 1, 39, 1, 44, 35, 34, 34, 101, 65, 65, 100, 34, 33, 35, 35, 33, 34, 101, 66, 65, 100, 33, 34, 35, 138, 14, 16, 15, 49, 35, 36, 49, 16, 15, 15, 15, 15, 15, 49, 35, 36, 49, 16, 16, 14, 1, 207, 35, 34, 34, 101, 66, 65, 99, 34, 34, 35, 35, 34, 34, 100, 66, 65, 100, 34, 34, 35, 138, 14, 16, 15, 49, 36, 35, 50, 16, 15, 14, 14, 15, 15, 49, 35, 36, 50, 15, 16, 15, 254, 127, 2, 55, 111, 253, 201, 4, 170, 77, 57, 102, 38, 39, 45, 45, 39, 38, 102, 57, 77, 57, 103, 39, 39, 45, 45, 39, 39, 103, 134, 77, 31, 59, 23, 22, 27, 27, 22, 23, 59, 31, 77, 31, 57, 22, 23, 27, 27, 23, 22, 57, 253, 20, 78, 57, 102, 38, 39, 45, 45, 39, 38, 102, 57, 78, 57, 102, 39, 39, 45, 45, 39, 39, 102, 135, 78, 31, 58, 23, 22, 27, 27, 22, 23, 58, 31, 78, 31, 58, 22, 23, 27, 27, 23, 22, 58, 41, 4, 13, 62, 251, 243, 0, 6, 0, 54, 255, 235, 4, 160, 5, 197, 0, 49, 0, 75, 0, 101, 0, 127, 0, 153, 0, 157, 0, 0, 65, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 37, 1, 39, 1, 1, 86, 31, 31, 31, 92, 61, 36, 62, 25, 15, 26, 11, 10, 23, 13, 27, 66, 39, 60, 91, 31, 30, 31, 31, 31, 31, 91, 61, 35, 60, 25, 16, 28, 12, 13, 32, 18, 24, 57, 33, 60, 91, 31, 31, 31, 254, 224, 32, 31, 31, 92, 60, 60, 90, 31, 30, 32, 31, 31, 31, 91, 61, 60, 91, 31, 31, 31, 1, 171, 11, 13, 12, 40, 29, 30, 40, 13, 12, 11, 11, 12, 12, 40, 29, 30, 41, 12, 13, 11, 254, 224, 11, 13, 12, 40, 29, 30, 40, 13, 12, 11, 11, 12, 13, 40, 28, 30, 40, 13, 13, 11, 2, 128, 11, 13, 12, 40, 30, 29, 41, 13, 12, 11, 11, 12, 12, 40, 29, 30, 41, 13, 13, 11, 253, 110, 3, 16, 68, 252, 240, 1, 47, 44, 56, 102, 38, 39, 45, 17, 15, 9, 22, 13, 11, 21, 8, 17, 19, 45, 39, 38, 102, 56, 44, 56, 101, 39, 38, 46, 16, 14, 10, 23, 14, 15, 25, 10, 13, 14, 46, 38, 39, 101, 3, 69, 44, 56, 101, 38, 38, 46, 46, 38, 38, 101, 56, 44, 56, 102, 39, 38, 46, 46, 38, 39, 102, 252, 31, 44, 30, 57, 23, 22, 28, 28, 22, 23, 57, 30, 44, 30, 58, 22, 23, 27, 27, 23, 22, 58, 3, 155, 44, 30, 57, 23, 22, 28, 28, 22, 23, 57, 30, 44, 30, 57, 22, 23, 27, 27, 23, 22, 57, 252, 161, 44, 30, 57, 23, 22, 28, 28, 22, 23, 57, 30, 44, 30, 58, 22, 23, 27, 27, 23, 22, 58, 218, 2, 129, 84, 253, 127, 0, 1, 2, 28, 254, 114, 2, 177, 5, 176, 0, 3, 0, 0, 65, 17, 35, 17, 2, 177, 149, 254, 114, 7, 62, 248, 194, 0, 0, 2, 1, 255, 254, 242, 2, 184, 5, 176, 0, 3, 0, 7, 0, 0, 65, 51, 17, 35, 55, 17, 35, 17, 1, 255, 185, 185, 185, 185, 254, 242, 3, 23, 177, 2, 246, 253, 10, 0, 0, 1, 0, 119, 0, 0, 4, 85, 5, 176, 0, 11, 0, 0, 65, 53, 33, 17, 35, 17, 33, 21, 33, 17, 51, 17, 4, 85, 254, 107, 185, 254, 112, 1, 144, 185, 3, 161, 153, 1, 118, 254, 138, 153, 252, 95, 3, 161, 0, 1, 0, 121, 254, 96, 4, 86, 5, 176, 0, 19, 0, 0, 97, 53, 33, 17, 33, 53, 33, 17, 35, 17, 33, 21, 33, 17, 33, 21, 33, 17, 51, 17, 4, 86, 254, 105, 1, 151, 254, 105, 185, 254, 115, 1, 141, 254, 115, 1, 141, 185, 151, 3, 10, 153, 1, 118, 254, 138, 153, 252, 246, 151, 254, 96, 1, 160, 0, 3, 0, 90, 255, 235, 4, 131, 4, 78, 0, 51, 0, 75, 0, 99, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 3, 94, 110, 16, 16, 16, 54, 37, 38, 57, 19, 19, 18, 18, 19, 19, 57, 38, 37, 54, 17, 16, 16, 110, 30, 28, 32, 97, 63, 62, 96, 33, 33, 36, 36, 33, 33, 96, 62, 62, 96, 32, 29, 30, 253, 83, 68, 60, 60, 163, 95, 94, 163, 60, 60, 68, 68, 60, 60, 163, 94, 95, 163, 60, 60, 68, 87, 82, 72, 71, 195, 113, 113, 194, 72, 71, 82, 82, 71, 72, 194, 113, 107, 194, 72, 73, 86, 1, 187, 35, 51, 17, 18, 17, 30, 26, 26, 70, 41, 88, 40, 71, 26, 25, 30, 17, 18, 17, 51, 34, 54, 84, 30, 33, 34, 44, 39, 39, 107, 62, 87, 63, 106, 38, 39, 44, 33, 32, 29, 86, 154, 97, 171, 64, 64, 73, 73, 64, 64, 171, 97, 98, 172, 64, 65, 75, 74, 65, 64, 173, 98, 117, 205, 76, 77, 88, 88, 77, 76, 205, 117, 117, 204, 76, 75, 88, 83, 74, 74, 207, 0, 4, 0, 87, 255, 235, 4, 128, 4, 77, 0, 23, 0, 47, 0, 61, 0, 73, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 37, 51, 23, 51, 3, 54, 54, 53, 52, 38, 35, 35, 17, 51, 17, 53, 51, 50, 22, 21, 20, 6, 7, 6, 6, 7, 87, 82, 72, 71, 195, 113, 113, 194, 72, 71, 82, 82, 71, 72, 194, 113, 113, 195, 71, 72, 82, 87, 68, 60, 60, 163, 95, 94, 163, 60, 60, 68, 68, 60, 60, 163, 94, 95, 163, 60, 60, 68, 1, 78, 125, 120, 110, 147, 66, 70, 131, 109, 211, 107, 104, 73, 60, 19, 15, 16, 44, 24, 2, 28, 117, 205, 75, 76, 88, 88, 76, 75, 205, 117, 117, 205, 76, 76, 87, 87, 76, 76, 205, 117, 98, 172, 64, 63, 73, 73, 63, 64, 172, 98, 98, 171, 64, 64, 74, 74, 64, 64, 171, 43, 253, 1, 31, 22, 78, 56, 97, 95, 253, 133, 1, 94, 188, 44, 55, 21, 32, 12, 11, 12, 1, 0, 0, 2, 0, 103, 3, 151, 4, 55, 5, 176, 0, 12, 0, 20, 0, 0, 65, 17, 51, 17, 35, 3, 3, 35, 17, 51, 17, 19, 51, 1, 53, 33, 21, 51, 17, 51, 17, 3, 221, 90, 112, 144, 143, 112, 90, 139, 52, 254, 152, 254, 126, 147, 91, 5, 33, 254, 118, 2, 25, 254, 113, 1, 143, 253, 231, 1, 137, 254, 119, 1, 200, 81, 81, 254, 56, 1, 200, 0, 0, 2, 1, 105, 3, 192, 3, 98, 5, 196, 0, 23, 0, 47, 0, 0, 65, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 105, 41, 35, 34, 93, 52, 51, 91, 34, 34, 40, 40, 34, 34, 91, 51, 52, 93, 34, 35, 41, 124, 21, 18, 17, 48, 27, 27, 46, 18, 17, 19, 19, 17, 18, 46, 27, 27, 48, 17, 18, 21, 4, 192, 54, 93, 34, 35, 40, 40, 35, 34, 94, 53, 53, 95, 36, 35, 41, 41, 35, 36, 95, 53, 28, 49, 18, 18, 20, 20, 18, 18, 49, 28, 27, 47, 17, 18, 19, 19, 18, 17, 47, 0, 1, 0, 160, 1, 217, 4, 96, 5, 176, 0, 14, 0, 0, 65, 1, 23, 19, 19, 55, 1, 37, 39, 5, 19, 35, 19, 37, 7, 2, 25, 254, 251, 146, 212, 214, 146, 255, 0, 1, 126, 54, 254, 149, 29, 178, 25, 254, 147, 54, 3, 147, 254, 185, 106, 1, 98, 254, 149, 110, 1, 68, 94, 178, 150, 1, 171, 254, 91, 151, 175, 0, 0, 2, 0, 61, 0, 0, 4, 153, 5, 176, 0, 27, 0, 31, 0, 0, 65, 3, 51, 19, 51, 53, 35, 19, 51, 53, 35, 19, 35, 3, 33, 19, 35, 3, 33, 21, 33, 3, 33, 21, 51, 3, 51, 19, 55, 19, 33, 3, 2, 195, 80, 143, 80, 252, 226, 69, 232, 205, 82, 143, 82, 254, 248, 82, 143, 82, 254, 227, 1, 2, 69, 254, 247, 239, 80, 143, 80, 26, 69, 1, 8, 69, 1, 154, 254, 102, 1, 154, 137, 1, 98, 139, 1, 160, 254, 96, 1, 160, 254, 96, 139, 254, 158, 137, 254, 102, 1, 154, 137, 1, 98, 254, 158, 0, 0, 3, 0, 107, 255, 236, 4, 169, 5, 197, 0, 54, 0, 74, 0, 99, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 23, 51, 39, 54, 54, 53, 35, 6, 6, 7, 1, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 1, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 55, 1, 6, 6, 7, 6, 6, 3, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 7, 38, 38, 39, 38, 38, 107, 61, 56, 56, 160, 99, 61, 115, 53, 32, 61, 28, 83, 221, 181, 70, 73, 167, 1, 40, 35, 254, 205, 94, 44, 76, 28, 27, 31, 44, 40, 41, 116, 71, 82, 132, 47, 47, 51, 17, 15, 19, 58, 37, 36, 49, 81, 31, 36, 40, 1, 176, 61, 92, 31, 31, 32, 11, 17, 16, 62, 50, 28, 1, 67, 24, 51, 27, 37, 80, 160, 22, 22, 21, 65, 43, 33, 52, 19, 18, 19, 9, 11, 11, 40, 31, 117, 25, 38, 12, 10, 10, 1, 117, 86, 145, 52, 52, 58, 26, 25, 15, 40, 24, 110, 237, 88, 219, 128, 88, 152, 64, 1, 147, 80, 33, 68, 38, 38, 87, 53, 62, 112, 43, 42, 50, 46, 44, 45, 131, 85, 40, 76, 37, 45, 93, 50, 26, 37, 76, 42, 50, 114, 254, 202, 38, 33, 33, 88, 51, 19, 57, 35, 34, 78, 41, 24, 254, 81, 20, 33, 12, 17, 18, 3, 230, 40, 71, 27, 27, 32, 27, 21, 22, 57, 30, 23, 48, 23, 24, 46, 21, 93, 36, 68, 33, 25, 51, 0, 2, 0, 64, 255, 248, 4, 139, 5, 178, 0, 94, 0, 117, 0, 0, 65, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 2, 7, 6, 18, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 19, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 5, 54, 54, 55, 54, 54, 51, 50, 22, 23, 3, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 4, 135, 4, 64, 64, 65, 190, 122, 125, 207, 76, 80, 95, 6, 5, 59, 67, 66, 211, 147, 32, 72, 35, 35, 64, 25, 32, 22, 54, 30, 30, 62, 30, 112, 165, 53, 53, 48, 5, 4, 74, 67, 63, 159, 97, 96, 150, 52, 51, 50, 4, 1, 20, 19, 19, 57, 37, 16, 28, 9, 10, 10, 3, 44, 26, 88, 67, 71, 118, 44, 45, 56, 9, 6, 17, 23, 22, 72, 49, 34, 62, 27, 22, 39, 16, 7, 22, 15, 21, 58, 36, 74, 102, 33, 32, 32, 253, 82, 8, 33, 27, 27, 79, 53, 15, 29, 14, 38, 1, 11, 26, 14, 23, 55, 30, 24, 35, 11, 11, 8, 3, 21, 151, 247, 88, 88, 95, 114, 100, 105, 254, 224, 160, 153, 254, 255, 93, 93, 103, 9, 10, 9, 28, 19, 117, 15, 24, 8, 9, 9, 77, 74, 73, 212, 136, 145, 243, 86, 80, 87, 74, 70, 70, 202, 127, 73, 130, 48, 49, 57, 10, 15, 14, 51, 41, 1, 248, 36, 53, 67, 62, 63, 179, 111, 78, 130, 47, 47, 52, 20, 18, 16, 42, 25, 24, 39, 15, 21, 22, 86, 68, 68, 167, 35, 82, 133, 47, 46, 51, 6, 7, 254, 77, 10, 24, 37, 14, 22, 20, 29, 28, 27, 81, 0, 0, 2, 0, 87, 254, 17, 4, 116, 5, 196, 0, 106, 0, 139, 0, 0, 65, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 7, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 1, 22, 22, 23, 22, 22, 23, 22, 22, 21, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 22, 22, 4, 116, 65, 61, 31, 74, 43, 43, 97, 54, 47, 79, 33, 36, 58, 21, 41, 34, 38, 39, 38, 113, 75, 73, 115, 39, 39, 41, 185, 69, 63, 64, 182, 114, 109, 180, 64, 64, 71, 30, 29, 16, 39, 23, 30, 53, 20, 38, 41, 66, 61, 33, 83, 47, 59, 140, 60, 63, 94, 32, 42, 38, 42, 39, 40, 112, 70, 60, 120, 48, 48, 60, 185, 90, 73, 73, 187, 98, 109, 179, 65, 64, 71, 25, 24, 17, 47, 29, 29, 51, 21, 41, 44, 253, 226, 52, 87, 36, 30, 50, 20, 43, 40, 1, 28, 26, 20, 55, 33, 37, 80, 44, 62, 100, 38, 85, 69, 26, 26, 19, 53, 33, 37, 81, 1, 175, 94, 133, 48, 24, 41, 18, 18, 32, 15, 13, 24, 12, 14, 28, 15, 28, 72, 52, 45, 78, 29, 28, 33, 44, 37, 38, 103, 58, 104, 161, 55, 54, 57, 51, 48, 48, 135, 84, 65, 102, 41, 21, 39, 17, 15, 36, 21, 40, 101, 61, 95, 134, 49, 27, 44, 19, 24, 39, 20, 21, 40, 22, 29, 70, 48, 47, 78, 28, 28, 32, 29, 34, 33, 107, 78, 2, 120, 165, 50, 51, 45, 49, 47, 47, 136, 88, 58, 94, 37, 28, 47, 20, 13, 34, 19, 40, 104, 1, 69, 16, 29, 15, 12, 26, 14, 30, 73, 48, 40, 67, 25, 20, 29, 9, 14, 24, 13, 17, 32, 17, 37, 88, 73, 41, 68, 26, 19, 27, 8, 14, 25, 0, 0, 1, 0, 211, 0, 0, 3, 208, 5, 176, 0, 16, 0, 0, 97, 51, 17, 33, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 51, 3, 22, 186, 254, 239, 118, 183, 63, 63, 65, 65, 63, 63, 183, 118, 87, 5, 176, 71, 62, 63, 171, 101, 102, 172, 62, 62, 70, 0, 0, 1, 0, 231, 2, 165, 3, 229, 5, 176, 0, 8, 0, 0, 83, 51, 19, 55, 23, 19, 51, 1, 35, 231, 172, 195, 15, 15, 198, 171, 254, 193, 127, 2, 165, 1, 230, 68, 68, 254, 26, 3, 11, 0, 0, 1, 0, 48, 1, 146, 4, 156, 3, 34, 0, 49, 0, 0, 65, 39, 20, 6, 7, 6, 6, 35, 6, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 156, 134, 26, 22, 23, 61, 35, 30, 56, 27, 23, 48, 26, 39, 75, 39, 39, 83, 46, 67, 110, 39, 40, 44, 134, 26, 22, 22, 61, 35, 23, 43, 21, 30, 61, 33, 40, 75, 39, 38, 81, 47, 67, 110, 40, 40, 44, 2, 228, 18, 38, 70, 26, 27, 32, 1, 15, 15, 12, 35, 22, 32, 52, 18, 18, 19, 53, 45, 45, 120, 66, 17, 38, 67, 25, 24, 29, 8, 9, 12, 41, 27, 34, 52, 18, 18, 18, 56, 47, 47, 122, 255, 255, 0, 81, 0, 0, 4, 144, 7, 32, 6, 38, 0, 2, 0, 0, 0, 7, 1, 91, 0, 133, 1, 87, 255, 255, 0, 81, 0, 0, 4, 144, 7, 74, 6, 38, 0, 2, 0, 0, 0, 7, 1, 95, 0, 15, 1, 152, 255, 255, 0, 81, 0, 0, 4, 144, 7, 72, 6, 38, 0, 2, 0, 0, 0, 7, 1, 92, 0, 135, 1, 91, 255, 255, 0, 81, 0, 0, 4, 144, 7, 32, 6, 38, 0, 2, 0, 0, 0, 7, 1, 97, 0, 15, 1, 91, 255, 255, 0, 81, 0, 0, 4, 144, 7, 35, 6, 38, 0, 2, 0, 0, 0, 7, 1, 90, 255, 153, 1, 90, 255, 255, 0, 81, 0, 0, 4, 144, 6, 250, 6, 38, 0, 2, 0, 0, 0, 7, 1, 94, 0, 19, 1, 74, 0, 2, 0, 81, 254, 79, 4, 144, 5, 176, 0, 35, 0, 38, 0, 0, 65, 35, 1, 51, 19, 33, 19, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 1, 19, 19, 2, 194, 155, 254, 42, 185, 117, 1, 230, 107, 30, 52, 20, 39, 48, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 29, 27, 22, 59, 35, 48, 253, 33, 195, 192, 5, 176, 250, 80, 1, 121, 254, 160, 18, 39, 24, 46, 94, 47, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 36, 67, 29, 24, 44, 19, 2, 26, 2, 120, 253, 136, 0, 255, 255, 0, 81, 0, 0, 4, 144, 7, 139, 6, 38, 0, 2, 0, 0, 0, 7, 1, 98, 0, 14, 1, 164, 255, 255, 0, 81, 0, 0, 4, 144, 8, 24, 6, 38, 0, 2, 0, 0, 0, 7, 2, 107, 255, 252, 1, 166, 255, 255, 0, 81, 0, 0, 4, 144, 7, 82, 6, 38, 0, 2, 0, 0, 0, 7, 1, 93, 0, 147, 1, 97, 255, 255, 0, 32, 0, 0, 4, 171, 7, 32, 6, 38, 0, 72, 0, 0, 0, 7, 1, 91, 0, 215, 1, 87, 255, 255, 0, 107, 255, 236, 4, 93, 7, 53, 6, 38, 0, 4, 0, 0, 0, 7, 1, 91, 0, 170, 1, 108, 255, 255, 0, 107, 255, 236, 4, 93, 7, 94, 6, 38, 0, 4, 0, 0, 0, 7, 1, 100, 0, 53, 1, 113, 255, 255, 0, 107, 254, 77, 4, 93, 5, 196, 6, 38, 0, 4, 0, 0, 0, 6, 1, 102, 54, 0, 255, 255, 0, 107, 255, 236, 4, 93, 7, 93, 6, 38, 0, 4, 0, 0, 0, 7, 1, 92, 0, 172, 1, 112, 255, 255, 0, 155, 0, 0, 4, 112, 7, 73, 6, 38, 0, 5, 0, 0, 0, 7, 1, 100, 255, 218, 1, 92, 0, 2, 255, 197, 0, 0, 4, 127, 5, 176, 0, 19, 0, 39, 0, 0, 115, 33, 54, 54, 55, 54, 54, 55, 53, 38, 38, 39, 38, 38, 39, 33, 17, 35, 21, 51, 33, 53, 35, 17, 51, 22, 22, 23, 22, 22, 23, 21, 6, 6, 7, 6, 6, 7, 35, 17, 170, 1, 81, 152, 239, 83, 82, 87, 1, 1, 87, 82, 83, 239, 152, 254, 175, 229, 229, 1, 152, 220, 149, 118, 172, 56, 56, 56, 1, 1, 55, 56, 57, 172, 118, 149, 1, 99, 89, 88, 247, 150, 107, 150, 247, 89, 88, 99, 2, 253, 129, 151, 151, 1, 231, 2, 80, 69, 70, 189, 111, 109, 111, 190, 70, 70, 81, 1, 2, 3, 255, 255, 0, 182, 0, 0, 4, 52, 7, 32, 6, 38, 0, 6, 0, 0, 0, 7, 1, 91, 0, 123, 1, 87, 255, 255, 0, 182, 0, 0, 4, 52, 7, 74, 6, 38, 0, 6, 0, 0, 0, 7, 1, 95, 0, 5, 1, 152, 255, 255, 0, 182, 0, 0, 4, 52, 7, 73, 6, 38, 0, 6, 0, 0, 0, 7, 1, 100, 0, 6, 1, 92, 255, 255, 0, 182, 0, 0, 4, 52, 7, 72, 6, 38, 0, 6, 0, 0, 0, 7, 1, 92, 0, 125, 1, 91, 255, 255, 0, 182, 0, 0, 4, 52, 7, 32, 6, 38, 0, 6, 0, 0, 0, 7, 1, 97, 0, 5, 1, 91, 255, 255, 0, 182, 0, 0, 4, 52, 7, 25, 6, 38, 0, 6, 0, 0, 0, 7, 1, 96, 0, 5, 1, 91, 255, 255, 0, 182, 0, 0, 4, 52, 7, 35, 6, 38, 0, 6, 0, 0, 0, 7, 1, 90, 255, 143, 1, 90, 255, 255, 0, 182, 0, 0, 4, 52, 6, 250, 6, 38, 0, 6, 0, 0, 0, 7, 1, 94, 0, 9, 1, 74, 0, 1, 0, 175, 254, 75, 4, 29, 5, 176, 0, 29, 0, 0, 65, 35, 17, 1, 39, 35, 17, 51, 17, 1, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 28, 185, 254, 8, 3, 185, 185, 1, 251, 25, 24, 16, 41, 26, 18, 58, 20, 14, 29, 51, 30, 76, 118, 41, 40, 43, 5, 176, 251, 213, 4, 37, 6, 250, 80, 4, 45, 251, 213, 91, 53, 83, 26, 16, 18, 7, 6, 147, 10, 8, 47, 45, 45, 129, 82, 0, 1, 0, 182, 254, 79, 4, 52, 5, 176, 0, 40, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 53, 33, 17, 3, 207, 253, 160, 2, 188, 252, 139, 2, 117, 27, 47, 17, 30, 31, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 30, 27, 22, 58, 35, 84, 253, 59, 2, 161, 157, 1, 212, 158, 250, 80, 20, 44, 23, 37, 80, 39, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 36, 68, 29, 24, 43, 19, 157, 2, 4, 0, 2, 255, 197, 0, 0, 4, 127, 5, 176, 0, 19, 0, 39, 0, 0, 115, 33, 54, 54, 55, 54, 54, 55, 53, 38, 38, 39, 38, 38, 39, 33, 17, 35, 21, 51, 33, 53, 35, 17, 51, 22, 22, 23, 22, 22, 23, 21, 6, 6, 7, 6, 6, 7, 35, 17, 170, 1, 81, 152, 239, 83, 82, 87, 1, 1, 87, 82, 83, 239, 152, 254, 175, 229, 229, 1, 152, 220, 149, 118, 172, 56, 56, 56, 1, 1, 55, 56, 57, 172, 118, 149, 1, 99, 89, 88, 247, 150, 107, 150, 247, 89, 88, 99, 2, 253, 129, 151, 151, 1, 231, 2, 80, 69, 70, 189, 111, 109, 111, 190, 70, 70, 81, 1, 2, 3, 255, 255, 0, 100, 255, 235, 4, 92, 7, 95, 6, 38, 0, 8, 0, 0, 0, 7, 1, 95, 0, 25, 1, 173, 255, 255, 0, 100, 255, 235, 4, 92, 7, 93, 6, 38, 0, 8, 0, 0, 0, 7, 1, 92, 0, 145, 1, 112, 255, 255, 0, 100, 254, 37, 4, 92, 5, 196, 6, 38, 0, 8, 0, 0, 0, 7, 1, 104, 0, 177, 254, 207, 0, 2, 0, 24, 0, 0, 4, 188, 5, 176, 0, 19, 0, 23, 0, 0, 65, 17, 35, 17, 33, 17, 35, 17, 35, 21, 51, 17, 51, 17, 33, 17, 51, 17, 51, 53, 1, 53, 33, 21, 4, 60, 175, 253, 171, 174, 114, 114, 174, 2, 85, 175, 128, 252, 124, 2, 85, 4, 143, 1, 33, 254, 223, 1, 33, 254, 223, 143, 252, 0, 2, 161, 253, 95, 4, 0, 143, 254, 175, 194, 194, 0, 255, 255, 0, 141, 0, 0, 4, 63, 7, 72, 6, 38, 0, 9, 0, 0, 0, 7, 1, 92, 0, 113, 1, 91, 255, 255, 0, 174, 0, 0, 4, 30, 7, 32, 6, 38, 0, 10, 0, 0, 0, 7, 1, 91, 0, 71, 1, 87, 255, 255, 0, 174, 0, 0, 4, 30, 7, 74, 6, 38, 0, 10, 0, 0, 0, 7, 1, 95, 255, 210, 1, 152, 255, 255, 0, 174, 0, 0, 4, 30, 7, 72, 6, 38, 0, 10, 0, 0, 0, 7, 1, 92, 0, 73, 1, 91, 255, 255, 0, 174, 0, 0, 4, 30, 7, 32, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 255, 210, 1, 91, 255, 255, 0, 174, 0, 0, 4, 30, 7, 25, 6, 38, 0, 10, 0, 0, 0, 7, 1, 96, 255, 210, 1, 91, 255, 255, 0, 174, 0, 0, 4, 30, 7, 35, 6, 38, 0, 10, 0, 0, 0, 7, 1, 90, 255, 91, 1, 90, 255, 255, 0, 174, 0, 0, 4, 30, 6, 250, 6, 38, 0, 10, 0, 0, 0, 7, 1, 94, 255, 214, 1, 74, 0, 1, 0, 174, 254, 79, 4, 30, 5, 176, 0, 40, 0, 0, 83, 21, 33, 17, 33, 21, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 33, 53, 33, 17, 33, 53, 174, 1, 85, 254, 171, 1, 151, 25, 42, 17, 33, 35, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 31, 29, 21, 57, 34, 1, 36, 254, 163, 1, 93, 5, 176, 161, 251, 145, 160, 18, 39, 21, 39, 85, 41, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 37, 69, 30, 23, 42, 18, 160, 4, 111, 161, 0, 255, 255, 0, 174, 0, 0, 4, 30, 7, 82, 6, 38, 0, 10, 0, 0, 0, 7, 1, 93, 0, 85, 1, 97, 255, 255, 0, 98, 255, 236, 4, 223, 7, 59, 6, 38, 0, 11, 0, 0, 0, 7, 1, 92, 1, 193, 1, 78, 255, 255, 0, 172, 254, 62, 4, 164, 5, 176, 6, 38, 0, 12, 0, 0, 0, 7, 1, 104, 0, 182, 254, 232, 255, 255, 0, 198, 0, 0, 4, 71, 7, 0, 6, 38, 0, 13, 0, 0, 0, 7, 1, 91, 255, 54, 1, 55, 255, 255, 0, 198, 0, 0, 4, 71, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 0, 109, 0, 242, 255, 154, 255, 255, 0, 198, 254, 56, 4, 71, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 1, 104, 0, 183, 254, 226, 255, 255, 0, 198, 0, 0, 4, 71, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 1, 96, 0, 116, 253, 197, 0, 1, 0, 58, 0, 0, 4, 75, 5, 176, 0, 13, 0, 0, 65, 17, 35, 17, 7, 21, 55, 17, 33, 53, 33, 17, 37, 53, 1, 131, 185, 144, 144, 3, 129, 253, 56, 1, 6, 3, 77, 2, 99, 253, 98, 45, 162, 45, 253, 144, 157, 2, 14, 83, 162, 0, 255, 255, 0, 143, 0, 0, 4, 62, 7, 32, 6, 38, 0, 15, 0, 0, 0, 7, 1, 91, 0, 94, 1, 87, 255, 255, 0, 143, 0, 0, 4, 62, 7, 73, 6, 38, 0, 15, 0, 0, 0, 7, 1, 100, 255, 234, 1, 92, 255, 255, 0, 143, 254, 56, 4, 62, 5, 176, 6, 38, 0, 15, 0, 0, 0, 7, 1, 104, 0, 132, 254, 226, 255, 255, 0, 143, 0, 0, 4, 62, 7, 82, 6, 38, 0, 15, 0, 0, 0, 7, 1, 93, 0, 108, 1, 97, 255, 255, 0, 106, 255, 236, 4, 97, 7, 53, 6, 38, 0, 16, 0, 0, 0, 7, 1, 91, 0, 137, 1, 108, 255, 255, 0, 106, 255, 236, 4, 97, 7, 95, 6, 38, 0, 16, 0, 0, 0, 7, 1, 95, 0, 19, 1, 173, 255, 255, 0, 106, 255, 236, 4, 97, 7, 93, 6, 38, 0, 16, 0, 0, 0, 7, 1, 92, 0, 139, 1, 112, 255, 255, 0, 106, 255, 236, 4, 97, 7, 53, 6, 38, 0, 16, 0, 0, 0, 7, 1, 97, 0, 19, 1, 112, 255, 255, 0, 106, 255, 236, 4, 97, 7, 56, 6, 38, 0, 16, 0, 0, 0, 7, 1, 90, 255, 157, 1, 111, 0, 2, 0, 99, 255, 236, 4, 198, 5, 250, 0, 41, 0, 67, 0, 0, 65, 53, 38, 38, 39, 54, 54, 55, 54, 54, 39, 35, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 2, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 21, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 90, 2, 40, 44, 40, 66, 24, 31, 33, 1, 167, 1, 14, 14, 13, 38, 25, 29, 67, 39, 44, 104, 60, 113, 170, 62, 80, 82, 62, 59, 60, 193, 135, 133, 187, 64, 62, 58, 181, 2, 33, 39, 37, 124, 88, 88, 120, 35, 45, 39, 44, 57, 36, 111, 77, 79, 118, 38, 48, 42, 2, 132, 166, 100, 202, 88, 15, 49, 32, 44, 118, 72, 44, 73, 27, 24, 33, 8, 33, 55, 20, 23, 24, 85, 73, 94, 254, 237, 139, 166, 117, 235, 95, 97, 120, 115, 95, 91, 245, 1, 30, 168, 84, 191, 72, 69, 85, 82, 62, 78, 194, 85, 168, 91, 212, 79, 53, 64, 73, 58, 73, 197, 0, 255, 255, 0, 106, 255, 236, 4, 111, 7, 95, 6, 38, 0, 16, 0, 0, 0, 7, 1, 99, 0, 153, 1, 112, 255, 255, 0, 106, 255, 236, 4, 97, 7, 15, 6, 38, 0, 16, 0, 0, 0, 7, 1, 94, 0, 23, 1, 95, 0, 3, 0, 71, 255, 163, 4, 140, 5, 236, 0, 37, 0, 57, 0, 71, 0, 0, 65, 55, 54, 38, 39, 19, 35, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 21, 20, 22, 23, 22, 22, 23, 3, 51, 55, 22, 22, 51, 50, 54, 55, 54, 54, 37, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 1, 38, 38, 39, 38, 38, 37, 21, 6, 6, 7, 6, 6, 35, 34, 38, 39, 1, 22, 22, 4, 88, 1, 1, 55, 56, 161, 142, 99, 24, 55, 31, 44, 104, 60, 130, 188, 59, 67, 61, 2, 16, 17, 16, 50, 34, 160, 142, 104, 57, 142, 91, 124, 184, 61, 70, 66, 252, 192, 35, 41, 37, 121, 91, 42, 70, 29, 26, 42, 17, 254, 14, 11, 17, 6, 10, 9, 2, 138, 2, 37, 60, 38, 109, 77, 66, 100, 37, 1, 235, 19, 15, 2, 132, 166, 111, 228, 95, 1, 16, 168, 24, 41, 16, 22, 25, 113, 88, 94, 249, 122, 166, 61, 125, 60, 60, 112, 49, 254, 242, 176, 48, 55, 106, 85, 96, 253, 124, 168, 80, 187, 77, 64, 91, 19, 18, 15, 41, 25, 252, 181, 26, 57, 28, 46, 94, 211, 168, 95, 207, 83, 52, 64, 47, 41, 3, 62, 62, 129, 0, 255, 255, 0, 71, 255, 163, 4, 140, 7, 94, 6, 38, 0, 219, 0, 0, 0, 7, 1, 91, 0, 123, 1, 149, 255, 255, 0, 106, 255, 236, 4, 97, 7, 103, 6, 38, 0, 16, 0, 0, 0, 7, 1, 93, 0, 151, 1, 118, 255, 255, 0, 181, 0, 0, 4, 114, 7, 20, 6, 38, 0, 19, 0, 0, 0, 7, 1, 91, 0, 120, 1, 75, 255, 255, 0, 181, 0, 0, 4, 114, 7, 61, 6, 38, 0, 19, 0, 0, 0, 7, 1, 100, 0, 3, 1, 80, 255, 255, 0, 181, 254, 56, 4, 114, 5, 176, 6, 38, 0, 19, 0, 0, 0, 7, 1, 104, 0, 156, 254, 226, 255, 255, 0, 118, 255, 236, 4, 105, 7, 53, 6, 38, 0, 20, 0, 0, 0, 7, 1, 91, 0, 130, 1, 108, 255, 255, 0, 118, 255, 236, 4, 105, 7, 94, 6, 38, 0, 20, 0, 0, 0, 7, 1, 100, 0, 13, 1, 113, 255, 255, 0, 118, 254, 68, 4, 105, 5, 196, 6, 38, 0, 20, 0, 0, 0, 6, 1, 102, 81, 247, 255, 255, 0, 118, 255, 236, 4, 105, 7, 93, 6, 38, 0, 20, 0, 0, 0, 7, 1, 92, 0, 132, 1, 112, 0, 1, 0, 76, 0, 0, 4, 132, 5, 176, 0, 15, 0, 0, 65, 53, 35, 17, 33, 53, 33, 21, 33, 17, 35, 21, 51, 17, 51, 17, 3, 173, 235, 1, 194, 251, 200, 1, 194, 222, 222, 180, 3, 55, 151, 1, 68, 158, 158, 254, 188, 151, 252, 201, 3, 55, 255, 255, 0, 76, 0, 0, 4, 132, 7, 61, 6, 38, 0, 21, 0, 0, 0, 7, 1, 100, 0, 13, 1, 80, 255, 255, 0, 139, 255, 236, 4, 66, 7, 20, 6, 38, 0, 22, 0, 0, 0, 7, 1, 91, 0, 163, 1, 75, 255, 255, 0, 139, 255, 236, 4, 66, 7, 62, 6, 38, 0, 22, 0, 0, 0, 7, 1, 95, 0, 45, 1, 140, 255, 255, 0, 139, 255, 236, 4, 66, 7, 60, 6, 38, 0, 22, 0, 0, 0, 7, 1, 92, 0, 165, 1, 79, 255, 255, 0, 139, 255, 236, 4, 66, 7, 20, 6, 38, 0, 22, 0, 0, 0, 7, 1, 97, 0, 45, 1, 79, 255, 255, 0, 139, 255, 236, 4, 66, 7, 23, 6, 38, 0, 22, 0, 0, 0, 7, 1, 90, 255, 183, 1, 78, 0, 1, 0, 139, 255, 236, 5, 131, 5, 232, 0, 43, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 3, 35, 3, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 3, 54, 54, 55, 54, 54, 53, 35, 20, 6, 7, 6, 6, 7, 4, 64, 179, 3, 2, 38, 36, 37, 108, 71, 71, 109, 36, 37, 39, 1, 4, 176, 2, 1, 70, 62, 62, 174, 106, 104, 174, 63, 63, 72, 1, 80, 120, 39, 42, 41, 167, 15, 18, 18, 60, 45, 5, 176, 252, 38, 65, 120, 46, 47, 55, 56, 46, 46, 120, 65, 3, 218, 252, 38, 102, 179, 66, 67, 76, 77, 67, 66, 178, 102, 2, 154, 5, 49, 43, 47, 139, 93, 56, 85, 29, 30, 34, 6, 255, 255, 0, 139, 255, 236, 4, 137, 7, 62, 6, 38, 0, 22, 0, 0, 0, 7, 1, 99, 0, 179, 1, 79, 255, 255, 0, 139, 255, 236, 4, 66, 6, 238, 6, 38, 0, 22, 0, 0, 0, 7, 1, 94, 0, 49, 1, 62, 0, 1, 0, 139, 254, 126, 4, 66, 5, 176, 0, 60, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 3, 35, 3, 22, 22, 23, 22, 22, 23, 50, 50, 51, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 4, 64, 179, 3, 2, 38, 36, 37, 108, 71, 71, 109, 36, 37, 39, 1, 4, 176, 2, 1, 68, 61, 59, 166, 103, 1, 3, 1, 14, 24, 9, 15, 16, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 14, 13, 18, 54, 35, 61, 100, 35, 35, 40, 5, 176, 252, 38, 65, 120, 46, 47, 55, 56, 46, 46, 120, 65, 3, 218, 252, 38, 101, 176, 66, 65, 78, 3, 16, 32, 17, 27, 57, 28, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 25, 48, 22, 28, 51, 23, 29, 90, 58, 58, 136, 74, 0, 255, 255, 0, 139, 255, 236, 4, 66, 7, 127, 6, 38, 0, 22, 0, 0, 0, 7, 1, 98, 0, 44, 1, 152, 255, 255, 0, 139, 255, 236, 4, 66, 7, 70, 6, 38, 0, 22, 0, 0, 0, 7, 1, 93, 0, 177, 1, 85, 255, 255, 0, 73, 0, 0, 4, 158, 7, 32, 6, 38, 0, 24, 0, 0, 0, 7, 1, 91, 0, 125, 1, 87, 255, 255, 0, 73, 0, 0, 4, 158, 7, 72, 6, 38, 0, 24, 0, 0, 0, 7, 1, 92, 0, 127, 1, 91, 255, 255, 0, 73, 0, 0, 4, 158, 7, 32, 6, 38, 0, 24, 0, 0, 0, 7, 1, 97, 0, 7, 1, 91, 255, 255, 0, 73, 0, 0, 4, 158, 7, 35, 6, 38, 0, 24, 0, 0, 0, 7, 1, 90, 255, 145, 1, 90, 255, 255, 0, 61, 0, 0, 4, 121, 7, 31, 6, 38, 0, 26, 0, 0, 0, 7, 1, 91, 0, 113, 1, 86, 255, 255, 0, 61, 0, 0, 4, 121, 7, 71, 6, 38, 0, 26, 0, 0, 0, 7, 1, 92, 0, 115, 1, 90, 255, 255, 0, 61, 0, 0, 4, 121, 7, 31, 6, 38, 0, 26, 0, 0, 0, 7, 1, 97, 255, 252, 1, 90, 255, 255, 0, 61, 0, 0, 4, 121, 7, 34, 6, 38, 0, 26, 0, 0, 0, 7, 1, 90, 255, 133, 1, 89, 255, 255, 0, 114, 0, 0, 4, 55, 7, 20, 6, 38, 0, 27, 0, 0, 0, 7, 1, 91, 0, 157, 1, 75, 255, 255, 0, 114, 0, 0, 4, 55, 7, 61, 6, 38, 0, 27, 0, 0, 0, 7, 1, 100, 0, 40, 1, 80, 255, 255, 0, 114, 0, 0, 4, 55, 7, 13, 6, 38, 0, 27, 0, 0, 0, 7, 1, 96, 0, 39, 1, 79, 255, 255, 0, 156, 255, 236, 4, 54, 5, 222, 6, 38, 0, 28, 0, 0, 0, 7, 1, 91, 0, 129, 0, 21, 255, 255, 0, 156, 255, 236, 4, 54, 6, 8, 6, 38, 0, 28, 0, 0, 0, 6, 1, 95, 11, 86, 255, 255, 0, 156, 255, 236, 4, 54, 6, 6, 6, 38, 0, 28, 0, 0, 0, 7, 1, 92, 0, 131, 0, 25, 255, 255, 0, 156, 255, 236, 4, 54, 5, 222, 6, 38, 0, 28, 0, 0, 0, 6, 1, 97, 11, 25, 255, 255, 0, 156, 255, 236, 4, 54, 5, 225, 6, 38, 0, 28, 0, 0, 0, 6, 1, 90, 149, 24, 255, 255, 0, 156, 255, 236, 4, 54, 5, 184, 6, 38, 0, 28, 0, 0, 0, 6, 1, 94, 15, 8, 0, 2, 0, 156, 254, 79, 4, 54, 4, 78, 0, 81, 0, 101, 0, 0, 101, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 53, 38, 38, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 37, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 21, 6, 6, 7, 6, 6, 3, 111, 33, 55, 21, 30, 33, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 20, 19, 22, 68, 43, 38, 18, 20, 66, 57, 58, 158, 92, 101, 159, 55, 56, 59, 1, 186, 33, 30, 30, 87, 55, 59, 95, 33, 33, 36, 202, 113, 183, 65, 65, 71, 53, 49, 48, 139, 86, 53, 94, 42, 41, 69, 28, 3, 10, 254, 199, 54, 82, 27, 27, 27, 30, 29, 42, 144, 97, 172, 16, 56, 38, 39, 94, 14, 22, 49, 27, 37, 82, 40, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 30, 56, 25, 31, 54, 23, 16, 45, 121, 54, 1, 247, 91, 136, 46, 45, 45, 56, 45, 46, 114, 59, 34, 63, 23, 23, 28, 30, 27, 28, 78, 49, 85, 44, 44, 45, 134, 89, 68, 117, 42, 43, 50, 22, 19, 19, 50, 28, 29, 54, 106, 28, 25, 24, 68, 40, 42, 65, 23, 35, 34, 219, 32, 59, 23, 23, 28, 0, 255, 255, 0, 156, 255, 236, 4, 54, 6, 73, 6, 38, 0, 28, 0, 0, 0, 6, 1, 98, 10, 98, 255, 255, 0, 156, 255, 236, 4, 54, 6, 214, 6, 38, 0, 28, 0, 0, 0, 6, 2, 107, 248, 100, 255, 255, 0, 156, 255, 236, 4, 54, 6, 16, 6, 38, 0, 28, 0, 0, 0, 7, 1, 93, 0, 143, 0, 31, 255, 255, 0, 43, 255, 236, 4, 169, 5, 223, 6, 38, 0, 73, 0, 0, 0, 7, 1, 91, 0, 152, 0, 22, 255, 255, 0, 143, 255, 236, 4, 51, 5, 222, 6, 38, 0, 30, 0, 0, 0, 7, 1, 91, 0, 147, 0, 21, 255, 255, 0, 143, 255, 236, 4, 51, 6, 7, 6, 38, 0, 30, 0, 0, 0, 6, 1, 100, 30, 26, 255, 255, 0, 143, 254, 77, 4, 51, 4, 78, 6, 38, 0, 30, 0, 0, 0, 6, 1, 102, 75, 0, 255, 255, 0, 143, 255, 236, 4, 51, 6, 6, 6, 38, 0, 30, 0, 0, 0, 7, 1, 92, 0, 149, 0, 25, 255, 255, 0, 100, 255, 236, 5, 191, 6, 22, 4, 38, 0, 31, 217, 0, 0, 7, 0, 109, 2, 223, 0, 0, 0, 2, 0, 124, 255, 236, 4, 210, 6, 0, 0, 37, 0, 63, 0, 0, 65, 53, 35, 53, 35, 21, 35, 21, 51, 17, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 23, 51, 17, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 4, 210, 197, 185, 255, 255, 20, 45, 26, 42, 102, 60, 99, 160, 56, 57, 61, 62, 56, 56, 159, 98, 55, 95, 40, 33, 57, 24, 8, 170, 253, 40, 34, 36, 35, 111, 78, 41, 71, 29, 34, 54, 20, 18, 48, 31, 31, 76, 47, 77, 110, 35, 36, 34, 4, 210, 151, 151, 151, 151, 254, 253, 23, 39, 15, 25, 25, 82, 73, 73, 203, 121, 21, 116, 201, 74, 74, 84, 21, 20, 17, 46, 30, 114, 4, 210, 253, 63, 21, 79, 143, 55, 54, 64, 19, 16, 20, 60, 36, 254, 10, 35, 57, 20, 21, 22, 63, 54, 54, 142, 255, 255, 0, 135, 255, 236, 4, 69, 5, 223, 6, 38, 0, 32, 0, 0, 0, 6, 1, 91, 124, 22, 255, 255, 0, 135, 255, 236, 4, 69, 6, 9, 6, 38, 0, 32, 0, 0, 0, 6, 1, 95, 6, 87, 255, 255, 0, 135, 255, 236, 4, 69, 6, 8, 6, 38, 0, 32, 0, 0, 0, 6, 1, 100, 7, 27, 255, 255, 0, 135, 255, 236, 4, 69, 6, 7, 6, 38, 0, 32, 0, 0, 0, 6, 1, 92, 126, 26, 255, 255, 0, 135, 255, 236, 4, 69, 5, 223, 6, 38, 0, 32, 0, 0, 0, 6, 1, 97, 6, 26, 255, 255, 0, 135, 255, 236, 4, 69, 5, 216, 6, 38, 0, 32, 0, 0, 0, 6, 1, 96, 6, 26, 255, 255, 0, 135, 255, 236, 4, 69, 5, 226, 6, 38, 0, 32, 0, 0, 0, 6, 1, 90, 144, 25, 255, 255, 0, 135, 255, 236, 4, 69, 5, 185, 6, 38, 0, 32, 0, 0, 0, 6, 1, 94, 10, 9, 0, 1, 0, 184, 254, 75, 4, 23, 4, 78, 0, 50, 0, 0, 115, 51, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 39, 39, 35, 184, 185, 16, 41, 25, 33, 88, 54, 62, 91, 29, 27, 27, 25, 25, 16, 45, 27, 19, 60, 21, 14, 30, 54, 30, 73, 116, 40, 46, 48, 50, 47, 47, 136, 86, 68, 114, 46, 26, 45, 20, 1, 11, 166, 3, 42, 26, 45, 17, 23, 24, 32, 35, 32, 100, 68, 253, 1, 53, 78, 23, 16, 16, 7, 6, 157, 10, 8, 42, 39, 44, 135, 88, 3, 3, 108, 159, 52, 51, 50, 39, 35, 20, 51, 29, 10, 144, 0, 2, 0, 135, 254, 97, 4, 69, 4, 78, 0, 62, 0, 76, 0, 0, 83, 20, 22, 23, 22, 22, 23, 50, 50, 51, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 1, 50, 22, 23, 22, 22, 21, 21, 33, 54, 54, 55, 54, 54, 135, 73, 67, 65, 182, 110, 1, 3, 1, 51, 55, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 32, 28, 22, 57, 33, 69, 112, 34, 113, 51, 154, 99, 75, 125, 43, 49, 50, 3, 5, 57, 58, 58, 175, 117, 93, 177, 69, 70, 84, 1, 237, 71, 102, 35, 31, 41, 253, 186, 11, 55, 40, 40, 100, 1, 247, 111, 189, 69, 69, 80, 4, 48, 105, 53, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 38, 69, 30, 23, 41, 18, 25, 95, 51, 88, 66, 80, 57, 47, 53, 139, 60, 1, 83, 113, 194, 72, 71, 81, 76, 71, 72, 207, 131, 1, 149, 52, 42, 38, 116, 55, 7, 75, 115, 40, 39, 41, 0, 255, 255, 0, 140, 254, 86, 4, 29, 6, 8, 6, 38, 0, 34, 0, 0, 0, 6, 1, 95, 246, 86, 255, 255, 0, 140, 254, 86, 4, 29, 6, 6, 6, 38, 0, 34, 0, 0, 0, 6, 1, 92, 109, 25, 255, 255, 0, 140, 254, 86, 4, 29, 6, 147, 6, 38, 0, 34, 0, 0, 0, 6, 2, 78, 7, 88, 0, 1, 0, 11, 0, 0, 4, 59, 6, 0, 0, 39, 0, 0, 65, 53, 33, 53, 35, 21, 35, 21, 51, 17, 51, 17, 54, 54, 55, 54, 54, 51, 54, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 6, 6, 7, 6, 6, 7, 17, 2, 136, 254, 238, 185, 178, 178, 185, 20, 50, 30, 38, 91, 50, 59, 93, 31, 30, 32, 185, 53, 49, 49, 139, 85, 56, 101, 44, 39, 67, 27, 4, 210, 151, 151, 151, 151, 251, 46, 3, 18, 32, 53, 20, 26, 28, 1, 33, 33, 32, 99, 66, 253, 85, 2, 169, 109, 159, 52, 52, 49, 1, 27, 26, 23, 64, 40, 1, 57, 0, 255, 255, 255, 231, 0, 0, 4, 44, 7, 111, 6, 38, 0, 35, 0, 0, 0, 7, 1, 92, 255, 38, 1, 130, 255, 255, 0, 203, 0, 0, 4, 85, 5, 201, 6, 38, 1, 109, 0, 0, 0, 7, 1, 91, 0, 170, 0, 0, 255, 255, 0, 203, 0, 0, 4, 85, 5, 243, 6, 38, 1, 109, 0, 0, 0, 6, 1, 95, 52, 65, 255, 255, 0, 203, 0, 0, 4, 85, 5, 241, 6, 38, 1, 109, 0, 0, 0, 7, 1, 92, 0, 172, 0, 4, 255, 255, 0, 203, 0, 0, 4, 85, 5, 201, 6, 38, 1, 109, 0, 0, 0, 6, 1, 97, 52, 4, 255, 255, 0, 203, 0, 0, 4, 85, 5, 204, 6, 38, 1, 109, 0, 0, 0, 6, 1, 90, 190, 3, 255, 255, 0, 203, 0, 0, 4, 85, 5, 164, 6, 38, 1, 109, 0, 0, 0, 6, 1, 94, 56, 244, 0, 2, 0, 203, 254, 79, 4, 85, 5, 195, 0, 38, 0, 50, 0, 0, 83, 21, 33, 17, 33, 21, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 33, 53, 33, 17, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 203, 1, 112, 254, 144, 1, 116, 23, 41, 16, 35, 37, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 28, 25, 22, 60, 37, 1, 97, 254, 159, 209, 55, 56, 55, 56, 56, 55, 56, 55, 4, 58, 161, 253, 7, 160, 17, 37, 20, 40, 86, 43, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 35, 65, 28, 26, 45, 20, 160, 3, 154, 1, 28, 45, 60, 60, 45, 46, 63, 63, 255, 255, 0, 203, 0, 0, 4, 85, 5, 251, 6, 38, 1, 109, 0, 0, 0, 7, 1, 93, 0, 184, 0, 10, 255, 255, 0, 176, 254, 75, 3, 245, 5, 232, 6, 38, 1, 113, 0, 0, 0, 7, 1, 92, 0, 215, 255, 251, 255, 255, 0, 176, 254, 64, 4, 106, 6, 0, 6, 38, 0, 38, 0, 0, 0, 7, 1, 104, 0, 98, 254, 234, 255, 255, 0, 203, 0, 0, 4, 85, 7, 102, 6, 38, 0, 39, 0, 0, 0, 7, 1, 91, 0, 162, 1, 157, 255, 255, 0, 153, 0, 0, 4, 175, 6, 4, 4, 38, 0, 39, 206, 0, 0, 7, 0, 109, 1, 207, 255, 238, 255, 255, 0, 203, 254, 57, 4, 85, 6, 0, 6, 38, 0, 39, 0, 0, 0, 7, 1, 104, 0, 210, 254, 227, 255, 255, 0, 133, 0, 1, 4, 18, 6, 1, 4, 38, 0, 39, 186, 1, 0, 7, 1, 96, 1, 58, 253, 231, 0, 1, 0, 203, 0, 0, 4, 85, 6, 0, 0, 17, 0, 0, 65, 17, 33, 21, 33, 17, 5, 21, 37, 17, 33, 21, 33, 53, 33, 17, 37, 55, 2, 244, 253, 215, 1, 112, 254, 173, 1, 83, 254, 144, 3, 138, 254, 159, 1, 33, 1, 3, 205, 2, 51, 161, 254, 25, 154, 162, 154, 253, 202, 160, 160, 2, 139, 132, 162, 0, 255, 255, 0, 174, 0, 0, 4, 41, 5, 222, 6, 38, 0, 41, 0, 0, 0, 6, 1, 91, 109, 21, 255, 255, 0, 174, 0, 0, 4, 41, 6, 7, 6, 38, 0, 41, 0, 0, 0, 6, 1, 100, 249, 26, 255, 255, 0, 174, 254, 56, 4, 41, 4, 78, 6, 38, 0, 41, 0, 0, 0, 7, 1, 104, 0, 147, 254, 226, 255, 255, 0, 174, 0, 0, 4, 41, 6, 16, 6, 38, 0, 41, 0, 0, 0, 6, 1, 93, 123, 31, 255, 255, 0, 122, 255, 236, 4, 82, 5, 222, 6, 38, 0, 42, 0, 0, 0, 6, 1, 91, 118, 21, 255, 255, 0, 122, 255, 236, 4, 82, 6, 8, 6, 38, 0, 42, 0, 0, 0, 6, 1, 95, 0, 86, 255, 255, 0, 122, 255, 236, 4, 82, 6, 6, 6, 38, 0, 42, 0, 0, 0, 6, 1, 92, 120, 25, 255, 255, 0, 122, 255, 236, 4, 82, 5, 222, 6, 38, 0, 42, 0, 0, 0, 6, 1, 97, 0, 25, 255, 255, 0, 122, 255, 236, 4, 82, 5, 225, 6, 38, 0, 42, 0, 0, 0, 6, 1, 90, 138, 24, 0, 2, 0, 119, 255, 236, 4, 174, 4, 170, 0, 38, 0, 64, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 54, 54, 55, 54, 54, 55, 35, 20, 6, 7, 6, 6, 7, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 119, 68, 64, 63, 183, 115, 114, 182, 64, 63, 68, 42, 41, 40, 62, 23, 25, 27, 1, 168, 13, 14, 13, 39, 26, 61, 158, 96, 114, 182, 63, 64, 68, 185, 38, 39, 38, 114, 77, 77, 115, 39, 38, 39, 38, 38, 39, 115, 76, 77, 116, 38, 39, 38, 2, 39, 22, 117, 200, 74, 74, 84, 84, 74, 74, 200, 117, 22, 92, 164, 68, 17, 52, 36, 41, 108, 65, 43, 69, 26, 24, 34, 8, 53, 59, 85, 74, 74, 201, 139, 22, 79, 145, 55, 55, 65, 65, 55, 55, 145, 79, 22, 80, 145, 55, 55, 64, 64, 55, 55, 145, 255, 255, 0, 122, 255, 236, 4, 92, 6, 8, 6, 38, 0, 42, 0, 0, 0, 7, 1, 99, 0, 134, 0, 25, 255, 255, 0, 122, 255, 236, 4, 82, 5, 184, 6, 38, 0, 42, 0, 0, 0, 6, 1, 94, 4, 8, 0, 3, 0, 122, 255, 121, 4, 82, 4, 185, 0, 34, 0, 48, 0, 65, 0, 0, 83, 21, 20, 22, 23, 7, 51, 55, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 55, 35, 7, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 1, 38, 38, 37, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 1, 22, 22, 23, 22, 22, 122, 106, 99, 101, 123, 74, 43, 95, 54, 114, 182, 64, 63, 68, 29, 27, 24, 71, 44, 101, 123, 73, 45, 101, 57, 114, 182, 63, 64, 68, 185, 38, 39, 38, 114, 77, 38, 65, 29, 254, 170, 48, 48, 2, 102, 38, 38, 39, 115, 76, 34, 61, 28, 1, 84, 18, 28, 11, 16, 16, 2, 39, 22, 148, 238, 73, 205, 151, 17, 19, 84, 74, 74, 200, 117, 22, 76, 139, 59, 53, 91, 35, 205, 148, 20, 21, 85, 74, 74, 201, 139, 22, 79, 145, 55, 55, 65, 17, 15, 253, 74, 57, 157, 113, 22, 80, 145, 55, 55, 64, 13, 13, 2, 177, 22, 52, 28, 43, 97, 0, 255, 255, 0, 122, 255, 121, 4, 82, 5, 221, 6, 38, 1, 56, 0, 0, 0, 6, 1, 91, 80, 20, 255, 255, 0, 122, 255, 236, 4, 82, 6, 16, 6, 38, 0, 42, 0, 0, 0, 7, 1, 93, 0, 132, 0, 31, 255, 255, 1, 73, 0, 0, 4, 49, 5, 222, 6, 38, 0, 45, 0, 0, 0, 6, 1, 91, 88, 21, 255, 255, 1, 20, 0, 0, 4, 49, 6, 7, 6, 38, 0, 45, 0, 0, 0, 6, 1, 100, 228, 26, 255, 255, 1, 16, 254, 56, 4, 49, 4, 78, 6, 38, 0, 45, 0, 0, 0, 7, 1, 104, 255, 226, 254, 226, 255, 255, 0, 175, 255, 236, 4, 54, 5, 222, 6, 38, 0, 46, 0, 0, 0, 7, 1, 91, 0, 132, 0, 21, 255, 255, 0, 175, 255, 236, 4, 54, 6, 7, 6, 38, 0, 46, 0, 0, 0, 6, 1, 100, 15, 26, 255, 255, 0, 175, 254, 69, 4, 54, 4, 78, 6, 38, 0, 46, 0, 0, 0, 6, 1, 102, 68, 248, 255, 255, 0, 175, 255, 236, 4, 54, 6, 6, 6, 38, 0, 46, 0, 0, 0, 7, 1, 92, 0, 134, 0, 25, 0, 1, 0, 142, 255, 236, 4, 41, 5, 64, 0, 43, 0, 0, 65, 35, 17, 33, 21, 33, 21, 35, 21, 51, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 51, 53, 35, 53, 33, 53, 33, 2, 100, 186, 254, 228, 1, 28, 217, 217, 53, 46, 46, 125, 72, 43, 87, 39, 39, 66, 23, 26, 17, 53, 30, 31, 64, 30, 41, 73, 28, 28, 32, 234, 234, 1, 156, 254, 100, 5, 64, 254, 250, 143, 186, 151, 251, 100, 141, 44, 45, 41, 8, 8, 7, 21, 14, 131, 4, 11, 5, 5, 7, 20, 25, 24, 82, 63, 251, 151, 186, 143, 0, 255, 255, 0, 127, 255, 236, 4, 129, 6, 179, 4, 38, 0, 47, 241, 0, 0, 7, 0, 109, 1, 161, 0, 157, 255, 255, 0, 180, 255, 236, 4, 31, 5, 202, 6, 38, 0, 48, 0, 0, 0, 6, 1, 91, 117, 1, 255, 255, 0, 180, 255, 236, 4, 31, 5, 244, 6, 38, 0, 48, 0, 0, 0, 6, 1, 95, 0, 66, 255, 255, 0, 180, 255, 236, 4, 31, 5, 242, 6, 38, 0, 48, 0, 0, 0, 6, 1, 92, 119, 5, 255, 255, 0, 180, 255, 236, 4, 31, 5, 202, 6, 38, 0, 48, 0, 0, 0, 6, 1, 97, 0, 5, 255, 255, 0, 180, 255, 236, 4, 31, 5, 205, 6, 38, 0, 48, 0, 0, 0, 6, 1, 90, 137, 4, 0, 1, 0, 180, 255, 236, 5, 63, 4, 147, 0, 39, 0, 0, 65, 35, 20, 6, 7, 6, 6, 7, 53, 35, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 23, 51, 17, 54, 54, 5, 63, 168, 13, 16, 14, 45, 32, 186, 12, 31, 20, 38, 111, 74, 53, 81, 28, 28, 28, 185, 53, 49, 49, 138, 85, 106, 162, 54, 11, 168, 147, 140, 4, 147, 53, 82, 28, 25, 34, 8, 141, 252, 248, 27, 47, 19, 36, 41, 28, 35, 34, 116, 88, 2, 133, 253, 125, 121, 173, 56, 56, 53, 89, 80, 149, 3, 34, 19, 180, 255, 255, 0, 180, 255, 236, 4, 91, 5, 244, 6, 38, 0, 48, 0, 0, 0, 7, 1, 99, 0, 133, 0, 5, 255, 255, 0, 180, 255, 236, 4, 31, 5, 165, 6, 38, 0, 48, 0, 0, 0, 6, 1, 94, 3, 245, 0, 1, 0, 180, 254, 79, 4, 68, 4, 58, 0, 56, 0, 0, 97, 51, 17, 35, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 4, 30, 1, 186, 15, 44, 29, 37, 98, 63, 53, 81, 28, 28, 28, 185, 53, 49, 49, 138, 85, 106, 162, 54, 10, 25, 43, 18, 38, 41, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 23, 21, 22, 66, 4, 58, 252, 248, 35, 58, 21, 27, 29, 28, 35, 34, 116, 88, 2, 133, 253, 125, 121, 173, 56, 56, 53, 89, 80, 140, 17, 37, 20, 42, 91, 45, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 32, 59, 27, 28, 51, 0, 255, 255, 0, 180, 255, 236, 4, 31, 6, 53, 6, 38, 0, 48, 0, 0, 0, 6, 1, 98, 255, 78, 255, 255, 0, 180, 255, 236, 4, 31, 5, 252, 6, 38, 0, 48, 0, 0, 0, 7, 1, 93, 0, 131, 0, 11, 255, 255, 0, 48, 0, 0, 4, 167, 5, 202, 6, 38, 0, 50, 0, 0, 0, 6, 1, 91, 124, 1, 255, 255, 0, 48, 0, 0, 4, 167, 5, 242, 6, 38, 0, 50, 0, 0, 0, 6, 1, 92, 126, 5, 255, 255, 0, 48, 0, 0, 4, 167, 5, 202, 6, 38, 0, 50, 0, 0, 0, 6, 1, 97, 6, 5, 255, 255, 0, 48, 0, 0, 4, 167, 5, 205, 6, 38, 0, 50, 0, 0, 0, 6, 1, 90, 144, 4, 255, 255, 0, 68, 254, 75, 4, 133, 5, 202, 6, 38, 0, 52, 0, 0, 0, 7, 1, 91, 0, 137, 0, 1, 255, 255, 0, 68, 254, 75, 4, 133, 5, 242, 6, 38, 0, 52, 0, 0, 0, 7, 1, 92, 0, 139, 0, 5, 255, 255, 0, 68, 254, 75, 4, 133, 5, 202, 6, 38, 0, 52, 0, 0, 0, 6, 1, 97, 19, 5, 255, 255, 0, 68, 254, 75, 4, 133, 5, 205, 6, 38, 0, 52, 0, 0, 0, 6, 1, 90, 157, 4, 255, 255, 0, 160, 0, 0, 4, 61, 5, 202, 6, 38, 0, 53, 0, 0, 0, 7, 1, 91, 0, 154, 0, 1, 255, 255, 0, 160, 0, 0, 4, 61, 5, 243, 6, 38, 0, 53, 0, 0, 0, 6, 1, 100, 37, 6, 255, 255, 0, 160, 0, 0, 4, 61, 5, 195, 6, 38, 0, 53, 0, 0, 0, 6, 1, 96, 36, 5, 0, 1, 1, 159, 4, 191, 3, 45, 5, 201, 0, 3, 0, 0, 65, 3, 35, 19, 3, 45, 175, 223, 248, 4, 191, 1, 10, 254, 246, 0, 0, 1, 1, 154, 4, 191, 3, 50, 5, 201, 0, 3, 0, 0, 65, 3, 51, 1, 2, 82, 184, 140, 1, 12, 5, 201, 254, 246, 1, 10, 0, 1, 0, 193, 4, 228, 3, 30, 5, 237, 0, 8, 0, 0, 65, 39, 35, 7, 21, 51, 55, 23, 51, 3, 30, 248, 112, 245, 152, 149, 150, 154, 4, 253, 240, 239, 26, 151, 151, 0, 0, 1, 0, 138, 4, 227, 3, 58, 5, 241, 0, 37, 0, 0, 65, 39, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 58, 103, 17, 13, 14, 38, 21, 39, 65, 31, 32, 67, 42, 46, 75, 27, 27, 31, 104, 1, 57, 44, 27, 44, 20, 19, 38, 22, 21, 52, 33, 45, 76, 27, 27, 31, 5, 211, 30, 23, 41, 15, 15, 18, 30, 18, 17, 30, 38, 31, 32, 83, 45, 24, 46, 65, 14, 10, 11, 25, 10, 11, 14, 36, 31, 30, 82, 0, 1, 1, 1, 5, 33, 3, 203, 5, 176, 0, 3, 0, 0, 65, 53, 33, 21, 3, 203, 253, 54, 5, 33, 143, 143, 0, 1, 1, 59, 4, 167, 3, 145, 5, 178, 0, 25, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 145, 150, 18, 18, 18, 55, 39, 40, 56, 18, 18, 18, 150, 43, 39, 39, 110, 69, 68, 110, 39, 39, 42, 5, 178, 30, 55, 20, 20, 24, 24, 20, 20, 55, 30, 59, 99, 35, 35, 39, 39, 35, 35, 99, 0, 0, 1, 1, 242, 4, 225, 2, 216, 5, 190, 0, 11, 0, 0, 65, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 242, 58, 57, 57, 58, 58, 57, 57, 58, 5, 78, 46, 63, 63, 46, 48, 64, 64, 0, 0, 2, 1, 31, 4, 240, 3, 168, 5, 197, 0, 11, 0, 23, 0, 0, 65, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 31, 55, 54, 54, 56, 56, 54, 54, 55, 1, 174, 55, 54, 54, 56, 56, 54, 54, 55, 5, 91, 45, 60, 60, 45, 45, 61, 61, 47, 44, 61, 61, 44, 45, 62, 62, 0, 0, 2, 1, 154, 4, 94, 3, 49, 5, 231, 0, 23, 0, 47, 0, 0, 65, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 154, 33, 28, 27, 75, 42, 42, 73, 28, 27, 32, 32, 27, 28, 73, 42, 42, 75, 27, 28, 33, 99, 18, 15, 14, 38, 21, 22, 37, 14, 14, 16, 16, 14, 14, 37, 22, 22, 38, 14, 15, 17, 5, 32, 43, 72, 25, 26, 28, 28, 26, 25, 72, 43, 43, 73, 27, 26, 30, 30, 26, 27, 73, 43, 25, 41, 15, 13, 15, 15, 14, 15, 41, 24, 23, 38, 14, 14, 16, 16, 15, 14, 38, 0, 2, 0, 246, 4, 226, 3, 214, 5, 239, 0, 3, 0, 7, 0, 0, 65, 3, 51, 1, 33, 3, 51, 19, 2, 245, 249, 169, 1, 49, 253, 220, 188, 150, 245, 5, 239, 254, 243, 1, 13, 254, 243, 1, 13, 0, 0, 1, 1, 48, 4, 227, 3, 155, 5, 237, 0, 8, 0, 0, 65, 39, 35, 21, 23, 51, 55, 53, 35, 2, 100, 151, 157, 251, 114, 254, 160, 5, 85, 152, 21, 245, 248, 18, 0, 1, 253, 39, 254, 168, 254, 13, 255, 133, 0, 11, 0, 0, 69, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 253, 39, 58, 57, 57, 58, 58, 57, 57, 58, 235, 46, 63, 63, 46, 48, 64, 64, 0, 1, 1, 205, 254, 77, 3, 3, 0, 0, 0, 27, 0, 0, 97, 35, 7, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 23, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 2, 118, 133, 31, 40, 60, 21, 20, 20, 27, 22, 23, 60, 34, 7, 61, 101, 37, 50, 54, 26, 21, 22, 55, 29, 134, 3, 12, 10, 11, 34, 25, 27, 37, 12, 12, 11, 107, 22, 19, 27, 86, 56, 43, 61, 20, 20, 24, 5, 0, 0, 1, 1, 142, 254, 79, 3, 1, 0, 56, 0, 28, 0, 0, 97, 39, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 2, 219, 87, 56, 91, 32, 32, 35, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 32, 29, 21, 57, 56, 27, 70, 39, 39, 83, 41, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 38, 69, 31, 22, 41, 0, 1, 1, 46, 255, 86, 2, 40, 0, 239, 0, 9, 0, 0, 101, 53, 35, 21, 20, 6, 7, 23, 54, 54, 2, 40, 176, 37, 37, 105, 71, 74, 169, 70, 73, 75, 127, 62, 72, 62, 183, 0, 255, 255, 0, 212, 0, 118, 3, 215, 3, 146, 4, 39, 0, 122, 255, 72, 255, 221, 0, 7, 0, 122, 0, 151, 255, 221, 0, 1, 0, 188, 254, 96, 4, 16, 4, 58, 0, 30, 0, 0, 65, 35, 17, 51, 17, 22, 22, 51, 50, 54, 55, 54, 54, 55, 23, 51, 17, 35, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 1, 117, 185, 185, 41, 114, 73, 52, 87, 36, 25, 44, 19, 9, 167, 186, 11, 32, 22, 33, 98, 65, 48, 81, 29, 30, 32, 4, 58, 250, 38, 1, 213, 36, 37, 24, 23, 17, 45, 27, 116, 4, 58, 252, 225, 28, 46, 19, 29, 31, 28, 37, 37, 128, 100, 255, 255, 0, 241, 0, 152, 3, 254, 3, 181, 4, 39, 0, 123, 255, 101, 0, 0, 0, 7, 0, 123, 0, 190, 0, 0, 0, 1, 0, 203, 0, 0, 4, 85, 4, 58, 0, 9, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 203, 1, 112, 254, 144, 3, 138, 254, 159, 4, 58, 161, 253, 7, 160, 160, 3, 154, 0, 2, 0, 128, 255, 237, 4, 76, 5, 176, 0, 3, 0, 28, 0, 0, 97, 17, 35, 17, 1, 17, 20, 6, 7, 6, 6, 35, 34, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 1, 57, 185, 3, 19, 15, 18, 18, 60, 46, 68, 80, 186, 50, 44, 44, 123, 73, 87, 129, 43, 42, 41, 5, 176, 250, 80, 5, 176, 251, 147, 44, 71, 24, 25, 27, 90, 99, 87, 128, 42, 42, 41, 46, 44, 44, 127, 81, 4, 109, 0, 0, 4, 0, 80, 254, 78, 4, 79, 5, 191, 0, 29, 0, 39, 0, 51, 0, 63, 0, 0, 65, 21, 51, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 33, 21, 51, 17, 35, 21, 33, 53, 35, 17, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, 174, 222, 39, 34, 34, 92, 52, 14, 48, 27, 27, 52, 17, 13, 23, 44, 21, 30, 60, 33, 100, 157, 55, 54, 57, 252, 16, 234, 239, 2, 136, 223, 202, 55, 56, 55, 56, 56, 55, 56, 55, 2, 66, 54, 56, 56, 56, 56, 56, 56, 54, 4, 58, 161, 252, 98, 77, 103, 30, 31, 25, 1, 2, 1, 5, 3, 158, 4, 6, 2, 3, 2, 56, 55, 55, 159, 104, 4, 63, 161, 253, 7, 160, 160, 3, 154, 1, 24, 45, 61, 61, 45, 45, 63, 63, 44, 45, 61, 61, 45, 45, 63, 63, 0, 1, 1, 200, 0, 0, 4, 11, 6, 43, 0, 21, 0, 0, 97, 51, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 1, 200, 186, 36, 35, 35, 103, 68, 29, 46, 18, 23, 37, 71, 37, 100, 160, 56, 57, 61, 4, 102, 69, 112, 39, 39, 42, 6, 5, 142, 9, 12, 60, 57, 58, 169, 109, 0, 0, 1, 0, 176, 254, 75, 3, 42, 4, 58, 0, 29, 0, 0, 65, 21, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 1, 4, 1, 108, 39, 34, 34, 91, 52, 14, 49, 27, 27, 51, 17, 13, 24, 44, 22, 29, 59, 33, 100, 157, 55, 54, 57, 4, 58, 161, 252, 96, 77, 105, 32, 32, 27, 1, 2, 1, 5, 3, 152, 4, 6, 2, 3, 2, 57, 55, 54, 160, 104, 4, 65, 0, 0, 2, 1, 173, 254, 134, 2, 221, 255, 171, 0, 23, 0, 35, 0, 0, 69, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 54, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 1, 173, 24, 21, 21, 56, 32, 31, 54, 21, 20, 24, 24, 20, 21, 54, 31, 32, 56, 21, 21, 24, 86, 1, 39, 28, 26, 38, 38, 26, 28, 39, 233, 32, 54, 19, 19, 21, 21, 19, 19, 54, 32, 32, 55, 20, 19, 22, 22, 19, 20, 55, 32, 29, 39, 39, 29, 28, 37, 38, 0, 1, 252, 202, 4, 188, 253, 251, 6, 22, 0, 3, 0, 0, 65, 3, 35, 19, 253, 251, 127, 178, 179, 4, 188, 1, 90, 254, 166, 0, 0, 1, 253, 104, 4, 188, 254, 150, 6, 23, 0, 3, 0, 0, 65, 3, 51, 19, 253, 234, 130, 116, 186, 6, 23, 254, 165, 1, 91, 0, 255, 255, 252, 136, 4, 227, 255, 56, 5, 241, 4, 7, 1, 93, 251, 254, 0, 0, 0, 1, 253, 89, 4, 217, 254, 143, 6, 116, 0, 27, 0, 0, 65, 51, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 7, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 253, 111, 132, 1, 28, 56, 22, 22, 27, 49, 46, 38, 105, 65, 7, 33, 60, 23, 23, 27, 21, 21, 18, 52, 33, 4, 217, 71, 4, 20, 18, 18, 54, 38, 48, 75, 24, 20, 21, 106, 8, 9, 9, 30, 22, 22, 27, 8, 7, 8, 2, 0, 0, 2, 252, 5, 4, 228, 254, 229, 5, 238, 0, 3, 0, 7, 0, 0, 65, 3, 35, 1, 33, 3, 35, 19, 253, 224, 250, 225, 1, 50, 1, 174, 189, 207, 246, 4, 228, 1, 10, 254, 246, 1, 10, 254, 246, 0, 0, 1, 2, 41, 4, 247, 3, 45, 6, 122, 0, 3, 0, 0, 65, 3, 51, 19, 2, 106, 65, 90, 170, 6, 122, 254, 125, 1, 131, 0, 0, 3, 1, 19, 4, 226, 3, 243, 6, 191, 0, 3, 0, 15, 0, 27, 0, 0, 65, 3, 51, 19, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, 116, 48, 135, 118, 253, 210, 57, 57, 57, 58, 58, 57, 57, 57, 1, 251, 57, 57, 57, 58, 58, 57, 57, 57, 6, 191, 254, 248, 1, 8, 254, 145, 46, 64, 64, 46, 48, 64, 64, 48, 46, 64, 64, 46, 48, 64, 64, 255, 255, 2, 48, 2, 107, 3, 22, 3, 73, 4, 6, 0, 100, 56, 0, 0, 1, 0, 181, 0, 0, 4, 48, 5, 176, 0, 5, 0, 0, 65, 53, 33, 17, 51, 17, 4, 48, 252, 133, 186, 5, 24, 152, 250, 80, 5, 24, 0, 2, 0, 46, 0, 0, 4, 180, 5, 176, 0, 3, 0, 8, 0, 0, 65, 1, 33, 9, 2, 55, 23, 1, 2, 52, 253, 250, 4, 134, 254, 32, 254, 74, 1, 69, 30, 27, 1, 43, 5, 176, 250, 80, 5, 176, 250, 231, 3, 195, 89, 90, 252, 62, 0, 3, 0, 106, 255, 236, 4, 97, 5, 196, 0, 3, 0, 29, 0, 55, 0, 0, 65, 53, 33, 21, 5, 53, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 21, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 77, 254, 48, 2, 228, 2, 57, 63, 63, 190, 133, 121, 180, 65, 73, 66, 2, 2, 64, 66, 63, 185, 129, 132, 192, 59, 64, 59, 183, 2, 33, 43, 38, 119, 88, 87, 119, 36, 45, 40, 37, 46, 38, 117, 87, 85, 119, 35, 48, 36, 2, 148, 151, 151, 16, 166, 118, 240, 96, 96, 116, 97, 90, 101, 249, 129, 166, 122, 246, 97, 89, 110, 117, 91, 95, 242, 1, 31, 168, 86, 194, 73, 68, 80, 82, 60, 77, 197, 85, 168, 84, 193, 79, 61, 82, 78, 58, 80, 196, 0, 1, 0, 54, 0, 0, 4, 160, 5, 176, 0, 6, 0, 0, 65, 1, 51, 1, 35, 1, 51, 2, 106, 1, 121, 189, 254, 27, 161, 254, 28, 189, 4, 156, 251, 100, 5, 176, 250, 80, 0, 3, 0, 145, 0, 0, 4, 55, 5, 176, 0, 3, 0, 7, 0, 11, 0, 0, 119, 21, 33, 53, 1, 21, 33, 53, 1, 21, 33, 53, 145, 3, 166, 252, 175, 2, 242, 252, 187, 3, 150, 151, 151, 151, 2, 167, 152, 152, 2, 114, 152, 152, 0, 1, 0, 162, 0, 0, 4, 42, 5, 176, 0, 7, 0, 0, 97, 17, 33, 17, 51, 17, 33, 17, 4, 42, 252, 120, 185, 2, 22, 5, 176, 250, 80, 5, 24, 250, 232, 0, 0, 1, 0, 112, 0, 0, 4, 111, 5, 176, 0, 12, 0, 0, 65, 53, 1, 33, 53, 33, 21, 1, 1, 21, 33, 53, 33, 3, 25, 254, 61, 2, 231, 252, 51, 1, 229, 254, 27, 3, 255, 252, 230, 2, 205, 25, 2, 50, 152, 144, 253, 185, 253, 183, 144, 152, 0, 3, 0, 69, 0, 0, 4, 135, 5, 176, 0, 29, 0, 42, 0, 55, 0, 0, 65, 53, 35, 21, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 21, 51, 53, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 1, 52, 54, 55, 54, 54, 55, 17, 38, 38, 39, 38, 38, 37, 20, 6, 7, 6, 6, 7, 17, 22, 22, 23, 22, 22, 2, 195, 185, 98, 165, 61, 61, 68, 68, 61, 61, 165, 98, 185, 97, 165, 61, 60, 69, 69, 60, 61, 165, 253, 216, 36, 35, 34, 100, 65, 65, 100, 34, 35, 36, 2, 211, 36, 34, 35, 99, 64, 64, 99, 35, 34, 36, 4, 226, 206, 206, 7, 83, 69, 69, 188, 111, 112, 188, 69, 69, 82, 7, 196, 196, 7, 84, 70, 69, 187, 112, 111, 186, 69, 69, 82, 253, 249, 79, 132, 49, 49, 59, 7, 253, 18, 6, 59, 49, 48, 133, 82, 80, 133, 49, 49, 59, 7, 2, 238, 7, 59, 48, 49, 131, 0, 0, 1, 0, 101, 0, 0, 4, 114, 5, 176, 0, 35, 0, 0, 65, 17, 35, 17, 38, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 23, 17, 51, 17, 54, 54, 55, 54, 54, 53, 17, 35, 17, 20, 6, 7, 6, 6, 2, 199, 185, 54, 89, 31, 32, 34, 185, 62, 56, 56, 156, 95, 185, 94, 158, 56, 56, 63, 185, 35, 31, 32, 89, 1, 223, 3, 209, 252, 48, 12, 56, 45, 45, 124, 80, 2, 102, 253, 154, 118, 183, 65, 65, 76, 11, 254, 188, 1, 68, 11, 76, 65, 65, 183, 118, 2, 102, 253, 154, 80, 125, 45, 45, 56, 0, 1, 0, 97, 0, 0, 4, 108, 5, 196, 0, 59, 0, 0, 101, 21, 33, 53, 33, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 33, 21, 33, 53, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 2, 168, 1, 196, 254, 246, 62, 98, 34, 33, 36, 74, 67, 68, 191, 117, 117, 190, 67, 68, 73, 36, 35, 34, 99, 62, 254, 250, 1, 196, 78, 115, 33, 22, 23, 46, 43, 42, 122, 77, 78, 124, 43, 42, 45, 22, 21, 33, 111, 193, 193, 151, 47, 135, 80, 80, 177, 89, 79, 139, 235, 85, 84, 95, 95, 84, 85, 235, 139, 79, 89, 176, 80, 81, 135, 47, 151, 193, 18, 119, 99, 65, 166, 99, 81, 117, 181, 62, 61, 64, 64, 61, 62, 181, 117, 81, 99, 167, 66, 98, 119, 0, 0, 2, 0, 129, 255, 235, 4, 138, 4, 78, 0, 47, 0, 76, 0, 0, 65, 35, 7, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 37, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 20, 20, 21, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 3, 239, 112, 46, 3, 20, 48, 27, 45, 108, 65, 99, 151, 51, 51, 52, 52, 51, 51, 150, 98, 64, 108, 44, 27, 48, 20, 9, 25, 16, 27, 74, 47, 32, 59, 31, 23, 10, 27, 15, 18, 29, 10, 11, 12, 253, 75, 28, 32, 31, 101, 72, 43, 73, 31, 30, 48, 19, 14, 33, 20, 34, 89, 56, 71, 100, 31, 32, 28, 4, 58, 119, 8, 27, 45, 17, 28, 30, 88, 77, 78, 213, 125, 21, 112, 191, 69, 70, 79, 28, 27, 17, 43, 26, 28, 44, 16, 27, 26, 13, 21, 138, 2, 4, 13, 15, 15, 51, 38, 223, 21, 85, 155, 60, 59, 70, 21, 19, 19, 52, 31, 254, 32, 19, 19, 13, 24, 42, 17, 30, 34, 60, 51, 50, 134, 0, 2, 0, 174, 254, 128, 4, 91, 5, 196, 0, 38, 0, 78, 0, 0, 65, 34, 6, 7, 6, 6, 21, 17, 51, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 3, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 2, 107, 92, 161, 60, 61, 71, 186, 31, 72, 38, 39, 81, 40, 98, 166, 61, 61, 68, 56, 53, 29, 73, 43, 32, 55, 22, 37, 40, 61, 56, 56, 158, 101, 84, 143, 61, 95, 33, 33, 34, 40, 37, 37, 107, 67, 50, 88, 36, 33, 54, 21, 40, 35, 34, 95, 55, 58, 91, 31, 31, 32, 29, 30, 30, 94, 5, 196, 64, 55, 55, 147, 82, 250, 79, 1, 203, 25, 37, 11, 12, 11, 59, 57, 57, 165, 107, 85, 142, 52, 29, 45, 16, 17, 43, 25, 42, 105, 58, 87, 144, 53, 52, 57, 253, 150, 152, 50, 40, 41, 102, 53, 63, 107, 38, 39, 43, 19, 16, 15, 41, 25, 3, 59, 53, 92, 34, 34, 39, 40, 33, 33, 86, 46, 51, 84, 30, 30, 34, 0, 1, 0, 71, 254, 96, 4, 150, 4, 58, 0, 11, 0, 0, 65, 1, 7, 35, 39, 1, 35, 1, 17, 51, 17, 1, 3, 216, 254, 179, 25, 1, 24, 254, 172, 190, 1, 203, 186, 1, 202, 4, 58, 252, 240, 98, 98, 3, 16, 251, 252, 254, 42, 1, 207, 4, 11, 0, 0, 2, 0, 120, 255, 236, 4, 102, 6, 28, 0, 57, 0, 83, 0, 0, 65, 20, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 2, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 19, 53, 52, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 7, 30, 27, 27, 76, 47, 4, 72, 127, 46, 47, 54, 68, 65, 65, 187, 120, 118, 186, 65, 64, 68, 223, 220, 67, 89, 27, 27, 23, 28, 25, 25, 69, 42, 40, 78, 36, 36, 63, 23, 41, 75, 159, 80, 86, 140, 49, 50, 54, 43, 40, 40, 40, 120, 81, 71, 115, 41, 41, 45, 38, 39, 39, 118, 81, 82, 120, 39, 40, 38, 4, 245, 47, 81, 34, 35, 54, 19, 11, 17, 82, 60, 60, 152, 87, 21, 113, 193, 71, 71, 81, 81, 71, 71, 193, 113, 21, 207, 1, 20, 73, 23, 48, 24, 24, 47, 22, 31, 51, 18, 18, 20, 13, 9, 10, 22, 9, 130, 38, 47, 40, 38, 38, 110, 252, 195, 21, 76, 139, 53, 52, 61, 1, 12, 75, 52, 53, 125, 63, 21, 77, 138, 51, 52, 61, 61, 52, 51, 138, 0, 1, 0, 139, 255, 236, 4, 96, 4, 77, 0, 82, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 51, 53, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 139, 72, 66, 65, 180, 108, 97, 174, 70, 62, 86, 1, 185, 46, 40, 41, 112, 66, 74, 114, 38, 39, 40, 28, 28, 21, 57, 35, 27, 62, 35, 243, 243, 38, 64, 26, 25, 42, 16, 33, 30, 33, 35, 35, 108, 75, 58, 104, 39, 39, 47, 185, 1, 76, 64, 65, 171, 95, 108, 175, 61, 62, 66, 34, 32, 25, 68, 41, 42, 70, 26, 40, 41, 1, 48, 78, 120, 41, 42, 43, 44, 42, 37, 130, 87, 39, 69, 26, 27, 30, 27, 24, 23, 64, 37, 40, 61, 21, 15, 22, 6, 5, 4, 148, 6, 5, 6, 16, 10, 21, 59, 37, 34, 60, 23, 22, 26, 26, 22, 23, 63, 37, 75, 119, 42, 41, 44, 40, 39, 40, 117, 78, 42, 77, 31, 25, 41, 15, 12, 35, 23, 33, 92, 0, 1, 0, 117, 254, 129, 4, 47, 5, 176, 0, 56, 0, 0, 65, 33, 21, 33, 1, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 52, 38, 39, 38, 38, 39, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 1, 4, 47, 252, 70, 2, 212, 254, 206, 92, 134, 43, 44, 42, 38, 41, 40, 127, 89, 181, 41, 60, 19, 18, 17, 16, 16, 12, 34, 21, 98, 28, 63, 26, 26, 35, 1, 41, 35, 35, 96, 54, 221, 44, 68, 23, 23, 24, 41, 39, 38, 110, 69, 1, 153, 5, 176, 152, 254, 196, 87, 164, 76, 76, 135, 57, 81, 122, 44, 45, 59, 16, 35, 8, 24, 14, 13, 31, 17, 25, 48, 25, 19, 42, 24, 84, 22, 69, 40, 39, 86, 39, 62, 75, 23, 23, 26, 12, 50, 9, 31, 25, 26, 74, 50, 78, 130, 60, 60, 117, 66, 1, 171, 0, 0, 1, 0, 164, 254, 97, 4, 43, 4, 78, 0, 32, 0, 0, 115, 51, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 6, 6, 7, 6, 6, 7, 39, 39, 35, 164, 186, 19, 52, 32, 35, 86, 52, 63, 95, 31, 33, 33, 186, 54, 50, 50, 142, 90, 65, 113, 47, 33, 56, 23, 1, 12, 167, 3, 40, 32, 51, 19, 19, 21, 29, 31, 32, 104, 73, 251, 184, 4, 76, 115, 159, 50, 49, 44, 1, 33, 31, 22, 58, 35, 14, 146, 0, 3, 0, 185, 255, 236, 4, 24, 5, 197, 0, 25, 0, 40, 0, 55, 0, 0, 69, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 55, 34, 38, 39, 38, 38, 53, 53, 33, 21, 20, 6, 7, 6, 6, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 2, 106, 103, 160, 55, 55, 57, 58, 55, 55, 161, 103, 102, 161, 55, 55, 58, 59, 56, 55, 161, 102, 64, 94, 31, 30, 29, 1, 237, 31, 33, 30, 90, 254, 203, 35, 36, 30, 88, 57, 57, 87, 30, 37, 36, 20, 77, 74, 73, 215, 138, 1, 85, 138, 215, 75, 74, 77, 77, 74, 75, 215, 138, 254, 171, 138, 215, 73, 74, 77, 150, 52, 50, 49, 145, 92, 141, 141, 97, 149, 49, 46, 47, 2, 168, 129, 102, 154, 49, 40, 41, 41, 39, 48, 155, 103, 129, 0, 0, 1, 0, 184, 255, 236, 4, 58, 4, 58, 0, 26, 0, 0, 83, 21, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 3, 184, 1, 96, 42, 40, 39, 113, 72, 37, 72, 35, 23, 48, 25, 41, 29, 78, 45, 33, 60, 23, 24, 27, 1, 4, 58, 161, 253, 179, 101, 135, 41, 41, 34, 8, 12, 8, 24, 18, 130, 17, 28, 10, 19, 18, 75, 65, 2, 248, 0, 1, 0, 57, 255, 239, 4, 92, 5, 238, 0, 45, 0, 0, 97, 19, 55, 23, 19, 22, 22, 23, 22, 22, 51, 50, 54, 55, 55, 6, 6, 35, 34, 38, 39, 38, 38, 39, 1, 38, 38, 39, 38, 38, 35, 34, 6, 7, 23, 54, 54, 51, 50, 22, 23, 22, 22, 23, 23, 1, 1, 7, 246, 29, 45, 167, 24, 57, 37, 36, 92, 59, 12, 36, 11, 2, 12, 17, 17, 24, 42, 17, 17, 28, 11, 254, 150, 15, 49, 37, 38, 106, 72, 25, 60, 18, 1, 13, 40, 13, 34, 55, 22, 22, 34, 14, 55, 254, 117, 2, 174, 119, 118, 254, 75, 66, 100, 33, 34, 34, 9, 6, 151, 3, 2, 24, 21, 20, 54, 35, 3, 182, 40, 95, 41, 40, 54, 10, 5, 142, 1, 4, 33, 27, 27, 69, 35, 143, 251, 248, 0, 1, 0, 175, 254, 119, 4, 46, 5, 196, 0, 90, 0, 0, 65, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 52, 38, 39, 38, 38, 39, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 51, 53, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 3, 247, 26, 48, 140, 71, 126, 200, 70, 71, 75, 38, 36, 35, 102, 65, 79, 126, 44, 45, 47, 72, 66, 66, 186, 114, 58, 43, 63, 19, 15, 16, 13, 12, 13, 36, 24, 97, 27, 62, 27, 26, 35, 1, 41, 35, 36, 95, 54, 111, 67, 123, 46, 47, 55, 31, 30, 22, 63, 40, 51, 132, 79, 142, 142, 84, 128, 45, 33, 48, 14, 16, 14, 41, 44, 43, 135, 95, 61, 113, 5, 8, 149, 17, 22, 45, 44, 44, 128, 83, 49, 87, 37, 37, 59, 21, 22, 72, 49, 49, 126, 76, 112, 154, 51, 52, 65, 22, 13, 10, 20, 15, 11, 29, 19, 29, 45, 20, 21, 42, 27, 84, 22, 68, 40, 39, 84, 39, 61, 74, 23, 22, 25, 13, 25, 12, 46, 37, 37, 102, 68, 60, 98, 37, 28, 43, 16, 20, 19, 152, 20, 20, 13, 37, 23, 22, 54, 30, 39, 68, 26, 25, 30, 21, 0, 0, 1, 0, 89, 255, 237, 4, 169, 4, 58, 0, 29, 0, 0, 65, 53, 33, 21, 51, 17, 51, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 4, 76, 252, 13, 132, 185, 1, 110, 32, 31, 30, 90, 57, 47, 87, 47, 41, 17, 49, 26, 22, 37, 14, 14, 16, 3, 161, 153, 153, 252, 95, 3, 161, 253, 117, 84, 114, 34, 35, 30, 19, 32, 130, 9, 16, 8, 14, 14, 51, 44, 2, 149, 0, 2, 0, 165, 254, 96, 4, 70, 4, 78, 0, 27, 0, 53, 0, 0, 65, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 51, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 39, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 70, 57, 57, 58, 175, 117, 89, 156, 64, 68, 88, 185, 22, 49, 27, 48, 115, 67, 102, 155, 53, 52, 54, 185, 32, 34, 35, 109, 76, 51, 84, 33, 34, 52, 19, 55, 52, 34, 87, 52, 77, 106, 33, 33, 30, 1, 244, 21, 126, 212, 78, 77, 88, 57, 59, 62, 197, 149, 252, 30, 2, 16, 23, 40, 15, 26, 28, 78, 70, 69, 191, 133, 21, 75, 134, 51, 51, 59, 23, 21, 20, 57, 33, 1, 37, 90, 160, 52, 33, 38, 70, 59, 59, 156, 0, 0, 1, 0, 120, 254, 89, 4, 48, 4, 78, 0, 63, 0, 0, 65, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 2, 102, 119, 183, 63, 63, 66, 67, 66, 65, 196, 130, 54, 82, 28, 27, 29, 1, 32, 23, 24, 54, 22, 77, 45, 90, 37, 36, 46, 1, 52, 49, 49, 138, 86, 92, 136, 44, 45, 43, 35, 38, 37, 117, 81, 71, 106, 35, 35, 36, 175, 69, 60, 61, 168, 4, 78, 88, 74, 75, 195, 108, 42, 105, 175, 66, 67, 88, 19, 7, 18, 13, 13, 37, 26, 40, 60, 22, 23, 31, 10, 123, 20, 60, 40, 40, 99, 59, 66, 87, 28, 28, 33, 12, 13, 69, 49, 49, 123, 68, 42, 70, 138, 56, 55, 69, 38, 32, 33, 88, 50, 93, 146, 51, 50, 53, 0, 2, 0, 109, 255, 236, 4, 134, 4, 58, 0, 28, 0, 54, 0, 0, 65, 53, 33, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 4, 134, 253, 201, 114, 179, 62, 62, 65, 65, 62, 62, 180, 115, 114, 180, 62, 61, 65, 35, 34, 25, 66, 40, 253, 187, 36, 37, 36, 112, 76, 77, 113, 37, 36, 36, 35, 37, 37, 112, 76, 77, 113, 36, 37, 36, 3, 161, 153, 82, 71, 71, 195, 112, 22, 117, 200, 74, 74, 84, 86, 71, 71, 184, 99, 23, 77, 137, 57, 42, 72, 30, 254, 112, 22, 76, 137, 52, 52, 61, 61, 52, 52, 137, 76, 22, 80, 145, 55, 55, 64, 64, 55, 55, 145, 0, 1, 0, 173, 255, 235, 4, 50, 4, 58, 0, 28, 0, 0, 65, 53, 33, 21, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 19, 4, 50, 252, 123, 1, 104, 40, 39, 38, 111, 72, 30, 59, 29, 29, 59, 30, 41, 27, 77, 44, 33, 58, 22, 22, 27, 1, 3, 156, 158, 158, 253, 178, 101, 135, 41, 42, 36, 6, 8, 7, 27, 22, 131, 17, 27, 11, 19, 19, 75, 64, 2, 88, 0, 1, 0, 158, 255, 236, 4, 63, 4, 58, 0, 36, 0, 0, 65, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 35, 22, 18, 23, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 1, 87, 185, 62, 59, 59, 171, 110, 126, 178, 56, 56, 52, 18, 16, 16, 41, 23, 195, 52, 69, 3, 34, 35, 36, 110, 77, 60, 99, 35, 35, 38, 4, 58, 253, 151, 125, 183, 59, 60, 58, 96, 81, 80, 211, 114, 82, 147, 65, 65, 113, 48, 125, 254, 251, 134, 78, 154, 61, 62, 77, 37, 41, 40, 126, 89, 0, 0, 2, 0, 110, 254, 34, 4, 119, 4, 58, 0, 46, 0, 65, 0, 0, 69, 17, 51, 17, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 38, 38, 39, 38, 38, 53, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 37, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 20, 6, 7, 6, 6, 2, 13, 185, 117, 164, 52, 52, 48, 57, 50, 50, 134, 78, 64, 94, 30, 31, 30, 63, 88, 27, 27, 25, 2, 19, 20, 19, 62, 45, 101, 55, 87, 30, 40, 39, 45, 50, 50, 157, 1, 42, 10, 11, 7, 22, 14, 46, 68, 23, 22, 23, 2, 27, 30, 30, 94, 14, 254, 48, 1, 207, 15, 103, 76, 76, 188, 101, 112, 197, 73, 72, 84, 41, 34, 35, 89, 48, 253, 76, 18, 83, 55, 54, 128, 64, 52, 108, 53, 52, 98, 41, 133, 39, 98, 56, 73, 174, 96, 102, 189, 75, 76, 103, 140, 2, 189, 23, 35, 12, 8, 9, 68, 54, 55, 138, 70, 63, 129, 55, 56, 82, 0, 0, 1, 0, 97, 254, 40, 4, 128, 4, 58, 0, 39, 0, 0, 65, 35, 17, 38, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 23, 17, 51, 17, 54, 54, 55, 54, 54, 53, 52, 2, 39, 35, 22, 18, 23, 20, 6, 7, 6, 6, 7, 2, 188, 185, 53, 86, 30, 31, 33, 185, 56, 54, 54, 155, 99, 185, 125, 172, 54, 53, 48, 47, 32, 195, 38, 49, 2, 29, 31, 32, 102, 73, 4, 58, 252, 84, 15, 67, 56, 55, 156, 103, 1, 232, 254, 26, 140, 215, 76, 76, 88, 14, 254, 53, 1, 201, 14, 105, 79, 79, 198, 107, 164, 1, 0, 95, 125, 255, 0, 134, 68, 138, 58, 59, 86, 18, 0, 0, 1, 0, 79, 255, 236, 4, 137, 4, 58, 0, 82, 0, 0, 65, 35, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 35, 22, 18, 23, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 35, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 54, 18, 1, 113, 194, 23, 38, 13, 11, 11, 30, 35, 35, 114, 83, 57, 92, 33, 19, 31, 12, 12, 30, 19, 34, 91, 58, 56, 89, 33, 40, 50, 12, 9, 8, 14, 12, 13, 36, 21, 194, 45, 58, 2, 4, 5, 6, 23, 16, 13, 34, 21, 27, 45, 17, 16, 23, 6, 4, 3, 186, 4, 3, 6, 24, 17, 17, 45, 26, 34, 46, 14, 15, 12, 2, 58, 4, 58, 55, 130, 76, 58, 131, 72, 111, 209, 81, 81, 98, 45, 43, 24, 62, 37, 37, 62, 24, 43, 45, 46, 41, 49, 137, 81, 53, 115, 58, 79, 142, 62, 68, 120, 51, 126, 254, 251, 135, 53, 102, 45, 54, 91, 32, 25, 28, 27, 27, 26, 78, 52, 29, 65, 37, 1, 43, 254, 213, 38, 68, 29, 52, 77, 25, 26, 26, 71, 60, 60, 155, 84, 135, 1, 5, 0, 2, 0, 152, 255, 236, 4, 153, 5, 198, 0, 55, 0, 75, 0, 0, 65, 39, 6, 6, 7, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 21, 20, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 53, 17, 7, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 54, 54, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 38, 38, 39, 38, 38, 4, 153, 9, 32, 68, 35, 46, 43, 43, 126, 79, 74, 122, 44, 44, 50, 70, 64, 63, 179, 110, 31, 30, 31, 94, 60, 62, 98, 34, 34, 36, 186, 65, 59, 58, 166, 102, 98, 159, 56, 56, 62, 39, 72, 253, 172, 21, 19, 19, 55, 34, 39, 57, 18, 19, 19, 71, 112, 38, 39, 40, 2, 115, 149, 8, 13, 3, 1, 97, 88, 138, 48, 48, 51, 47, 45, 45, 129, 81, 15, 100, 174, 67, 68, 90, 16, 166, 73, 112, 37, 38, 39, 1, 41, 39, 38, 111, 69, 1, 80, 2, 254, 178, 103, 168, 59, 60, 65, 60, 58, 58, 170, 109, 160, 4, 16, 1, 243, 17, 50, 71, 23, 23, 22, 26, 25, 27, 82, 55, 254, 170, 16, 66, 46, 46, 114, 0, 1, 0, 54, 0, 0, 4, 164, 5, 187, 0, 46, 0, 0, 65, 3, 7, 39, 3, 38, 38, 39, 38, 38, 35, 34, 6, 7, 23, 54, 54, 51, 50, 22, 23, 22, 22, 23, 1, 17, 51, 17, 1, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 3, 57, 180, 24, 24, 179, 26, 57, 31, 32, 70, 39, 29, 53, 27, 23, 7, 22, 14, 19, 35, 15, 13, 22, 8, 1, 42, 184, 1, 40, 6, 16, 9, 17, 41, 23, 15, 22, 7, 22, 27, 53, 28, 40, 70, 31, 32, 56, 4, 215, 254, 105, 88, 88, 1, 151, 63, 88, 27, 27, 23, 7, 17, 149, 5, 4, 11, 11, 10, 28, 18, 253, 119, 253, 192, 2, 68, 2, 133, 14, 23, 9, 16, 16, 4, 5, 149, 17, 7, 23, 27, 27, 88, 0, 2, 0, 46, 255, 236, 4, 150, 4, 58, 0, 43, 0, 89, 0, 0, 65, 53, 33, 21, 51, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 3, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 35, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 54, 54, 55, 33, 22, 22, 4, 150, 251, 152, 105, 33, 41, 3, 4, 9, 53, 44, 31, 83, 52, 57, 90, 34, 19, 31, 12, 12, 34, 21, 33, 89, 55, 78, 107, 33, 16, 24, 7, 7, 7, 10, 10, 10, 28, 16, 112, 3, 3, 3, 8, 5, 12, 39, 29, 26, 44, 17, 16, 23, 6, 5, 4, 186, 5, 4, 6, 19, 13, 17, 48, 29, 16, 27, 10, 19, 21, 6, 2, 2, 2, 47, 38, 1, 243, 38, 47, 3, 161, 153, 153, 106, 251, 140, 31, 61, 30, 82, 138, 44, 31, 35, 44, 43, 24, 63, 38, 40, 66, 25, 40, 41, 75, 63, 32, 75, 41, 39, 84, 43, 68, 130, 60, 64, 120, 55, 254, 14, 34, 66, 29, 23, 41, 18, 41, 49, 24, 25, 24, 73, 48, 31, 74, 42, 251, 251, 43, 75, 32, 41, 65, 23, 31, 31, 16, 14, 24, 88, 54, 24, 54, 27, 124, 253, 121, 121, 253, 0, 0, 1, 0, 42, 255, 245, 4, 124, 5, 176, 0, 39, 0, 0, 65, 53, 33, 21, 33, 17, 51, 17, 54, 54, 51, 50, 22, 23, 22, 22, 23, 20, 6, 7, 6, 6, 35, 23, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 17, 4, 61, 251, 237, 1, 91, 184, 30, 60, 32, 63, 95, 32, 39, 37, 1, 22, 24, 25, 81, 58, 2, 91, 143, 49, 55, 56, 60, 58, 58, 169, 108, 31, 61, 30, 5, 24, 152, 152, 250, 232, 2, 175, 2, 4, 34, 32, 38, 118, 75, 60, 97, 34, 34, 37, 145, 48, 46, 51, 158, 104, 106, 171, 59, 59, 64, 4, 2, 1, 199, 0, 1, 0, 129, 255, 236, 4, 107, 5, 197, 0, 55, 0, 0, 65, 35, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 33, 53, 33, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 107, 185, 10, 43, 37, 38, 109, 75, 79, 119, 40, 41, 41, 2, 59, 253, 197, 41, 41, 40, 119, 79, 75, 109, 37, 37, 44, 10, 185, 10, 72, 62, 63, 176, 114, 117, 187, 65, 66, 70, 70, 66, 65, 187, 117, 114, 176, 63, 62, 72, 1, 183, 77, 115, 38, 39, 39, 67, 59, 59, 161, 95, 88, 152, 75, 94, 161, 59, 58, 67, 42, 40, 40, 118, 75, 110, 173, 60, 60, 63, 87, 78, 78, 218, 131, 254, 199, 131, 217, 78, 79, 87, 67, 61, 61, 169, 0, 0, 2, 0, 30, 0, 0, 4, 157, 5, 176, 0, 46, 0, 61, 0, 0, 65, 33, 3, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 19, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 2, 235, 253, 204, 3, 3, 3, 3, 10, 7, 7, 17, 11, 13, 34, 20, 22, 32, 56, 89, 34, 26, 40, 14, 13, 17, 5, 4, 4, 1, 197, 1, 20, 84, 129, 43, 43, 44, 44, 43, 43, 129, 84, 91, 91, 43, 61, 19, 19, 17, 17, 18, 19, 61, 44, 91, 5, 176, 253, 84, 69, 124, 54, 61, 104, 41, 38, 59, 20, 25, 26, 151, 46, 44, 34, 98, 60, 52, 121, 69, 56, 125, 67, 2, 20, 250, 232, 68, 60, 59, 162, 94, 94, 162, 60, 59, 69, 152, 50, 41, 41, 104, 54, 55, 105, 41, 42, 51, 0, 2, 0, 131, 0, 0, 4, 139, 5, 176, 0, 24, 0, 39, 0, 0, 115, 51, 17, 51, 17, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 35, 17, 35, 17, 35, 1, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 131, 184, 250, 233, 91, 137, 46, 45, 46, 46, 45, 46, 137, 91, 49, 184, 250, 184, 2, 106, 49, 51, 69, 21, 21, 19, 18, 21, 22, 69, 51, 49, 2, 161, 253, 95, 65, 57, 57, 155, 90, 90, 152, 56, 55, 62, 2, 105, 253, 137, 2, 119, 252, 255, 44, 36, 36, 94, 51, 51, 95, 37, 37, 45, 0, 1, 0, 67, 0, 0, 4, 104, 5, 176, 0, 29, 0, 0, 65, 53, 33, 21, 33, 17, 51, 17, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 38, 6, 7, 17, 4, 64, 252, 3, 1, 90, 185, 26, 54, 28, 61, 89, 30, 29, 28, 185, 58, 54, 54, 157, 99, 26, 54, 28, 5, 24, 152, 152, 250, 232, 2, 189, 3, 3, 27, 30, 30, 95, 68, 254, 55, 1, 201, 106, 152, 49, 49, 46, 1, 4, 4, 1, 196, 0, 0, 1, 0, 162, 254, 153, 4, 42, 5, 176, 0, 11, 0, 0, 83, 17, 33, 17, 51, 17, 33, 17, 35, 17, 33, 17, 162, 1, 108, 185, 1, 99, 185, 253, 234, 5, 176, 250, 80, 254, 153, 1, 103, 5, 176, 250, 231, 5, 25, 0, 0, 2, 0, 162, 0, 0, 4, 76, 5, 176, 0, 18, 0, 33, 0, 0, 65, 53, 33, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 17, 17, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 4, 29, 252, 133, 1, 196, 116, 181, 62, 62, 65, 65, 62, 62, 181, 116, 254, 246, 1, 10, 78, 113, 37, 37, 35, 35, 37, 37, 113, 78, 254, 246, 5, 24, 152, 250, 80, 63, 57, 57, 160, 96, 97, 156, 56, 55, 60, 1, 191, 253, 170, 43, 36, 37, 99, 56, 57, 103, 39, 39, 46, 0, 0, 2, 0, 70, 254, 153, 4, 120, 5, 176, 0, 20, 0, 33, 0, 0, 65, 19, 35, 17, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 35, 19, 51, 17, 33, 17, 1, 19, 33, 17, 33, 54, 54, 55, 54, 54, 55, 54, 54, 4, 102, 18, 127, 253, 119, 32, 2, 9, 7, 8, 21, 13, 25, 70, 46, 65, 27, 157, 2, 193, 254, 76, 22, 1, 31, 254, 64, 26, 42, 16, 15, 21, 7, 4, 6, 254, 155, 1, 252, 5, 25, 253, 183, 75, 132, 57, 66, 113, 46, 88, 113, 30, 254, 2, 1, 103, 254, 155, 4, 204, 1, 177, 251, 127, 47, 118, 70, 62, 145, 80, 46, 100, 0, 0, 1, 0, 29, 0, 0, 4, 174, 5, 176, 0, 21, 0, 0, 65, 19, 51, 1, 19, 35, 3, 35, 17, 35, 17, 35, 3, 35, 19, 1, 51, 19, 51, 17, 51, 17, 2, 251, 206, 229, 254, 242, 232, 216, 173, 62, 183, 69, 174, 215, 230, 254, 243, 230, 205, 62, 183, 2, 139, 253, 117, 2, 217, 2, 215, 253, 115, 2, 141, 253, 115, 2, 141, 253, 39, 253, 41, 2, 139, 253, 117, 2, 139, 0, 0, 1, 0, 89, 255, 235, 4, 112, 5, 196, 0, 82, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 35, 21, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 89, 90, 72, 72, 183, 95, 115, 196, 72, 71, 81, 48, 46, 32, 83, 51, 39, 67, 27, 50, 54, 1, 74, 67, 68, 189, 115, 99, 178, 67, 68, 79, 185, 49, 41, 41, 112, 63, 82, 122, 41, 41, 41, 33, 33, 18, 47, 28, 32, 77, 45, 183, 183, 51, 89, 36, 38, 58, 21, 21, 21, 48, 45, 46, 129, 81, 72, 120, 43, 43, 48, 1, 148, 111, 161, 52, 52, 49, 56, 55, 54, 159, 103, 77, 122, 46, 31, 48, 17, 17, 43, 25, 46, 117, 67, 102, 156, 52, 52, 52, 56, 51, 52, 149, 93, 54, 92, 34, 33, 37, 40, 35, 35, 94, 55, 52, 87, 31, 18, 27, 10, 11, 11, 1, 152, 13, 13, 13, 41, 30, 29, 77, 48, 60, 100, 36, 36, 40, 43, 37, 37, 100, 57, 0, 1, 0, 162, 0, 0, 4, 42, 5, 176, 0, 9, 0, 0, 65, 1, 19, 35, 17, 51, 1, 3, 51, 17, 3, 113, 253, 233, 1, 185, 185, 2, 23, 1, 185, 5, 176, 251, 208, 4, 48, 250, 80, 4, 49, 251, 207, 5, 176, 0, 0, 1, 0, 47, 0, 0, 4, 43, 5, 176, 0, 30, 0, 0, 65, 33, 3, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 19, 33, 17, 51, 4, 43, 252, 235, 4, 3, 3, 5, 22, 17, 22, 68, 47, 40, 51, 57, 94, 38, 44, 65, 21, 15, 18, 5, 2, 2, 2, 1, 165, 185, 5, 176, 252, 248, 49, 89, 40, 75, 120, 43, 56, 57, 151, 30, 29, 36, 111, 76, 55, 131, 74, 33, 69, 36, 2, 112, 250, 232, 0, 0, 1, 0, 43, 255, 235, 4, 181, 5, 176, 0, 27, 0, 0, 119, 22, 22, 51, 50, 54, 55, 54, 54, 55, 1, 35, 1, 7, 39, 1, 35, 1, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 103, 26, 105, 68, 83, 119, 42, 42, 59, 23, 2, 23, 215, 254, 224, 72, 71, 254, 204, 208, 1, 242, 42, 13, 36, 26, 26, 70, 46, 39, 90, 26, 14, 11, 24, 42, 36, 36, 95, 52, 4, 192, 253, 59, 179, 191, 2, 185, 251, 194, 85, 28, 56, 22, 22, 27, 18, 7, 0, 1, 0, 166, 254, 161, 4, 180, 5, 176, 0, 11, 0, 0, 83, 17, 33, 17, 51, 19, 35, 17, 35, 17, 33, 17, 166, 3, 86, 166, 18, 147, 185, 253, 247, 5, 176, 250, 80, 254, 161, 1, 251, 5, 20, 250, 231, 5, 25, 0, 0, 1, 0, 171, 0, 0, 4, 39, 5, 176, 0, 25, 0, 0, 65, 35, 17, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 17, 51, 4, 39, 185, 72, 144, 83, 57, 84, 27, 28, 27, 185, 55, 52, 52, 152, 97, 95, 137, 67, 185, 5, 176, 253, 69, 24, 29, 29, 35, 34, 113, 85, 1, 200, 254, 56, 121, 170, 54, 54, 49, 27, 24, 253, 165, 0, 0, 1, 0, 125, 0, 0, 4, 80, 5, 176, 0, 11, 0, 0, 65, 35, 17, 33, 17, 35, 17, 35, 17, 35, 17, 35, 1, 54, 185, 3, 211, 184, 213, 184, 213, 5, 176, 250, 80, 5, 176, 250, 231, 5, 25, 250, 231, 0, 0, 1, 0, 125, 254, 161, 4, 170, 5, 176, 0, 15, 0, 0, 65, 35, 17, 33, 17, 51, 19, 35, 17, 35, 17, 35, 17, 35, 17, 35, 1, 54, 185, 3, 118, 165, 18, 90, 184, 213, 184, 213, 5, 176, 250, 80, 254, 161, 1, 247, 5, 24, 250, 231, 5, 25, 250, 231, 0, 2, 0, 50, 0, 0, 4, 121, 5, 176, 0, 18, 0, 33, 0, 0, 83, 21, 33, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 50, 1, 49, 1, 73, 111, 172, 59, 58, 61, 61, 58, 59, 172, 111, 144, 144, 73, 104, 34, 33, 31, 31, 33, 34, 104, 73, 144, 5, 176, 152, 250, 232, 64, 58, 57, 159, 95, 96, 156, 56, 55, 61, 2, 87, 253, 18, 43, 37, 37, 99, 55, 56, 103, 39, 39, 47, 0, 0, 3, 0, 144, 0, 0, 4, 75, 5, 176, 0, 16, 0, 20, 0, 35, 0, 0, 65, 17, 35, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 1, 17, 35, 17, 1, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 73, 185, 1, 21, 95, 145, 50, 49, 50, 50, 49, 50, 145, 95, 2, 166, 185, 253, 183, 92, 55, 77, 25, 24, 22, 22, 24, 24, 78, 55, 92, 3, 89, 2, 87, 250, 80, 64, 58, 57, 159, 95, 95, 157, 56, 55, 61, 252, 167, 5, 176, 250, 80, 2, 194, 44, 37, 37, 98, 55, 56, 102, 39, 40, 47, 0, 2, 0, 168, 0, 0, 4, 81, 5, 176, 0, 16, 0, 31, 0, 0, 65, 17, 35, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 5, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 1, 97, 185, 1, 195, 116, 181, 62, 62, 65, 65, 62, 62, 181, 116, 254, 246, 1, 10, 78, 113, 37, 37, 35, 35, 37, 37, 113, 78, 254, 246, 3, 89, 2, 87, 250, 80, 63, 57, 57, 160, 96, 97, 156, 56, 55, 60, 151, 43, 36, 37, 99, 56, 57, 103, 39, 39, 46, 0, 1, 0, 114, 255, 236, 4, 83, 5, 197, 0, 55, 0, 0, 65, 35, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 33, 21, 33, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 43, 185, 1, 67, 63, 62, 176, 110, 117, 190, 67, 67, 73, 73, 67, 67, 190, 117, 110, 176, 62, 63, 67, 1, 185, 1, 39, 37, 37, 109, 71, 79, 122, 42, 42, 44, 254, 28, 1, 228, 45, 42, 42, 122, 78, 71, 109, 37, 37, 39, 1, 209, 110, 179, 63, 64, 69, 84, 77, 76, 214, 131, 1, 76, 131, 215, 77, 76, 84, 76, 66, 66, 178, 101, 76, 125, 44, 43, 48, 64, 57, 57, 159, 94, 93, 151, 90, 94, 158, 57, 57, 64, 48, 44, 43, 123, 0, 0, 2, 0, 119, 255, 236, 4, 106, 5, 196, 0, 33, 0, 59, 0, 0, 65, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 35, 17, 35, 17, 51, 17, 51, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 106, 46, 46, 46, 137, 91, 86, 130, 43, 44, 43, 114, 185, 185, 114, 44, 44, 43, 130, 86, 90, 137, 46, 46, 46, 185, 19, 21, 21, 69, 50, 46, 62, 19, 19, 16, 16, 19, 19, 62, 45, 43, 64, 21, 28, 25, 2, 3, 1, 169, 127, 199, 69, 69, 72, 72, 69, 69, 199, 127, 152, 2, 156, 250, 80, 2, 125, 122, 127, 199, 68, 69, 72, 72, 69, 68, 199, 2, 42, 254, 85, 95, 142, 47, 47, 47, 47, 47, 47, 142, 95, 1, 171, 94, 141, 47, 47, 47, 35, 34, 46, 154, 0, 0, 2, 0, 65, 0, 0, 4, 38, 5, 176, 0, 19, 0, 34, 0, 0, 97, 51, 17, 33, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 1, 51, 1, 33, 1, 52, 54, 55, 54, 54, 51, 51, 17, 35, 34, 38, 39, 38, 38, 3, 109, 185, 254, 78, 117, 189, 66, 67, 71, 51, 50, 35, 94, 58, 254, 171, 197, 1, 49, 1, 54, 253, 194, 42, 41, 41, 121, 80, 249, 255, 78, 120, 40, 40, 41, 5, 176, 56, 53, 54, 157, 100, 82, 132, 51, 35, 57, 21, 253, 110, 2, 95, 1, 175, 61, 99, 35, 34, 37, 253, 224, 42, 38, 37, 102, 0, 0, 2, 0, 129, 255, 236, 4, 71, 6, 17, 0, 53, 0, 79, 0, 0, 65, 34, 6, 7, 6, 6, 7, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 35, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 7, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 2, 134, 56, 102, 45, 45, 78, 32, 15, 66, 48, 48, 122, 70, 99, 109, 45, 51, 57, 152, 38, 33, 34, 91, 53, 111, 181, 63, 31, 48, 17, 18, 19, 66, 62, 62, 180, 114, 114, 179, 62, 62, 65, 61, 58, 58, 166, 141, 76, 113, 37, 37, 36, 36, 37, 37, 111, 76, 77, 113, 36, 37, 36, 36, 37, 36, 112, 3, 252, 25, 22, 23, 63, 37, 92, 131, 45, 45, 53, 15, 21, 30, 30, 34, 114, 93, 41, 53, 17, 18, 23, 10, 21, 115, 96, 47, 112, 65, 70, 165, 94, 99, 113, 192, 71, 71, 80, 80, 71, 71, 192, 113, 23, 105, 179, 66, 65, 75, 152, 55, 46, 47, 122, 68, 23, 76, 137, 51, 52, 61, 61, 52, 51, 137, 76, 23, 68, 122, 47, 46, 55, 0, 0, 3, 0, 164, 0, 0, 4, 48, 4, 58, 0, 27, 0, 42, 0, 57, 0, 0, 115, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 19, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 164, 1, 238, 95, 153, 54, 54, 58, 28, 27, 27, 75, 50, 8, 31, 52, 20, 36, 37, 63, 58, 59, 164, 100, 254, 87, 186, 1, 52, 56, 86, 29, 28, 29, 26, 25, 29, 89, 59, 254, 204, 239, 61, 97, 32, 34, 35, 22, 20, 32, 108, 75, 38, 39, 38, 115, 77, 44, 80, 33, 32, 47, 13, 2, 12, 30, 19, 32, 85, 49, 77, 112, 36, 36, 36, 253, 161, 22, 21, 20, 60, 39, 38, 59, 20, 23, 24, 1, 218, 1, 53, 18, 19, 19, 60, 41, 31, 49, 18, 28, 26, 0, 0, 1, 0, 183, 0, 0, 4, 42, 4, 58, 0, 5, 0, 0, 65, 53, 33, 17, 51, 17, 4, 42, 252, 141, 186, 3, 161, 153, 251, 198, 3, 161, 0, 2, 0, 54, 254, 194, 4, 154, 4, 58, 0, 17, 0, 27, 0, 0, 119, 35, 19, 51, 17, 33, 17, 51, 19, 35, 17, 33, 3, 6, 6, 7, 6, 6, 1, 55, 33, 17, 33, 54, 54, 55, 54, 54, 156, 102, 18, 166, 2, 243, 167, 18, 139, 253, 71, 16, 7, 23, 19, 19, 59, 1, 56, 9, 1, 78, 254, 70, 24, 33, 11, 11, 15, 151, 254, 43, 1, 62, 254, 194, 1, 213, 3, 163, 254, 106, 116, 188, 68, 68, 79, 2, 7, 235, 253, 8, 44, 112, 67, 66, 152, 0, 0, 1, 0, 17, 0, 0, 4, 172, 4, 58, 0, 21, 0, 0, 65, 19, 51, 1, 1, 35, 3, 35, 17, 35, 17, 35, 3, 35, 1, 1, 51, 19, 51, 17, 51, 17, 2, 245, 215, 224, 254, 214, 1, 8, 214, 190, 59, 185, 59, 189, 214, 1, 6, 254, 215, 223, 215, 59, 185, 1, 214, 254, 42, 2, 51, 2, 7, 254, 64, 1, 192, 254, 64, 1, 192, 253, 249, 253, 205, 1, 214, 254, 42, 1, 214, 0, 0, 1, 0, 135, 255, 237, 4, 74, 4, 77, 0, 82, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 135, 75, 59, 70, 188, 98, 100, 172, 64, 64, 73, 35, 33, 28, 75, 47, 33, 58, 22, 40, 44, 66, 60, 60, 166, 100, 95, 171, 64, 65, 77, 1, 185, 47, 40, 39, 104, 58, 65, 100, 34, 33, 35, 26, 25, 18, 47, 29, 23, 56, 32, 241, 241, 31, 58, 25, 25, 44, 18, 36, 38, 41, 37, 38, 106, 64, 65, 112, 41, 41, 46, 1, 64, 81, 123, 40, 49, 46, 42, 42, 41, 120, 78, 52, 85, 33, 27, 41, 14, 13, 33, 19, 34, 84, 48, 78, 117, 40, 39, 40, 44, 41, 42, 119, 75, 37, 63, 23, 22, 26, 26, 22, 23, 60, 34, 34, 54, 19, 13, 20, 6, 5, 5, 156, 4, 5, 5, 14, 10, 21, 65, 46, 37, 64, 24, 24, 27, 31, 27, 26, 69, 39, 0, 0, 1, 0, 165, 0, 0, 4, 39, 4, 58, 0, 9, 0, 0, 65, 1, 17, 35, 17, 51, 1, 17, 51, 17, 3, 110, 253, 239, 184, 184, 2, 17, 185, 4, 58, 252, 225, 3, 31, 251, 198, 3, 30, 252, 226, 4, 58, 0, 0, 1, 0, 164, 0, 0, 4, 149, 4, 58, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 35, 17, 35, 17, 51, 17, 2, 13, 1, 157, 235, 254, 12, 1, 208, 225, 254, 109, 160, 185, 185, 1, 205, 254, 51, 2, 49, 2, 9, 254, 54, 1, 202, 251, 198, 1, 205, 0, 1, 0, 55, 0, 0, 4, 38, 4, 58, 0, 27, 0, 0, 65, 33, 3, 20, 6, 7, 6, 6, 7, 6, 6, 35, 7, 7, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 19, 33, 17, 51, 4, 38, 252, 255, 2, 3, 3, 5, 16, 11, 22, 75, 57, 41, 3, 54, 106, 142, 42, 26, 34, 8, 5, 5, 1, 1, 142, 186, 4, 58, 254, 49, 50, 89, 39, 49, 81, 31, 57, 57, 1, 165, 83, 79, 49, 128, 76, 46, 103, 55, 1, 54, 252, 95, 0, 1, 0, 137, 0, 0, 4, 41, 4, 58, 0, 12, 0, 0, 101, 3, 35, 17, 51, 17, 19, 51, 19, 17, 51, 17, 35, 2, 92, 228, 239, 185, 218, 128, 212, 185, 231, 245, 3, 69, 251, 198, 2, 179, 253, 77, 2, 155, 253, 101, 4, 58, 0, 1, 0, 165, 0, 0, 4, 39, 4, 58, 0, 11, 0, 0, 97, 17, 35, 17, 33, 17, 35, 17, 51, 17, 33, 17, 4, 39, 185, 253, 240, 185, 185, 2, 16, 4, 58, 254, 43, 1, 213, 251, 198, 1, 206, 254, 50, 0, 0, 1, 0, 165, 0, 0, 4, 39, 4, 58, 0, 7, 0, 0, 97, 17, 33, 17, 51, 17, 33, 17, 4, 39, 252, 126, 185, 2, 16, 4, 58, 251, 198, 3, 161, 252, 95, 0, 0, 1, 0, 104, 0, 0, 4, 123, 4, 58, 0, 7, 0, 0, 65, 53, 33, 21, 33, 17, 51, 17, 4, 123, 251, 237, 1, 169, 186, 3, 164, 150, 150, 252, 92, 3, 164, 0, 0, 3, 0, 122, 254, 96, 4, 82, 6, 0, 0, 31, 0, 45, 0, 59, 0, 0, 83, 21, 20, 22, 23, 22, 22, 23, 17, 51, 17, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 17, 35, 17, 6, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 55, 17, 38, 38, 39, 38, 38, 37, 21, 20, 6, 7, 6, 6, 7, 17, 22, 22, 23, 22, 22, 122, 54, 52, 51, 148, 93, 185, 94, 149, 52, 51, 55, 54, 52, 52, 149, 94, 185, 93, 148, 51, 52, 54, 185, 27, 27, 26, 80, 53, 54, 80, 26, 27, 26, 2, 102, 27, 27, 27, 81, 54, 54, 81, 27, 27, 27, 2, 39, 22, 104, 183, 71, 71, 95, 16, 254, 107, 1, 148, 15, 95, 72, 71, 183, 105, 22, 104, 184, 72, 71, 96, 16, 1, 186, 254, 70, 17, 95, 71, 72, 184, 126, 22, 66, 123, 51, 51, 75, 18, 252, 234, 18, 74, 51, 51, 123, 89, 22, 68, 124, 51, 51, 74, 18, 3, 24, 18, 74, 51, 51, 124, 0, 0, 1, 0, 170, 254, 191, 4, 144, 4, 58, 0, 11, 0, 0, 83, 17, 33, 17, 51, 19, 35, 17, 35, 17, 33, 17, 170, 3, 46, 166, 18, 129, 186, 254, 14, 4, 58, 251, 198, 254, 191, 1, 216, 3, 163, 252, 93, 3, 163, 0, 0, 1, 0, 141, 0, 0, 4, 39, 4, 58, 0, 28, 0, 0, 97, 17, 35, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 17, 4, 39, 185, 30, 61, 31, 42, 88, 46, 65, 100, 32, 27, 30, 185, 62, 58, 57, 162, 100, 85, 145, 68, 4, 58, 253, 233, 7, 12, 4, 6, 6, 34, 36, 31, 92, 62, 1, 59, 254, 197, 103, 153, 50, 51, 50, 18, 17, 254, 117, 0, 0, 1, 0, 129, 0, 0, 4, 76, 4, 58, 0, 11, 0, 0, 65, 35, 17, 33, 17, 35, 17, 35, 17, 35, 17, 35, 1, 58, 185, 3, 203, 185, 208, 185, 208, 4, 58, 251, 198, 4, 58, 252, 93, 3, 163, 252, 93, 0, 0, 1, 0, 118, 254, 191, 4, 152, 4, 58, 0, 15, 0, 0, 65, 35, 17, 33, 17, 51, 19, 35, 17, 35, 17, 7, 17, 35, 17, 35, 1, 47, 185, 3, 107, 165, 18, 87, 185, 208, 185, 208, 4, 58, 251, 198, 254, 191, 1, 217, 3, 162, 252, 94, 1, 3, 163, 252, 93, 0, 0, 2, 0, 57, 0, 0, 4, 119, 4, 58, 0, 18, 0, 33, 0, 0, 97, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 33, 21, 33, 19, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 101, 1, 129, 96, 150, 51, 51, 53, 53, 51, 51, 150, 96, 200, 254, 27, 1, 44, 185, 200, 57, 82, 26, 26, 24, 24, 26, 26, 81, 58, 200, 53, 46, 45, 124, 72, 72, 122, 44, 44, 50, 1, 154, 152, 254, 103, 34, 26, 27, 67, 34, 35, 66, 25, 26, 30, 0, 0, 3, 0, 144, 0, 0, 4, 63, 4, 58, 0, 16, 0, 20, 0, 35, 0, 0, 65, 17, 35, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 1, 17, 35, 17, 1, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 73, 185, 1, 28, 88, 134, 46, 45, 47, 47, 45, 46, 135, 87, 2, 147, 185, 253, 195, 99, 47, 66, 21, 20, 19, 19, 20, 21, 66, 47, 99, 2, 160, 1, 154, 251, 198, 53, 46, 46, 124, 71, 71, 122, 45, 44, 50, 253, 96, 4, 58, 251, 198, 2, 9, 34, 27, 27, 67, 33, 35, 65, 25, 26, 31, 0, 2, 0, 165, 0, 0, 4, 64, 4, 58, 0, 16, 0, 31, 0, 0, 65, 17, 35, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 5, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 1, 94, 185, 2, 4, 97, 152, 52, 52, 54, 55, 52, 52, 151, 97, 254, 181, 1, 75, 58, 83, 27, 27, 26, 25, 27, 27, 84, 58, 254, 181, 2, 160, 1, 154, 251, 198, 52, 46, 45, 125, 72, 73, 122, 44, 44, 49, 151, 33, 26, 27, 67, 35, 36, 66, 25, 25, 30, 0, 1, 0, 129, 255, 236, 4, 58, 4, 78, 0, 53, 0, 0, 65, 50, 22, 23, 22, 22, 23, 33, 21, 33, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 2, 60, 81, 116, 38, 38, 42, 6, 254, 85, 1, 173, 5, 39, 38, 39, 118, 84, 56, 97, 36, 36, 42, 176, 67, 59, 59, 162, 96, 127, 191, 64, 64, 64, 64, 63, 64, 192, 127, 86, 160, 61, 62, 74, 176, 46, 38, 37, 96, 3, 182, 54, 45, 45, 116, 63, 152, 65, 124, 48, 49, 59, 38, 33, 32, 88, 50, 83, 143, 52, 53, 60, 87, 75, 74, 196, 108, 42, 108, 196, 74, 74, 88, 59, 50, 50, 132, 73, 46, 77, 29, 28, 32, 0, 0, 2, 0, 113, 255, 236, 4, 129, 4, 78, 0, 31, 0, 57, 0, 0, 65, 17, 35, 17, 51, 17, 51, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 42, 185, 185, 129, 6, 49, 45, 45, 131, 87, 93, 137, 45, 44, 44, 44, 45, 45, 138, 93, 85, 128, 45, 45, 50, 7, 184, 16, 20, 20, 68, 52, 53, 69, 21, 20, 17, 17, 20, 20, 69, 52, 53, 68, 20, 21, 16, 2, 111, 1, 203, 251, 198, 1, 215, 104, 180, 66, 66, 75, 86, 74, 74, 201, 114, 22, 114, 201, 75, 75, 86, 73, 64, 65, 175, 102, 94, 22, 78, 144, 56, 55, 66, 66, 55, 56, 144, 78, 22, 78, 145, 55, 55, 66, 66, 55, 55, 145, 0, 0, 2, 0, 79, 0, 0, 4, 33, 4, 58, 0, 16, 0, 31, 0, 0, 65, 33, 34, 6, 7, 6, 6, 21, 20, 22, 23, 1, 51, 1, 33, 17, 51, 1, 52, 54, 55, 54, 54, 51, 33, 17, 33, 34, 38, 39, 38, 38, 4, 33, 254, 4, 96, 154, 53, 53, 57, 112, 104, 254, 239, 200, 1, 1, 1, 80, 185, 253, 33, 28, 28, 28, 86, 57, 1, 67, 254, 166, 53, 76, 25, 26, 24, 4, 58, 50, 43, 44, 121, 72, 106, 159, 38, 254, 63, 1, 165, 254, 91, 2, 238, 35, 65, 26, 25, 31, 254, 153, 30, 25, 24, 64, 0, 1, 255, 233, 254, 75, 4, 37, 6, 0, 0, 57, 0, 0, 65, 53, 33, 53, 35, 21, 35, 21, 51, 17, 51, 17, 54, 54, 55, 54, 54, 51, 54, 22, 23, 22, 22, 21, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 3, 52, 38, 39, 38, 38, 35, 6, 6, 7, 6, 6, 7, 17, 2, 102, 254, 249, 185, 189, 189, 185, 23, 62, 36, 35, 80, 43, 61, 93, 31, 30, 30, 22, 21, 17, 48, 29, 16, 66, 19, 15, 30, 54, 32, 76, 120, 41, 42, 44, 1, 53, 49, 49, 139, 85, 59, 105, 44, 37, 63, 26, 4, 185, 151, 176, 176, 151, 251, 71, 3, 18, 37, 60, 21, 19, 22, 1, 34, 35, 32, 97, 65, 252, 252, 51, 78, 26, 20, 21, 7, 6, 148, 10, 7, 44, 43, 44, 132, 85, 3, 2, 109, 159, 52, 52, 49, 1, 30, 27, 23, 62, 38, 1, 32, 0, 0, 1, 0, 143, 255, 236, 4, 51, 4, 78, 0, 53, 0, 0, 101, 34, 38, 39, 38, 38, 39, 33, 53, 33, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 35, 6, 6, 7, 6, 6, 2, 123, 78, 111, 36, 36, 38, 5, 1, 154, 254, 102, 5, 38, 37, 36, 110, 78, 56, 97, 35, 35, 41, 1, 175, 66, 58, 59, 161, 96, 123, 184, 61, 62, 62, 62, 62, 61, 184, 123, 86, 158, 61, 61, 73, 1, 175, 1, 45, 37, 37, 95, 130, 56, 47, 46, 121, 64, 152, 63, 121, 47, 46, 57, 38, 33, 33, 87, 49, 82, 144, 53, 52, 61, 88, 74, 75, 196, 107, 42, 108, 195, 74, 75, 88, 59, 50, 49, 131, 72, 45, 77, 28, 29, 32, 0, 0, 2, 0, 38, 0, 0, 4, 176, 4, 58, 0, 40, 0, 55, 0, 0, 65, 33, 17, 20, 6, 21, 6, 6, 7, 6, 6, 35, 7, 7, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 17, 51, 17, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 19, 20, 6, 7, 6, 6, 35, 35, 17, 51, 50, 22, 23, 22, 22, 3, 8, 253, 204, 1, 2, 14, 12, 16, 54, 41, 30, 4, 45, 90, 120, 37, 29, 32, 4, 1, 1, 194, 251, 87, 134, 45, 45, 47, 47, 45, 45, 134, 87, 66, 237, 18, 20, 21, 65, 47, 66, 66, 47, 65, 21, 20, 18, 4, 58, 254, 49, 25, 48, 22, 78, 124, 46, 59, 61, 1, 155, 84, 80, 65, 177, 110, 24, 52, 27, 1, 54, 252, 95, 53, 46, 45, 123, 71, 72, 121, 45, 44, 50, 254, 182, 34, 68, 27, 27, 35, 1, 113, 31, 25, 25, 64, 0, 0, 2, 0, 130, 0, 0, 4, 146, 4, 58, 0, 24, 0, 39, 0, 0, 65, 17, 35, 17, 51, 17, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 35, 17, 23, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 59, 185, 185, 249, 1, 12, 82, 127, 43, 42, 44, 44, 42, 43, 127, 82, 83, 185, 185, 83, 42, 58, 18, 18, 16, 16, 18, 18, 58, 42, 83, 2, 161, 1, 153, 251, 198, 2, 10, 253, 246, 53, 46, 45, 123, 71, 71, 121, 45, 44, 50, 1, 157, 254, 103, 155, 31, 25, 25, 64, 33, 34, 68, 27, 27, 35, 0, 0, 1, 0, 28, 0, 0, 4, 43, 6, 0, 0, 39, 0, 0, 65, 53, 33, 53, 35, 21, 35, 21, 51, 17, 51, 17, 54, 54, 55, 54, 54, 51, 54, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 6, 6, 7, 6, 6, 7, 17, 2, 153, 254, 205, 185, 145, 145, 185, 24, 66, 39, 33, 76, 41, 59, 92, 31, 31, 32, 185, 53, 49, 49, 139, 85, 60, 108, 46, 35, 60, 25, 4, 190, 151, 171, 171, 151, 251, 66, 3, 18, 39, 62, 21, 18, 19, 1, 32, 33, 32, 100, 66, 253, 85, 2, 169, 109, 159, 52, 52, 49, 1, 31, 30, 22, 60, 37, 1, 37, 0, 0, 1, 0, 165, 254, 156, 4, 39, 4, 58, 0, 11, 0, 0, 65, 35, 17, 33, 17, 51, 17, 33, 17, 35, 17, 33, 1, 94, 185, 1, 103, 185, 1, 98, 185, 253, 240, 4, 58, 251, 198, 254, 156, 1, 100, 4, 58, 252, 93, 0, 0, 1, 0, 107, 255, 236, 4, 127, 5, 176, 0, 56, 0, 0, 65, 35, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 3, 35, 3, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 126, 184, 1, 16, 16, 14, 39, 25, 25, 42, 16, 23, 24, 191, 1, 25, 23, 15, 42, 24, 23, 39, 13, 18, 18, 1, 184, 1, 43, 39, 39, 109, 67, 42, 75, 30, 24, 40, 14, 12, 32, 20, 32, 82, 48, 66, 109, 39, 39, 43, 5, 176, 251, 142, 46, 73, 24, 22, 23, 18, 16, 24, 78, 52, 4, 114, 251, 142, 52, 79, 24, 16, 17, 21, 19, 24, 75, 49, 4, 114, 251, 142, 82, 126, 43, 43, 44, 23, 22, 19, 51, 32, 28, 45, 18, 28, 28, 44, 43, 43, 126, 82, 0, 1, 0, 95, 255, 235, 4, 122, 4, 59, 0, 56, 0, 0, 65, 35, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 3, 35, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 3, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 122, 185, 15, 14, 15, 42, 27, 26, 42, 16, 23, 24, 1, 191, 22, 19, 17, 46, 27, 25, 40, 14, 17, 17, 185, 1, 44, 39, 39, 110, 67, 41, 71, 29, 26, 44, 15, 13, 36, 21, 31, 80, 47, 66, 110, 40, 39, 43, 4, 59, 253, 1, 43, 69, 23, 25, 26, 18, 17, 23, 77, 51, 2, 255, 253, 1, 48, 73, 24, 20, 21, 22, 21, 24, 72, 47, 2, 255, 253, 1, 82, 126, 42, 43, 44, 20, 20, 19, 53, 35, 29, 48, 17, 27, 26, 44, 43, 42, 126, 82, 0, 2, 0, 28, 0, 0, 4, 60, 6, 24, 0, 24, 0, 39, 0, 0, 65, 53, 33, 17, 35, 17, 35, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 17, 17, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 2, 215, 254, 190, 185, 192, 192, 1, 204, 97, 150, 52, 51, 54, 54, 51, 52, 150, 97, 254, 237, 1, 19, 58, 82, 27, 26, 25, 25, 26, 27, 82, 58, 254, 237, 4, 52, 152, 1, 76, 254, 180, 152, 251, 204, 52, 46, 46, 124, 72, 72, 122, 45, 44, 49, 1, 148, 253, 213, 33, 26, 27, 68, 34, 36, 65, 25, 26, 30, 0, 0, 1, 0, 125, 255, 237, 4, 148, 5, 197, 0, 84, 0, 0, 65, 17, 35, 17, 51, 17, 51, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 35, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 33, 53, 33, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 1, 53, 184, 184, 150, 14, 13, 15, 48, 32, 46, 125, 76, 53, 90, 36, 46, 66, 22, 12, 15, 4, 167, 3, 9, 6, 10, 34, 21, 18, 47, 29, 35, 57, 20, 20, 29, 8, 8, 7, 1, 26, 254, 230, 7, 7, 10, 32, 24, 20, 52, 32, 35, 54, 19, 16, 25, 9, 7, 9, 3, 167, 7, 49, 42, 43, 122, 81, 61, 105, 42, 46, 71, 19, 12, 13, 3, 64, 2, 112, 250, 80, 2, 169, 155, 67, 120, 51, 60, 98, 37, 53, 59, 27, 26, 31, 101, 63, 37, 83, 44, 31, 56, 25, 40, 60, 19, 15, 16, 32, 27, 28, 75, 47, 39, 94, 53, 155, 151, 101, 52, 91, 39, 53, 81, 29, 23, 25, 24, 23, 20, 50, 32, 26, 60, 34, 96, 156, 55, 54, 59, 37, 36, 38, 124, 81, 50, 116, 64, 99, 0, 0, 1, 0, 155, 255, 236, 4, 137, 4, 78, 0, 73, 0, 0, 65, 53, 33, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 35, 17, 35, 17, 51, 17, 51, 21, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 35, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 53, 3, 199, 254, 213, 1, 7, 7, 10, 35, 25, 19, 47, 28, 33, 51, 18, 18, 19, 175, 45, 41, 41, 116, 71, 60, 101, 40, 49, 68, 20, 12, 13, 1, 143, 185, 185, 143, 1, 13, 11, 22, 82, 58, 36, 89, 52, 64, 115, 43, 42, 50, 175, 1, 21, 18, 19, 50, 30, 27, 45, 18, 26, 36, 12, 6, 8, 1, 1, 208, 151, 37, 73, 34, 47, 79, 25, 19, 21, 33, 28, 28, 74, 40, 74, 129, 48, 48, 56, 36, 32, 41, 116, 72, 43, 96, 51, 1, 211, 251, 198, 1, 208, 2, 49, 92, 42, 80, 130, 38, 25, 26, 53, 45, 45, 117, 64, 36, 63, 24, 24, 27, 18, 17, 26, 82, 50, 32, 71, 36, 2, 0, 2, 0, 39, 0, 0, 4, 178, 5, 176, 0, 11, 0, 16, 0, 0, 65, 19, 51, 1, 35, 1, 51, 19, 51, 17, 51, 17, 37, 19, 55, 23, 19, 3, 101, 144, 189, 254, 15, 160, 254, 6, 189, 147, 148, 185, 254, 232, 185, 11, 10, 182, 1, 184, 254, 72, 5, 176, 250, 80, 1, 184, 254, 72, 1, 184, 161, 2, 44, 31, 32, 253, 213, 0, 0, 2, 0, 87, 0, 0, 4, 129, 4, 58, 0, 11, 0, 16, 0, 0, 65, 19, 51, 1, 35, 1, 51, 19, 51, 17, 51, 17, 37, 19, 55, 23, 19, 3, 74, 121, 190, 254, 57, 159, 254, 60, 189, 118, 135, 185, 254, 253, 137, 25, 24, 139, 1, 41, 254, 215, 4, 58, 251, 198, 1, 41, 254, 215, 1, 41, 152, 1, 87, 82, 82, 254, 169, 0, 0, 2, 0, 113, 0, 0, 4, 188, 5, 176, 0, 19, 0, 24, 0, 0, 65, 19, 51, 1, 35, 3, 35, 17, 35, 17, 51, 17, 51, 3, 51, 19, 51, 17, 51, 17, 39, 19, 55, 23, 19, 3, 161, 95, 188, 254, 174, 159, 208, 209, 185, 185, 168, 117, 189, 104, 69, 148, 182, 107, 8, 7, 97, 1, 212, 254, 44, 5, 176, 252, 197, 3, 59, 250, 80, 1, 212, 254, 44, 1, 212, 254, 44, 1, 212, 161, 1, 224, 36, 36, 254, 32, 0, 2, 0, 112, 0, 0, 4, 189, 4, 58, 0, 19, 0, 24, 0, 0, 65, 19, 51, 1, 35, 3, 35, 17, 35, 17, 51, 17, 51, 3, 51, 19, 51, 17, 51, 17, 39, 19, 55, 23, 19, 3, 171, 85, 189, 254, 173, 159, 213, 205, 185, 185, 151, 99, 189, 93, 79, 157, 185, 102, 8, 8, 93, 1, 37, 254, 219, 4, 58, 253, 140, 2, 116, 251, 198, 1, 37, 254, 219, 1, 37, 254, 219, 1, 37, 161, 1, 65, 27, 27, 254, 191, 0, 2, 0, 85, 0, 0, 4, 133, 5, 176, 0, 39, 0, 44, 0, 0, 115, 51, 17, 52, 54, 55, 54, 54, 51, 51, 17, 51, 17, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 39, 35, 1, 33, 1, 35, 34, 6, 7, 6, 6, 21, 1, 3, 7, 39, 3, 86, 185, 21, 22, 21, 67, 46, 83, 185, 77, 46, 67, 22, 22, 22, 185, 48, 46, 47, 134, 86, 1, 1, 54, 252, 33, 1, 81, 3, 86, 135, 46, 47, 49, 2, 231, 202, 2, 2, 224, 1, 171, 61, 82, 25, 25, 22, 253, 126, 2, 130, 22, 25, 25, 82, 61, 254, 85, 1, 171, 98, 138, 45, 44, 41, 1, 2, 150, 253, 106, 41, 44, 45, 139, 98, 3, 109, 254, 41, 3, 3, 1, 215, 0, 2, 0, 105, 0, 0, 4, 89, 4, 58, 0, 41, 0, 47, 0, 0, 115, 51, 53, 52, 54, 55, 54, 54, 51, 51, 23, 17, 51, 17, 55, 51, 50, 22, 23, 22, 22, 21, 23, 51, 53, 52, 38, 39, 38, 38, 39, 35, 1, 33, 1, 35, 6, 6, 7, 6, 6, 21, 1, 3, 7, 35, 39, 3, 105, 185, 20, 20, 20, 61, 42, 61, 5, 186, 8, 51, 42, 61, 20, 20, 20, 1, 185, 42, 40, 40, 114, 71, 3, 1, 28, 252, 80, 1, 27, 3, 73, 119, 41, 42, 43, 2, 178, 174, 4, 5, 4, 175, 219, 67, 89, 27, 27, 23, 9, 254, 69, 1, 187, 9, 23, 27, 27, 89, 67, 219, 219, 97, 140, 47, 46, 48, 5, 1, 224, 254, 33, 3, 47, 46, 46, 143, 99, 2, 199, 254, 193, 7, 7, 1, 63, 0, 0, 2, 0, 80, 0, 0, 4, 135, 5, 176, 0, 45, 0, 50, 0, 0, 97, 51, 17, 52, 54, 55, 54, 54, 55, 51, 17, 51, 17, 51, 50, 22, 23, 22, 22, 21, 19, 51, 17, 52, 38, 39, 38, 38, 35, 35, 19, 33, 19, 33, 17, 35, 17, 51, 17, 51, 6, 6, 7, 6, 6, 21, 1, 3, 7, 39, 3, 1, 131, 153, 11, 11, 13, 41, 30, 52, 153, 42, 28, 41, 14, 15, 14, 1, 153, 33, 34, 38, 97, 45, 1, 235, 253, 23, 235, 254, 127, 171, 171, 155, 5, 7, 2, 3, 3, 2, 5, 127, 2, 2, 127, 1, 244, 35, 51, 16, 19, 18, 1, 253, 128, 2, 128, 13, 15, 16, 56, 40, 254, 12, 1, 244, 77, 109, 34, 38, 34, 2, 152, 253, 104, 2, 152, 250, 80, 2, 128, 14, 29, 16, 18, 41, 22, 3, 36, 254, 108, 7, 7, 1, 148, 0, 0, 2, 0, 81, 0, 0, 4, 134, 4, 58, 0, 47, 0, 52, 0, 0, 115, 51, 17, 51, 6, 6, 7, 6, 6, 21, 19, 51, 17, 52, 54, 55, 54, 54, 51, 51, 23, 17, 51, 17, 55, 51, 50, 22, 23, 22, 22, 21, 19, 51, 17, 52, 38, 39, 38, 38, 39, 35, 19, 33, 19, 33, 17, 35, 5, 3, 7, 39, 3, 81, 171, 156, 4, 8, 2, 4, 3, 1, 153, 12, 12, 14, 43, 30, 38, 8, 154, 7, 29, 32, 44, 14, 13, 13, 1, 153, 34, 33, 27, 78, 48, 3, 211, 253, 34, 210, 254, 142, 171, 3, 54, 123, 1, 1, 123, 1, 187, 13, 29, 15, 19, 41, 23, 254, 209, 1, 47, 35, 51, 17, 19, 18, 5, 254, 74, 1, 183, 4, 15, 17, 16, 54, 38, 254, 209, 1, 47, 76, 110, 35, 30, 33, 5, 1, 234, 254, 25, 1, 231, 143, 254, 195, 2, 2, 1, 61, 0, 2, 0, 202, 254, 70, 4, 36, 7, 116, 0, 92, 0, 101, 0, 0, 65, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 34, 6, 7, 6, 6, 21, 22, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 33, 21, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 3, 39, 35, 21, 23, 51, 55, 53, 35, 2, 28, 141, 141, 79, 124, 43, 43, 45, 15, 15, 14, 39, 24, 37, 95, 55, 46, 75, 122, 43, 44, 48, 1, 47, 38, 37, 93, 47, 74, 23, 55, 25, 25, 33, 15, 16, 18, 59, 41, 53, 87, 152, 60, 33, 56, 22, 34, 36, 48, 45, 33, 90, 54, 57, 92, 32, 32, 35, 33, 31, 30, 85, 53, 53, 125, 68, 254, 206, 1, 50, 72, 109, 37, 37, 37, 14, 14, 17, 65, 44, 32, 79, 15, 151, 157, 251, 114, 254, 160, 3, 55, 151, 33, 33, 33, 102, 69, 35, 64, 28, 26, 44, 18, 26, 29, 30, 31, 31, 96, 67, 60, 100, 40, 40, 59, 20, 124, 10, 31, 22, 22, 61, 40, 24, 40, 15, 16, 18, 40, 38, 21, 54, 31, 49, 121, 71, 76, 122, 45, 34, 50, 17, 22, 64, 40, 40, 94, 53, 62, 107, 44, 42, 69, 22, 23, 24, 152, 36, 32, 32, 87, 50, 35, 60, 26, 33, 50, 16, 11, 12, 3, 164, 152, 21, 245, 248, 18, 0, 2, 0, 222, 254, 70, 4, 9, 6, 30, 0, 98, 0, 107, 0, 0, 65, 35, 21, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 34, 6, 7, 6, 6, 21, 22, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 33, 21, 33, 50, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 3, 39, 35, 21, 23, 51, 55, 53, 35, 2, 44, 141, 141, 41, 73, 30, 37, 55, 18, 19, 19, 12, 12, 19, 62, 40, 24, 54, 29, 41, 75, 123, 43, 44, 48, 1, 48, 38, 37, 93, 46, 75, 23, 55, 25, 25, 33, 14, 16, 18, 59, 42, 48, 48, 91, 40, 69, 110, 32, 23, 24, 35, 33, 27, 76, 46, 39, 64, 24, 33, 35, 27, 27, 34, 110, 72, 38, 84, 43, 254, 212, 1, 44, 35, 63, 26, 41, 56, 14, 7, 7, 31, 33, 15, 39, 23, 27, 64, 13, 151, 157, 251, 114, 254, 160, 2, 105, 151, 8, 7, 9, 26, 20, 18, 49, 29, 21, 39, 17, 27, 40, 11, 6, 7, 30, 31, 31, 96, 67, 60, 100, 40, 40, 59, 20, 124, 10, 31, 22, 22, 61, 40, 24, 39, 15, 17, 18, 12, 12, 19, 72, 49, 33, 80, 46, 49, 81, 31, 26, 40, 14, 15, 39, 23, 31, 77, 43, 47, 81, 33, 44, 68, 17, 9, 10, 153, 8, 8, 13, 40, 27, 12, 29, 15, 37, 60, 20, 10, 15, 5, 7, 6, 3, 29, 152, 21, 245, 248, 18, 0, 3, 0, 99, 255, 236, 4, 90, 5, 196, 0, 37, 0, 58, 0, 79, 0, 0, 65, 53, 38, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 37, 53, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 23, 29, 2, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 53, 4, 90, 1, 25, 26, 27, 81, 56, 56, 146, 90, 90, 145, 56, 56, 81, 26, 27, 25, 1, 1, 26, 27, 26, 82, 56, 56, 145, 90, 90, 145, 56, 56, 81, 26, 26, 25, 252, 192, 1, 13, 15, 14, 48, 36, 36, 98, 64, 65, 98, 36, 36, 48, 15, 14, 12, 1, 1, 11, 14, 15, 47, 35, 36, 99, 65, 65, 98, 36, 36, 48, 15, 15, 13, 1, 2, 132, 166, 78, 160, 74, 74, 129, 48, 48, 55, 55, 48, 49, 129, 74, 74, 159, 78, 166, 78, 158, 74, 74, 129, 48, 48, 55, 55, 48, 48, 128, 74, 74, 159, 235, 11, 51, 113, 56, 55, 101, 39, 38, 46, 45, 38, 39, 101, 55, 56, 113, 52, 11, 152, 5, 52, 114, 55, 56, 101, 38, 39, 46, 46, 39, 38, 102, 56, 55, 114, 51, 5, 0, 0, 3, 0, 93, 255, 236, 4, 53, 4, 78, 0, 25, 0, 38, 0, 51, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 50, 22, 23, 22, 22, 23, 33, 54, 54, 55, 54, 54, 19, 34, 38, 39, 38, 38, 39, 33, 6, 6, 7, 6, 6, 93, 68, 64, 63, 183, 115, 114, 182, 64, 63, 68, 68, 63, 64, 183, 115, 114, 182, 63, 64, 68, 1, 235, 68, 107, 38, 38, 45, 8, 253, 161, 7, 46, 38, 38, 106, 70, 70, 107, 38, 39, 44, 7, 2, 96, 7, 44, 38, 38, 107, 2, 39, 22, 117, 200, 74, 74, 84, 84, 74, 74, 200, 117, 22, 117, 201, 74, 74, 85, 85, 74, 74, 201, 1, 26, 52, 45, 45, 121, 68, 68, 121, 45, 45, 52, 252, 204, 53, 46, 46, 123, 70, 70, 123, 46, 46, 53, 0, 0, 1, 0, 26, 0, 0, 4, 225, 5, 195, 0, 22, 0, 0, 65, 1, 35, 1, 51, 1, 54, 54, 55, 54, 54, 51, 51, 55, 39, 34, 6, 7, 6, 6, 7, 1, 7, 2, 71, 254, 164, 209, 1, 250, 170, 1, 131, 14, 28, 18, 17, 42, 27, 13, 1, 46, 56, 88, 35, 35, 56, 24, 254, 254, 34, 1, 118, 4, 58, 250, 80, 4, 135, 38, 55, 18, 17, 16, 171, 1, 34, 36, 36, 110, 77, 252, 215, 129, 0, 1, 0, 81, 0, 0, 4, 96, 4, 77, 0, 26, 0, 0, 97, 51, 1, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 7, 3, 7, 39, 1, 35, 1, 235, 141, 1, 61, 8, 25, 16, 14, 29, 15, 14, 23, 6, 21, 26, 52, 28, 32, 61, 27, 39, 66, 25, 176, 25, 24, 254, 244, 190, 3, 76, 22, 37, 13, 10, 11, 5, 3, 148, 17, 7, 18, 19, 28, 101, 76, 253, 225, 101, 101, 2, 254, 0, 3, 0, 69, 254, 81, 4, 186, 5, 196, 0, 25, 0, 51, 0, 79, 0, 0, 65, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 35, 3, 7, 39, 3, 35, 19, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 2, 138, 39, 38, 39, 112, 73, 69, 105, 35, 36, 35, 35, 36, 35, 105, 69, 73, 113, 38, 38, 39, 185, 12, 13, 14, 44, 33, 32, 43, 13, 13, 12, 12, 13, 13, 43, 32, 32, 45, 14, 13, 12, 177, 16, 56, 20, 57, 80, 28, 27, 34, 9, 241, 164, 98, 7, 4, 73, 164, 159, 24, 5, 17, 13, 14, 41, 29, 12, 46, 12, 1, 231, 1, 225, 115, 188, 67, 66, 72, 72, 66, 67, 188, 115, 254, 31, 115, 187, 66, 67, 72, 72, 67, 66, 187, 2, 123, 253, 211, 72, 116, 40, 41, 44, 44, 41, 40, 116, 72, 2, 45, 72, 115, 41, 40, 43, 43, 40, 41, 115, 250, 42, 5, 11, 53, 40, 39, 92, 39, 4, 226, 253, 197, 47, 47, 2, 59, 251, 197, 94, 21, 62, 29, 29, 41, 4, 2, 0, 3, 0, 55, 254, 81, 4, 187, 4, 78, 0, 25, 0, 51, 0, 79, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 35, 3, 7, 39, 3, 35, 19, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 55, 36, 38, 38, 121, 86, 85, 121, 39, 38, 36, 36, 38, 39, 122, 86, 85, 120, 38, 39, 35, 185, 8, 14, 13, 53, 44, 45, 54, 14, 14, 8, 8, 13, 14, 53, 45, 45, 53, 14, 14, 8, 1, 147, 14, 58, 20, 57, 80, 28, 27, 35, 8, 241, 164, 78, 30, 13, 61, 164, 159, 24, 5, 17, 13, 14, 41, 29, 12, 46, 12, 2, 40, 23, 117, 201, 73, 74, 84, 84, 74, 73, 201, 117, 23, 117, 201, 74, 74, 84, 84, 74, 74, 201, 140, 23, 78, 144, 55, 55, 66, 66, 55, 55, 144, 78, 23, 80, 144, 55, 55, 65, 65, 55, 55, 144, 252, 160, 4, 12, 53, 40, 39, 92, 39, 4, 226, 254, 55, 177, 179, 1, 199, 251, 197, 94, 21, 62, 29, 29, 41, 4, 2, 0, 0, 4, 0, 106, 255, 115, 4, 97, 6, 53, 0, 3, 0, 7, 0, 45, 0, 83, 0, 0, 65, 17, 35, 17, 19, 17, 35, 17, 1, 53, 38, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 39, 21, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 2, 194, 185, 185, 185, 2, 88, 1, 25, 26, 27, 81, 56, 56, 146, 90, 90, 145, 56, 56, 81, 26, 27, 25, 1, 1, 26, 27, 26, 82, 56, 56, 145, 90, 90, 145, 56, 56, 81, 26, 26, 25, 182, 1, 11, 14, 15, 47, 35, 36, 99, 65, 65, 98, 36, 36, 48, 15, 15, 13, 1, 1, 13, 15, 14, 48, 36, 36, 98, 64, 65, 98, 36, 36, 48, 15, 14, 12, 4, 179, 1, 130, 254, 126, 250, 192, 1, 139, 254, 117, 3, 17, 166, 78, 160, 74, 74, 129, 48, 48, 55, 55, 48, 49, 129, 74, 74, 159, 78, 166, 78, 158, 74, 74, 129, 48, 48, 55, 55, 48, 48, 128, 74, 74, 159, 246, 168, 52, 114, 55, 56, 101, 38, 39, 46, 46, 39, 38, 102, 56, 55, 114, 51, 168, 51, 113, 56, 55, 101, 39, 38, 46, 45, 38, 39, 101, 55, 56, 113, 0, 0, 4, 0, 122, 255, 97, 4, 82, 4, 203, 0, 3, 0, 7, 0, 33, 0, 59, 0, 0, 65, 17, 35, 17, 19, 17, 35, 17, 1, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 2, 196, 186, 186, 186, 254, 112, 68, 64, 63, 183, 115, 114, 182, 64, 63, 68, 68, 63, 64, 183, 115, 114, 182, 63, 64, 68, 185, 38, 39, 38, 114, 77, 77, 115, 39, 38, 39, 38, 38, 39, 115, 76, 77, 116, 38, 39, 38, 3, 70, 1, 133, 254, 123, 252, 27, 1, 151, 254, 105, 2, 198, 22, 117, 200, 74, 74, 84, 84, 74, 74, 200, 117, 22, 117, 201, 74, 74, 85, 85, 74, 74, 201, 139, 22, 79, 145, 55, 55, 65, 65, 55, 55, 145, 79, 22, 80, 145, 55, 55, 64, 64, 55, 55, 145, 0, 0, 3, 0, 77, 255, 235, 4, 131, 7, 81, 0, 98, 0, 134, 0, 147, 0, 0, 65, 21, 50, 22, 23, 22, 22, 23, 22, 22, 23, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 35, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 55, 54, 54, 55, 53, 34, 6, 7, 6, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 39, 38, 38, 19, 35, 34, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 51, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 51, 5, 23, 54, 54, 55, 54, 54, 53, 53, 35, 21, 20, 6, 3, 34, 31, 51, 21, 14, 24, 8, 9, 9, 1, 1, 23, 21, 17, 43, 26, 27, 45, 17, 12, 18, 5, 3, 3, 186, 3, 4, 6, 21, 15, 16, 41, 24, 29, 46, 17, 18, 20, 5, 6, 7, 26, 18, 20, 54, 31, 79, 130, 46, 21, 33, 12, 16, 16, 46, 42, 41, 116, 71, 47, 82, 32, 18, 32, 12, 11, 30, 18, 32, 83, 49, 70, 117, 42, 41, 46, 15, 14, 12, 35, 22, 47, 130, 109, 40, 45, 77, 34, 34, 62, 30, 31, 63, 34, 57, 90, 30, 26, 28, 127, 1, 1, 11, 9, 13, 43, 30, 20, 40, 21, 20, 43, 23, 48, 116, 73, 42, 254, 32, 76, 25, 47, 18, 18, 22, 139, 34, 5, 175, 151, 21, 20, 14, 39, 24, 26, 63, 36, 253, 43, 55, 84, 26, 20, 21, 21, 20, 15, 42, 26, 15, 32, 17, 1, 252, 254, 4, 19, 35, 15, 28, 44, 15, 15, 17, 25, 24, 26, 80, 51, 2, 213, 28, 50, 22, 32, 51, 18, 20, 21, 1, 151, 51, 50, 22, 54, 31, 39, 93, 54, 253, 43, 87, 133, 45, 45, 47, 29, 28, 17, 42, 26, 25, 42, 16, 29, 30, 47, 45, 45, 133, 87, 2, 213, 51, 89, 37, 34, 58, 24, 50, 51, 1, 36, 19, 14, 14, 33, 14, 13, 19, 30, 30, 27, 79, 52, 36, 18, 24, 37, 13, 19, 16, 11, 9, 9, 22, 11, 24, 40, 241, 56, 13, 45, 27, 26, 59, 29, 102, 96, 38, 71, 0, 0, 3, 0, 103, 255, 235, 4, 124, 5, 222, 0, 86, 0, 122, 0, 135, 0, 0, 65, 21, 50, 22, 23, 22, 22, 21, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 35, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 53, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 37, 51, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 51, 53, 35, 34, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 19, 23, 54, 54, 55, 54, 54, 53, 53, 35, 21, 20, 6, 3, 45, 27, 47, 18, 28, 30, 18, 16, 15, 40, 25, 24, 41, 16, 15, 21, 6, 3, 4, 186, 4, 3, 6, 25, 18, 15, 38, 22, 24, 39, 14, 17, 19, 29, 27, 19, 46, 28, 75, 123, 44, 44, 49, 43, 40, 39, 110, 67, 42, 74, 31, 23, 39, 15, 11, 26, 15, 33, 86, 52, 67, 110, 40, 39, 43, 49, 44, 45, 123, 253, 202, 127, 1, 1, 14, 12, 14, 40, 27, 39, 81, 49, 21, 45, 25, 32, 73, 42, 43, 40, 39, 69, 31, 22, 42, 20, 48, 91, 52, 58, 91, 30, 26, 27, 201, 76, 25, 47, 18, 18, 22, 139, 34, 4, 77, 151, 20, 19, 29, 101, 71, 254, 134, 52, 79, 26, 22, 23, 16, 16, 14, 40, 26, 16, 36, 20, 1, 13, 254, 243, 18, 33, 15, 31, 46, 15, 13, 13, 21, 20, 26, 81, 54, 1, 122, 71, 100, 29, 20, 20, 151, 50, 49, 50, 146, 96, 254, 134, 87, 132, 44, 45, 45, 22, 21, 18, 48, 31, 22, 38, 16, 32, 32, 45, 45, 44, 132, 87, 1, 122, 96, 146, 50, 49, 50, 147, 18, 26, 39, 13, 16, 15, 39, 23, 10, 21, 8, 11, 14, 127, 14, 12, 8, 20, 10, 23, 39, 30, 31, 27, 78, 51, 254, 234, 56, 13, 45, 27, 26, 59, 29, 102, 96, 38, 71, 0, 2, 0, 113, 255, 236, 4, 133, 7, 4, 0, 7, 0, 70, 0, 0, 65, 21, 33, 21, 51, 53, 33, 39, 19, 35, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 35, 3, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 3, 35, 3, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 1, 27, 1, 12, 168, 1, 29, 1, 153, 184, 1, 17, 16, 14, 39, 24, 29, 46, 17, 11, 17, 4, 3, 3, 191, 1, 3, 4, 5, 20, 14, 16, 42, 25, 28, 43, 15, 12, 13, 1, 184, 1, 43, 39, 39, 109, 67, 46, 80, 31, 21, 34, 13, 12, 30, 19, 32, 83, 50, 66, 109, 39, 39, 43, 7, 4, 108, 125, 125, 108, 254, 172, 251, 142, 47, 74, 24, 21, 22, 23, 22, 15, 40, 24, 15, 32, 17, 4, 114, 251, 142, 19, 35, 15, 27, 42, 15, 17, 18, 29, 28, 24, 66, 41, 4, 114, 251, 142, 82, 126, 43, 43, 44, 27, 27, 17, 47, 29, 27, 44, 17, 29, 30, 44, 43, 43, 126, 82, 0, 0, 2, 0, 95, 255, 235, 4, 122, 5, 176, 0, 7, 0, 64, 0, 0, 65, 21, 33, 21, 51, 53, 33, 39, 19, 35, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 3, 35, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 3, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 1, 4, 1, 15, 168, 1, 32, 1, 160, 185, 23, 22, 13, 35, 20, 47, 64, 12, 4, 4, 1, 191, 4, 4, 13, 64, 46, 26, 42, 14, 15, 16, 185, 1, 44, 39, 39, 110, 67, 54, 90, 33, 15, 24, 10, 11, 28, 16, 33, 88, 52, 66, 110, 40, 39, 43, 5, 176, 108, 127, 127, 108, 254, 139, 253, 1, 54, 79, 23, 15, 15, 59, 54, 16, 37, 20, 2, 255, 253, 1, 21, 37, 17, 53, 58, 24, 24, 23, 70, 45, 2, 255, 253, 1, 82, 126, 42, 43, 44, 36, 36, 15, 38, 22, 24, 41, 16, 33, 33, 44, 43, 42, 126, 82, 0, 0, 1, 0, 151, 254, 130, 4, 101, 5, 197, 0, 42, 0, 0, 65, 17, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 17, 3, 42, 109, 88, 136, 46, 47, 48, 41, 40, 40, 117, 75, 71, 108, 37, 36, 38, 1, 185, 67, 61, 62, 176, 110, 114, 184, 65, 65, 70, 66, 62, 61, 175, 110, 254, 130, 2, 0, 77, 66, 65, 172, 95, 249, 94, 171, 65, 64, 77, 48, 43, 44, 124, 75, 110, 179, 64, 64, 69, 97, 84, 85, 228, 131, 247, 121, 213, 82, 83, 107, 14, 254, 145, 0, 0, 1, 0, 191, 254, 130, 4, 59, 4, 78, 0, 45, 0, 0, 65, 17, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 17, 2, 253, 102, 77, 108, 35, 35, 32, 33, 35, 35, 108, 76, 52, 90, 33, 32, 38, 175, 63, 56, 56, 154, 91, 70, 122, 50, 54, 83, 28, 32, 33, 51, 49, 49, 145, 95, 254, 130, 2, 0, 69, 56, 55, 139, 71, 42, 69, 139, 56, 55, 69, 38, 33, 33, 88, 49, 83, 143, 53, 53, 61, 35, 31, 33, 95, 57, 63, 148, 78, 42, 98, 179, 72, 72, 97, 16, 254, 144, 0, 0, 1, 0, 118, 0, 0, 4, 146, 5, 62, 0, 19, 0, 0, 65, 19, 5, 55, 37, 19, 35, 3, 37, 7, 5, 3, 37, 7, 5, 3, 51, 19, 5, 55, 2, 90, 208, 1, 32, 72, 254, 219, 231, 165, 188, 254, 221, 70, 1, 34, 205, 254, 219, 68, 1, 33, 225, 168, 182, 1, 35, 68, 1, 190, 1, 109, 170, 122, 171, 1, 152, 254, 181, 171, 125, 171, 254, 147, 171, 123, 171, 254, 114, 1, 65, 170, 123, 0, 0, 1, 0, 209, 4, 166, 3, 145, 5, 252, 0, 7, 0, 0, 65, 33, 53, 39, 23, 33, 7, 23, 1, 119, 2, 26, 165, 1, 253, 229, 1, 166, 5, 35, 216, 1, 108, 233, 1, 0, 0, 1, 0, 252, 5, 23, 3, 240, 6, 21, 0, 35, 0, 0, 65, 35, 21, 51, 50, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 51, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 1, 38, 42, 44, 61, 104, 45, 36, 67, 30, 34, 62, 31, 27, 45, 15, 13, 14, 128, 28, 27, 31, 93, 59, 40, 72, 35, 36, 72, 39, 40, 90, 5, 150, 126, 21, 16, 13, 29, 13, 14, 19, 15, 15, 13, 39, 26, 18, 36, 51, 78, 27, 31, 31, 19, 14, 14, 33, 14, 14, 19, 0, 0, 1, 1, 195, 5, 22, 2, 178, 6, 87, 0, 5, 0, 0, 65, 23, 55, 39, 55, 35, 1, 195, 161, 78, 60, 1, 180, 5, 220, 198, 65, 116, 140, 0, 0, 1, 2, 60, 5, 22, 3, 42, 6, 87, 0, 5, 0, 0, 65, 55, 53, 35, 21, 7, 2, 136, 162, 180, 58, 5, 22, 198, 123, 140, 116, 0, 0, 8, 254, 171, 254, 196, 6, 71, 5, 175, 0, 19, 0, 39, 0, 59, 0, 79, 0, 99, 0, 119, 0, 139, 0, 159, 0, 0, 65, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 19, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 3, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 3, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 19, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 152, 113, 42, 55, 54, 45, 112, 30, 27, 28, 78, 48, 48, 78, 27, 28, 29, 2, 79, 114, 43, 53, 54, 45, 113, 30, 28, 28, 78, 48, 48, 78, 27, 27, 30, 187, 113, 44, 53, 54, 45, 112, 30, 27, 28, 78, 48, 48, 78, 27, 27, 30, 197, 113, 44, 53, 54, 45, 112, 30, 27, 28, 78, 48, 48, 78, 27, 27, 30, 253, 192, 113, 44, 53, 54, 45, 112, 30, 27, 28, 78, 48, 48, 78, 27, 28, 29, 253, 190, 114, 42, 55, 54, 45, 112, 30, 27, 28, 78, 48, 48, 78, 27, 28, 30, 176, 113, 45, 52, 54, 45, 112, 30, 27, 28, 78, 48, 48, 77, 27, 28, 30, 166, 114, 44, 52, 54, 45, 113, 30, 28, 28, 78, 48, 48, 77, 27, 28, 30, 4, 243, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 254, 194, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 253, 224, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 253, 208, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 254, 187, 39, 62, 61, 40, 42, 69, 25, 24, 28, 28, 24, 25, 69, 4, 240, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 253, 224, 40, 61, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 253, 208, 40, 61, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 0, 8, 254, 180, 254, 99, 5, 244, 5, 198, 0, 4, 0, 9, 0, 14, 0, 19, 0, 24, 0, 29, 0, 34, 0, 39, 0, 0, 69, 35, 3, 51, 19, 3, 51, 19, 35, 3, 1, 21, 5, 53, 37, 5, 53, 37, 21, 5, 1, 23, 37, 39, 5, 1, 39, 5, 23, 37, 3, 55, 3, 7, 19, 1, 7, 19, 55, 3, 2, 183, 137, 70, 96, 122, 206, 136, 70, 96, 122, 2, 178, 1, 90, 254, 179, 251, 103, 254, 166, 1, 77, 3, 169, 97, 1, 38, 68, 254, 191, 253, 82, 97, 254, 218, 69, 1, 64, 138, 98, 198, 65, 148, 3, 211, 97, 197, 66, 149, 60, 254, 159, 1, 83, 4, 176, 1, 96, 254, 174, 254, 3, 139, 71, 98, 124, 210, 139, 71, 98, 124, 2, 69, 99, 200, 68, 153, 252, 27, 99, 200, 69, 153, 3, 88, 98, 1, 43, 69, 254, 186, 253, 67, 99, 254, 213, 71, 1, 69, 0, 3, 0, 191, 0, 0, 4, 121, 5, 176, 0, 3, 0, 20, 0, 35, 0, 0, 65, 1, 7, 1, 37, 33, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 33, 17, 51, 17, 17, 33, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 4, 49, 254, 148, 131, 1, 107, 253, 203, 1, 31, 98, 175, 66, 66, 77, 77, 66, 66, 175, 98, 254, 40, 185, 1, 31, 64, 109, 40, 39, 45, 45, 40, 40, 108, 64, 1, 211, 1, 236, 70, 254, 20, 187, 1, 58, 55, 55, 161, 105, 105, 162, 55, 55, 58, 2, 250, 80, 2, 224, 2, 56, 1, 40, 37, 37, 106, 66, 66, 103, 36, 36, 39, 1, 0, 3, 0, 173, 254, 96, 4, 63, 4, 78, 0, 3, 0, 33, 0, 59, 0, 0, 101, 1, 7, 1, 19, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 39, 35, 17, 51, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 39, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 54, 254, 150, 113, 1, 107, 121, 56, 54, 54, 160, 104, 60, 104, 42, 29, 51, 22, 9, 169, 185, 20, 47, 26, 44, 105, 62, 102, 159, 54, 54, 56, 185, 29, 30, 37, 116, 84, 44, 72, 30, 32, 51, 19, 19, 50, 31, 30, 73, 43, 78, 112, 37, 36, 35, 2, 1, 118, 94, 254, 139, 2, 108, 21, 121, 203, 73, 73, 82, 25, 25, 17, 44, 27, 118, 250, 38, 2, 8, 23, 37, 15, 24, 25, 84, 74, 74, 201, 137, 21, 72, 134, 52, 63, 77, 19, 17, 19, 56, 34, 2, 9, 34, 56, 19, 18, 21, 64, 54, 55, 143, 0, 1, 0, 182, 0, 0, 4, 71, 6, 255, 0, 7, 0, 0, 65, 17, 35, 17, 33, 17, 51, 17, 4, 71, 185, 253, 40, 186, 5, 24, 1, 231, 254, 177, 250, 80, 5, 24, 0, 1, 0, 182, 0, 0, 4, 49, 5, 119, 0, 7, 0, 0, 65, 17, 35, 17, 33, 17, 51, 17, 4, 49, 186, 253, 63, 186, 3, 161, 1, 214, 254, 195, 251, 198, 3, 161, 0, 1, 0, 185, 254, 224, 4, 127, 5, 176, 0, 33, 0, 0, 65, 53, 33, 17, 51, 17, 51, 50, 22, 23, 22, 22, 23, 20, 6, 7, 6, 6, 35, 23, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 4, 52, 252, 133, 186, 184, 96, 147, 50, 58, 59, 1, 30, 34, 34, 111, 81, 2, 115, 177, 60, 60, 61, 80, 76, 77, 221, 142, 184, 5, 24, 152, 250, 80, 2, 160, 48, 45, 53, 163, 106, 90, 147, 52, 52, 57, 147, 73, 69, 69, 203, 131, 134, 214, 75, 74, 80, 1, 214, 0, 0, 1, 0, 184, 254, 228, 4, 82, 4, 58, 0, 33, 0, 0, 65, 53, 33, 17, 51, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 4, 43, 252, 141, 186, 218, 71, 121, 45, 45, 51, 28, 30, 30, 96, 68, 48, 103, 148, 47, 47, 44, 79, 69, 70, 189, 111, 218, 3, 161, 153, 251, 198, 1, 228, 41, 39, 40, 118, 76, 56, 96, 39, 40, 59, 18, 146, 19, 103, 66, 66, 142, 58, 113, 177, 61, 60, 65, 1, 27, 0, 1, 0, 174, 0, 0, 4, 196, 5, 176, 0, 20, 0, 0, 65, 35, 1, 35, 17, 35, 17, 35, 17, 35, 17, 51, 17, 51, 21, 51, 53, 51, 1, 51, 1, 4, 152, 216, 254, 215, 54, 149, 101, 185, 185, 101, 149, 54, 1, 70, 231, 254, 133, 5, 176, 253, 123, 1, 1, 254, 255, 2, 133, 250, 80, 2, 148, 245, 245, 253, 108, 3, 1, 0, 0, 1, 0, 163, 0, 0, 4, 126, 4, 58, 0, 20, 0, 0, 65, 35, 1, 35, 53, 35, 21, 35, 17, 35, 17, 51, 17, 51, 21, 51, 53, 51, 1, 51, 1, 4, 89, 223, 254, 253, 44, 148, 90, 186, 186, 90, 148, 51, 1, 22, 234, 254, 137, 4, 58, 254, 54, 213, 213, 1, 202, 251, 198, 1, 205, 194, 194, 254, 51, 2, 56, 0, 0, 1, 0, 45, 0, 0, 4, 166, 5, 176, 0, 14, 0, 0, 65, 1, 51, 1, 1, 35, 1, 35, 17, 33, 21, 33, 17, 51, 17, 2, 149, 1, 47, 226, 254, 147, 1, 69, 211, 254, 226, 98, 254, 2, 1, 70, 184, 2, 147, 253, 109, 2, 239, 2, 193, 253, 122, 2, 134, 152, 250, 232, 2, 147, 0, 1, 0, 56, 0, 0, 4, 177, 4, 58, 0, 14, 0, 0, 65, 1, 51, 1, 1, 35, 3, 35, 17, 33, 21, 33, 17, 51, 17, 2, 188, 1, 11, 234, 254, 148, 1, 73, 224, 249, 127, 254, 2, 1, 69, 185, 1, 205, 254, 51, 2, 56, 2, 2, 254, 54, 1, 202, 153, 252, 95, 1, 205, 0, 0, 1, 0, 114, 0, 0, 4, 154, 5, 176, 0, 13, 0, 0, 65, 17, 35, 17, 51, 17, 33, 17, 51, 17, 33, 53, 33, 17, 1, 43, 185, 185, 1, 115, 184, 1, 68, 254, 4, 3, 31, 2, 145, 250, 80, 2, 135, 253, 121, 5, 24, 152, 253, 111, 0, 1, 0, 110, 0, 0, 4, 156, 4, 58, 0, 13, 0, 0, 65, 17, 35, 17, 51, 17, 33, 17, 51, 17, 33, 53, 33, 17, 1, 39, 185, 185, 1, 124, 185, 1, 64, 254, 7, 2, 101, 1, 213, 251, 198, 1, 206, 254, 50, 3, 161, 153, 254, 43, 0, 1, 0, 109, 254, 223, 4, 154, 5, 176, 0, 47, 0, 0, 65, 17, 33, 17, 51, 17, 33, 17, 51, 17, 51, 22, 22, 23, 22, 22, 23, 22, 22, 23, 20, 6, 7, 6, 6, 7, 6, 6, 35, 23, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 2, 225, 253, 140, 184, 1, 3, 185, 3, 38, 70, 27, 33, 48, 14, 11, 11, 1, 8, 9, 12, 38, 30, 20, 53, 32, 2, 54, 94, 39, 61, 84, 22, 16, 15, 24, 24, 25, 74, 50, 49, 124, 69, 3, 65, 2, 111, 250, 80, 5, 24, 250, 232, 2, 158, 1, 24, 22, 26, 85, 55, 43, 101, 57, 57, 105, 43, 54, 79, 24, 18, 18, 147, 23, 24, 37, 121, 84, 54, 129, 73, 84, 149, 62, 65, 104, 36, 37, 39, 1, 0, 1, 0, 116, 254, 229, 4, 124, 4, 58, 0, 35, 0, 0, 115, 51, 17, 51, 17, 51, 17, 51, 50, 22, 23, 22, 22, 23, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 52, 38, 39, 38, 38, 35, 35, 17, 33, 116, 185, 231, 185, 8, 54, 87, 31, 31, 34, 1, 20, 23, 24, 77, 57, 48, 85, 123, 42, 45, 41, 2, 62, 56, 56, 156, 93, 8, 253, 167, 3, 161, 252, 95, 1, 227, 43, 40, 40, 117, 73, 54, 96, 39, 40, 60, 18, 146, 18, 94, 60, 69, 151, 61, 109, 176, 62, 62, 66, 1, 181, 0, 2, 0, 104, 255, 226, 4, 80, 5, 197, 0, 77, 0, 103, 0, 0, 69, 53, 34, 38, 39, 54, 54, 55, 54, 54, 55, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 23, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 55, 54, 54, 51, 39, 34, 6, 7, 6, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 22, 22, 1, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 20, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 4, 80, 44, 78, 35, 26, 44, 17, 28, 30, 1, 43, 40, 40, 115, 72, 72, 115, 40, 40, 43, 27, 26, 24, 68, 43, 16, 32, 17, 46, 79, 33, 38, 59, 19, 16, 17, 7, 8, 11, 33, 23, 15, 35, 20, 1, 50, 86, 36, 46, 68, 20, 15, 15, 24, 23, 30, 98, 65, 53, 127, 72, 60, 109, 48, 63, 146, 254, 148, 15, 16, 16, 46, 32, 31, 47, 16, 15, 15, 19, 19, 13, 35, 21, 31, 50, 18, 21, 22, 30, 157, 13, 12, 33, 76, 41, 70, 161, 88, 1, 104, 104, 180, 67, 66, 76, 78, 67, 67, 180, 101, 254, 173, 81, 148, 64, 59, 103, 43, 4, 4, 30, 28, 33, 97, 60, 52, 120, 65, 1, 25, 55, 101, 44, 58, 93, 29, 17, 20, 158, 38, 34, 42, 132, 80, 56, 127, 68, 254, 233, 78, 146, 65, 84, 141, 47, 38, 43, 29, 27, 31, 33, 2, 157, 1, 88, 67, 120, 46, 45, 54, 51, 45, 45, 122, 69, 254, 149, 69, 128, 55, 36, 65, 27, 31, 76, 44, 53, 125, 0, 0, 2, 0, 92, 255, 235, 4, 139, 4, 79, 0, 77, 0, 109, 0, 0, 69, 53, 34, 38, 39, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 53, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 22, 22, 1, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 4, 139, 48, 88, 40, 22, 37, 15, 26, 28, 17, 17, 19, 55, 38, 35, 87, 50, 50, 93, 29, 37, 49, 18, 20, 21, 38, 36, 23, 61, 37, 22, 45, 24, 72, 114, 39, 39, 42, 22, 21, 21, 62, 40, 63, 109, 42, 31, 50, 17, 20, 20, 33, 30, 29, 85, 51, 55, 133, 76, 74, 131, 57, 69, 158, 254, 105, 8, 8, 8, 27, 20, 12, 30, 18, 20, 33, 13, 19, 28, 8, 6, 6, 1, 18, 17, 13, 35, 22, 38, 59, 19, 21, 21, 12, 157, 11, 10, 27, 59, 32, 59, 134, 73, 105, 58, 109, 48, 54, 88, 29, 30, 32, 31, 26, 33, 67, 43, 48, 116, 63, 104, 78, 142, 61, 40, 72, 31, 6, 6, 67, 59, 58, 158, 91, 60, 66, 115, 43, 42, 49, 158, 47, 42, 31, 80, 45, 51, 116, 63, 58, 84, 154, 65, 63, 104, 37, 40, 43, 35, 32, 28, 29, 2, 69, 108, 40, 73, 31, 33, 53, 16, 11, 11, 16, 15, 19, 67, 39, 30, 67, 35, 108, 54, 99, 43, 32, 57, 24, 28, 69, 41, 41, 97, 0, 1, 0, 57, 254, 161, 4, 182, 5, 176, 0, 15, 0, 0, 65, 17, 33, 17, 51, 19, 35, 17, 35, 17, 33, 17, 51, 53, 33, 21, 1, 70, 2, 185, 165, 18, 145, 185, 254, 147, 238, 253, 76, 5, 24, 250, 232, 254, 161, 1, 251, 5, 20, 250, 231, 4, 129, 151, 151, 0, 0, 1, 0, 52, 254, 191, 4, 139, 4, 58, 0, 15, 0, 0, 65, 17, 33, 17, 51, 19, 35, 17, 35, 17, 33, 17, 51, 53, 33, 21, 1, 28, 2, 183, 166, 18, 128, 185, 254, 131, 228, 253, 123, 3, 163, 252, 93, 254, 191, 1, 216, 3, 163, 252, 93, 3, 12, 151, 151, 0, 0, 2, 0, 171, 0, 0, 4, 39, 5, 176, 0, 3, 0, 35, 0, 0, 65, 17, 35, 17, 1, 35, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 17, 51, 2, 166, 149, 2, 22, 185, 32, 65, 33, 39, 84, 46, 57, 84, 27, 28, 27, 185, 55, 52, 52, 152, 97, 48, 81, 36, 35, 66, 33, 185, 1, 53, 2, 188, 253, 68, 4, 123, 253, 69, 11, 18, 7, 8, 9, 29, 35, 34, 113, 85, 1, 200, 254, 56, 121, 170, 54, 54, 49, 7, 7, 7, 18, 12, 253, 165, 0, 2, 0, 146, 0, 0, 4, 44, 4, 58, 0, 3, 0, 32, 0, 0, 101, 17, 35, 17, 5, 17, 35, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 17, 2, 175, 150, 2, 19, 185, 26, 53, 27, 45, 96, 51, 64, 97, 32, 30, 31, 185, 62, 58, 57, 162, 100, 85, 145, 68, 211, 2, 54, 253, 202, 211, 4, 58, 253, 233, 6, 11, 4, 7, 7, 32, 34, 31, 94, 64, 1, 59, 254, 197, 103, 153, 50, 51, 50, 18, 17, 254, 117, 0, 1, 0, 227, 0, 0, 4, 95, 5, 176, 0, 25, 0, 0, 115, 51, 17, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 19, 52, 38, 39, 38, 38, 35, 34, 6, 7, 17, 35, 227, 185, 71, 144, 83, 57, 84, 28, 27, 27, 185, 1, 55, 52, 53, 152, 97, 97, 136, 65, 185, 2, 186, 24, 29, 29, 34, 35, 113, 85, 254, 57, 1, 199, 121, 170, 54, 54, 49, 28, 24, 2, 93, 0, 0, 2, 0, 38, 255, 234, 4, 137, 5, 195, 0, 57, 0, 78, 0, 0, 83, 20, 22, 23, 22, 22, 23, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 33, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 38, 38, 39, 38, 38, 39, 5, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 38, 33, 33, 32, 97, 65, 67, 65, 65, 191, 124, 111, 164, 36, 47, 22, 53, 32, 33, 77, 47, 88, 124, 39, 40, 36, 2, 166, 16, 16, 21, 69, 49, 46, 121, 73, 63, 116, 49, 50, 80, 29, 31, 34, 23, 37, 13, 19, 18, 1, 1, 40, 23, 21, 16, 43, 27, 29, 68, 40, 41, 64, 24, 30, 39, 12, 8, 8, 4, 57, 75, 126, 47, 48, 63, 12, 144, 128, 215, 78, 79, 88, 66, 34, 136, 14, 30, 13, 13, 16, 70, 60, 59, 159, 90, 136, 188, 83, 144, 60, 75, 114, 38, 35, 36, 39, 36, 36, 105, 65, 69, 169, 99, 5, 10, 32, 21, 31, 85, 50, 247, 16, 91, 151, 57, 41, 64, 22, 23, 24, 23, 21, 26, 80, 50, 39, 90, 48, 112, 0, 2, 0, 38, 255, 236, 4, 133, 4, 78, 0, 44, 0, 58, 0, 0, 69, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 39, 53, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 38, 38, 39, 35, 20, 22, 23, 22, 22, 23, 21, 20, 22, 23, 22, 22, 19, 50, 22, 23, 22, 22, 21, 21, 33, 54, 54, 55, 54, 54, 2, 254, 137, 176, 48, 74, 48, 139, 100, 69, 105, 36, 36, 38, 3, 2, 166, 51, 52, 52, 159, 107, 80, 145, 58, 58, 80, 15, 59, 54, 1, 148, 27, 27, 32, 100, 69, 66, 61, 61, 175, 80, 61, 89, 29, 29, 28, 254, 25, 9, 44, 32, 32, 84, 20, 85, 50, 124, 46, 63, 58, 50, 50, 134, 73, 2, 120, 105, 178, 65, 64, 73, 64, 58, 59, 163, 97, 21, 107, 77, 66, 110, 43, 49, 64, 12, 1, 117, 198, 72, 73, 81, 3, 202, 46, 38, 39, 100, 54, 24, 64, 110, 41, 40, 46, 0, 1, 0, 200, 254, 218, 4, 140, 5, 176, 0, 38, 0, 0, 65, 1, 35, 1, 35, 17, 35, 17, 51, 17, 51, 50, 22, 23, 22, 22, 23, 20, 6, 7, 6, 6, 7, 6, 6, 35, 23, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 2, 201, 1, 184, 215, 254, 101, 142, 185, 185, 224, 93, 139, 46, 45, 46, 1, 12, 13, 14, 49, 35, 31, 81, 51, 2, 115, 175, 59, 59, 61, 60, 57, 57, 168, 106, 3, 53, 2, 123, 253, 140, 2, 116, 250, 80, 2, 154, 56, 53, 53, 154, 99, 58, 103, 43, 49, 74, 26, 22, 24, 146, 73, 70, 69, 202, 131, 119, 197, 73, 73, 93, 15, 0, 1, 0, 180, 254, 254, 4, 60, 4, 58, 0, 34, 0, 0, 65, 1, 35, 1, 35, 17, 35, 17, 51, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 2, 175, 1, 141, 224, 254, 136, 119, 185, 185, 199, 71, 119, 44, 43, 50, 25, 28, 28, 87, 63, 49, 97, 139, 44, 44, 42, 57, 51, 51, 143, 2, 100, 1, 214, 254, 54, 1, 202, 251, 198, 1, 205, 32, 34, 35, 109, 76, 51, 91, 36, 37, 56, 16, 146, 18, 98, 63, 62, 136, 56, 96, 150, 55, 54, 68, 0, 0, 1, 0, 182, 254, 75, 4, 25, 5, 176, 0, 29, 0, 0, 65, 35, 17, 51, 17, 33, 17, 20, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 35, 17, 33, 1, 111, 185, 185, 1, 241, 67, 65, 6, 26, 14, 15, 27, 8, 14, 29, 52, 29, 76, 118, 41, 40, 42, 185, 254, 15, 5, 176, 250, 80, 2, 133, 253, 34, 87, 109, 2, 2, 1, 5, 3, 147, 10, 8, 47, 45, 45, 129, 82, 6, 9, 253, 108, 0, 0, 1, 0, 179, 254, 75, 4, 22, 4, 58, 0, 29, 0, 0, 65, 35, 17, 51, 17, 33, 17, 20, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 35, 17, 33, 1, 108, 185, 185, 1, 241, 71, 66, 7, 26, 14, 15, 28, 8, 14, 29, 53, 30, 76, 120, 41, 41, 44, 185, 254, 15, 4, 58, 251, 198, 1, 206, 253, 217, 90, 106, 2, 2, 1, 5, 3, 147, 10, 8, 47, 45, 44, 129, 83, 4, 147, 254, 43, 0, 0, 2, 0, 90, 255, 235, 4, 87, 5, 196, 0, 52, 0, 72, 0, 0, 65, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 33, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 38, 38, 3, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 33, 6, 6, 7, 6, 6, 7, 6, 6, 2, 62, 72, 114, 43, 44, 59, 17, 47, 25, 61, 37, 37, 89, 53, 54, 91, 36, 45, 64, 20, 22, 20, 252, 188, 17, 18, 26, 98, 67, 55, 139, 83, 70, 129, 55, 70, 109, 35, 24, 26, 30, 30, 33, 98, 64, 58, 142, 63, 60, 94, 36, 40, 58, 13, 9, 8, 2, 139, 1, 18, 18, 21, 66, 45, 34, 82, 5, 196, 22, 16, 16, 35, 12, 136, 14, 31, 13, 12, 16, 26, 24, 28, 90, 51, 56, 133, 71, 93, 166, 73, 131, 57, 89, 140, 43, 36, 38, 1, 40, 37, 46, 145, 91, 64, 147, 79, 218, 90, 162, 69, 75, 118, 41, 36, 39, 250, 190, 29, 27, 33, 96, 58, 36, 80, 42, 90, 63, 121, 52, 64, 103, 34, 26, 28, 0, 1, 0, 148, 255, 235, 4, 82, 5, 176, 0, 45, 0, 0, 65, 1, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 1, 39, 33, 21, 3, 74, 254, 122, 143, 83, 126, 41, 37, 39, 42, 39, 39, 113, 71, 63, 105, 37, 37, 42, 185, 81, 66, 66, 169, 87, 106, 179, 66, 65, 73, 59, 61, 78, 192, 66, 1, 1, 155, 1, 252, 155, 5, 24, 254, 59, 151, 38, 39, 36, 110, 75, 59, 100, 36, 36, 41, 43, 38, 37, 99, 57, 111, 160, 52, 52, 50, 57, 55, 55, 158, 102, 100, 161, 54, 69, 56, 1, 236, 118, 152, 0, 0, 1, 0, 137, 254, 117, 4, 72, 4, 58, 0, 45, 0, 0, 65, 1, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 1, 39, 33, 21, 3, 44, 254, 140, 141, 86, 130, 41, 36, 37, 42, 39, 39, 113, 72, 63, 104, 37, 38, 41, 186, 82, 66, 66, 168, 87, 106, 180, 66, 65, 73, 59, 58, 67, 195, 64, 1, 1, 142, 1, 252, 155, 3, 161, 254, 59, 151, 40, 42, 36, 108, 72, 59, 99, 36, 36, 40, 43, 37, 37, 99, 56, 110, 160, 52, 52, 50, 57, 55, 55, 158, 101, 98, 155, 57, 65, 63, 1, 239, 118, 153, 0, 255, 255, 0, 66, 254, 75, 4, 123, 5, 176, 4, 38, 1, 123, 75, 0, 0, 39, 2, 106, 255, 13, 0, 63, 0, 7, 2, 111, 255, 79, 0, 0, 255, 255, 0, 116, 254, 75, 4, 124, 4, 58, 4, 38, 1, 181, 82, 0, 0, 39, 2, 106, 255, 63, 255, 100, 0, 7, 2, 111, 255, 68, 0, 0, 0, 2, 0, 97, 0, 0, 4, 48, 5, 176, 0, 16, 0, 31, 0, 0, 65, 33, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 33, 17, 35, 17, 33, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 33, 3, 119, 254, 209, 117, 181, 62, 62, 65, 65, 62, 62, 181, 117, 1, 232, 185, 254, 209, 78, 114, 37, 37, 35, 35, 37, 37, 114, 78, 1, 47, 3, 109, 63, 57, 57, 160, 97, 96, 163, 59, 59, 66, 5, 176, 250, 231, 49, 41, 41, 106, 57, 56, 102, 39, 38, 46, 0, 0, 2, 0, 77, 0, 0, 4, 141, 5, 176, 0, 36, 0, 51, 0, 0, 97, 33, 50, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 17, 35, 17, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 55, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 1, 207, 1, 92, 71, 127, 48, 47, 57, 2, 2, 40, 27, 179, 29, 32, 2, 1, 22, 21, 21, 61, 41, 49, 185, 114, 94, 144, 49, 49, 50, 50, 49, 49, 144, 208, 114, 54, 77, 24, 24, 22, 22, 24, 24, 77, 54, 114, 60, 60, 60, 178, 118, 96, 192, 91, 91, 197, 91, 72, 119, 43, 43, 47, 1, 1, 5, 26, 253, 189, 64, 57, 58, 160, 95, 95, 162, 59, 60, 67, 151, 50, 41, 41, 106, 56, 55, 102, 39, 39, 46, 0, 0, 2, 0, 101, 255, 234, 4, 147, 6, 24, 0, 79, 0, 114, 0, 0, 83, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 55, 17, 35, 17, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 37, 17, 22, 22, 23, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 101, 10, 9, 17, 63, 42, 32, 80, 47, 47, 77, 32, 16, 28, 13, 13, 33, 20, 32, 85, 52, 52, 91, 40, 40, 47, 18, 15, 17, 1, 1, 15, 14, 8, 19, 11, 178, 11, 19, 7, 11, 11, 1, 1, 7, 7, 9, 24, 17, 14, 35, 21, 14, 24, 10, 13, 19, 6, 3, 4, 1, 185, 11, 25, 14, 25, 60, 34, 56, 93, 35, 31, 45, 15, 13, 14, 1, 215, 1, 4, 3, 9, 21, 13, 18, 44, 28, 26, 42, 16, 27, 33, 8, 5, 4, 6, 7, 7, 27, 17, 19, 49, 31, 28, 45, 18, 9, 16, 2, 64, 131, 50, 93, 42, 71, 118, 35, 27, 30, 30, 28, 15, 37, 21, 25, 42, 15, 25, 25, 1, 41, 43, 44, 97, 64, 55, 131, 75, 64, 127, 61, 38, 76, 37, 1, 39, 79, 40, 60, 123, 61, 57, 102, 44, 48, 77, 26, 21, 23, 1, 11, 10, 13, 41, 25, 18, 39, 21, 4, 228, 253, 237, 12, 21, 8, 15, 17, 46, 42, 37, 100, 58, 54, 123, 230, 253, 204, 23, 42, 20, 16, 28, 10, 16, 18, 1, 17, 15, 23, 83, 49, 28, 62, 32, 131, 46, 88, 39, 42, 73, 26, 26, 29, 19, 16, 8, 19, 0, 1, 0, 55, 255, 234, 4, 138, 5, 176, 0, 83, 0, 0, 65, 21, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 22, 23, 22, 22, 21, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 53, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 21, 51, 50, 22, 23, 22, 22, 1, 247, 3, 31, 29, 37, 117, 78, 74, 131, 49, 27, 42, 14, 11, 13, 1, 2, 42, 26, 179, 16, 25, 7, 6, 6, 1, 7, 6, 6, 16, 11, 22, 65, 43, 27, 41, 14, 14, 14, 19, 22, 22, 69, 49, 29, 51, 21, 43, 47, 57, 54, 54, 155, 98, 225, 225, 59, 87, 29, 29, 29, 30, 31, 30, 93, 64, 82, 133, 42, 69, 25, 24, 27, 1, 114, 103, 65, 100, 35, 46, 43, 1, 71, 70, 38, 98, 59, 46, 108, 60, 103, 202, 98, 56, 113, 56, 44, 90, 44, 45, 83, 37, 34, 61, 26, 53, 59, 1, 22, 19, 18, 50, 28, 105, 59, 106, 44, 44, 67, 21, 15, 39, 23, 49, 129, 77, 100, 154, 52, 51, 54, 152, 36, 33, 34, 95, 59, 64, 99, 33, 31, 33, 152, 39, 35, 35, 98, 0, 1, 0, 80, 255, 228, 4, 124, 4, 58, 0, 80, 0, 0, 65, 52, 38, 39, 38, 38, 35, 35, 23, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 23, 51, 22, 22, 23, 22, 22, 21, 21, 20, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 35, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 2, 221, 57, 54, 55, 158, 100, 229, 6, 223, 66, 94, 29, 25, 24, 19, 19, 27, 98, 71, 149, 2, 173, 55, 82, 26, 21, 23, 30, 29, 34, 110, 73, 50, 92, 39, 26, 49, 18, 22, 28, 1, 1, 9, 8, 10, 27, 14, 180, 30, 33, 2, 1, 18, 17, 18, 51, 34, 24, 34, 10, 11, 12, 29, 32, 22, 62, 41, 39, 63, 23, 31, 32, 2, 248, 76, 120, 41, 41, 44, 150, 30, 27, 23, 62, 36, 31, 52, 20, 28, 31, 150, 1, 24, 24, 18, 53, 33, 67, 59, 89, 31, 36, 35, 2, 33, 32, 22, 64, 40, 50, 127, 77, 37, 74, 37, 43, 86, 42, 78, 163, 78, 66, 108, 38, 39, 43, 10, 10, 11, 35, 22, 77, 51, 87, 33, 22, 35, 11, 15, 38, 23, 30, 77, 0, 0, 1, 0, 179, 254, 165, 4, 82, 5, 176, 0, 69, 0, 0, 65, 51, 50, 22, 23, 22, 22, 21, 21, 20, 22, 23, 22, 22, 23, 51, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 53, 35, 38, 52, 53, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 21, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 16, 219, 60, 97, 35, 34, 38, 3, 6, 6, 25, 23, 86, 10, 11, 10, 34, 22, 115, 42, 64, 23, 22, 23, 165, 1, 25, 27, 27, 86, 62, 40, 68, 27, 47, 49, 66, 62, 63, 182, 116, 254, 236, 1, 20, 78, 115, 38, 37, 36, 32, 33, 39, 129, 91, 163, 2, 121, 37, 34, 35, 98, 60, 132, 19, 63, 34, 35, 65, 21, 1, 34, 72, 36, 36, 72, 33, 63, 36, 92, 51, 50, 103, 47, 176, 7, 13, 7, 136, 61, 108, 44, 44, 66, 20, 18, 44, 26, 46, 120, 74, 102, 155, 52, 52, 53, 152, 36, 33, 34, 97, 60, 60, 92, 32, 37, 38, 0, 1, 0, 208, 254, 146, 4, 48, 4, 58, 0, 73, 0, 0, 65, 51, 22, 22, 23, 22, 22, 21, 21, 20, 22, 23, 22, 22, 23, 51, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 53, 34, 34, 35, 52, 52, 53, 52, 52, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 7, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 25, 241, 52, 80, 27, 25, 27, 2, 5, 5, 22, 20, 84, 11, 12, 11, 32, 22, 115, 42, 64, 23, 22, 23, 51, 76, 26, 21, 23, 23, 73, 52, 40, 64, 24, 31, 33, 58, 55, 55, 158, 100, 254, 228, 1, 1, 29, 65, 95, 29, 26, 25, 27, 29, 29, 92, 63, 212, 1, 185, 1, 24, 23, 22, 63, 40, 95, 13, 47, 25, 26, 48, 14, 2, 39, 84, 41, 36, 69, 32, 63, 36, 92, 51, 50, 103, 47, 176, 21, 19, 17, 4, 12, 7, 46, 81, 33, 33, 50, 15, 15, 38, 23, 31, 79, 48, 77, 119, 41, 41, 43, 150, 28, 26, 23, 62, 38, 38, 61, 21, 21, 23, 0, 0, 1, 0, 20, 255, 234, 4, 164, 5, 176, 0, 78, 0, 0, 65, 3, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 22, 22, 7, 20, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 53, 3, 33, 3, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 3, 2, 99, 1, 2, 18, 17, 16, 46, 29, 27, 65, 38, 66, 115, 43, 28, 41, 11, 7, 7, 1, 1, 6, 6, 6, 19, 11, 179, 20, 21, 1, 4, 3, 4, 13, 9, 17, 49, 34, 12, 19, 8, 9, 12, 5, 4, 3, 1, 253, 199, 1, 2, 1, 4, 17, 15, 11, 30, 20, 17, 41, 24, 23, 34, 58, 94, 37, 27, 46, 18, 29, 34, 7, 3, 3, 1, 5, 24, 251, 247, 53, 87, 33, 32, 46, 15, 14, 13, 1, 72, 70, 45, 117, 71, 40, 87, 48, 48, 95, 46, 54, 107, 53, 1, 100, 202, 100, 37, 70, 32, 42, 74, 30, 53, 60, 1, 9, 8, 11, 28, 16, 16, 35, 18, 4, 161, 253, 80, 46, 86, 39, 91, 145, 54, 42, 61, 19, 17, 17, 151, 33, 33, 25, 67, 42, 69, 184, 112, 47, 102, 54, 2, 24, 0, 1, 0, 47, 255, 234, 4, 133, 4, 58, 0, 75, 0, 0, 65, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 7, 7, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 17, 51, 17, 20, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 53, 2, 250, 253, 201, 3, 4, 3, 8, 6, 14, 48, 36, 23, 3, 38, 50, 81, 31, 33, 48, 17, 11, 15, 4, 2, 3, 197, 18, 14, 15, 45, 29, 28, 69, 40, 48, 87, 37, 37, 60, 19, 14, 17, 1, 2, 40, 27, 179, 14, 23, 7, 8, 8, 1, 1, 6, 7, 8, 27, 18, 14, 34, 20, 11, 18, 7, 11, 15, 4, 4, 3, 4, 58, 254, 52, 64, 112, 46, 34, 59, 24, 58, 59, 1, 165, 30, 29, 31, 93, 64, 44, 104, 59, 39, 84, 45, 1, 51, 253, 128, 52, 86, 34, 36, 54, 17, 16, 16, 1, 35, 33, 34, 101, 65, 50, 119, 68, 97, 191, 93, 46, 93, 47, 48, 98, 49, 47, 86, 37, 47, 77, 21, 19, 19, 1, 9, 8, 11, 34, 24, 16, 37, 20, 0, 0, 1, 0, 111, 255, 234, 4, 148, 5, 176, 0, 56, 0, 0, 65, 35, 17, 33, 17, 35, 17, 51, 17, 33, 17, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 22, 22, 7, 20, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 53, 3, 12, 185, 254, 213, 185, 185, 1, 43, 1, 16, 13, 18, 39, 28, 28, 72, 42, 67, 115, 43, 24, 38, 12, 9, 10, 1, 1, 9, 9, 9, 26, 14, 178, 28, 32, 2, 4, 4, 4, 13, 9, 16, 49, 34, 10, 16, 7, 12, 15, 5, 4, 3, 5, 176, 253, 108, 2, 148, 250, 80, 2, 133, 254, 175, 54, 95, 30, 43, 51, 19, 19, 19, 1, 72, 70, 40, 102, 61, 46, 102, 57, 48, 96, 47, 53, 107, 52, 1, 100, 202, 100, 38, 73, 32, 41, 71, 29, 54, 60, 1, 8, 7, 12, 38, 25, 20, 44, 24, 0, 1, 0, 117, 255, 234, 4, 126, 4, 58, 0, 53, 0, 0, 65, 21, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 22, 7, 20, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 35, 17, 33, 17, 35, 17, 51, 17, 2, 59, 2, 14, 13, 18, 61, 42, 27, 62, 36, 63, 109, 41, 22, 34, 12, 9, 11, 1, 2, 30, 20, 178, 20, 22, 1, 4, 4, 4, 11, 7, 14, 44, 29, 14, 24, 9, 11, 16, 5, 6, 5, 185, 254, 243, 185, 185, 1, 205, 172, 47, 80, 32, 48, 65, 17, 11, 11, 1, 65, 64, 35, 88, 53, 44, 100, 56, 97, 191, 93, 94, 192, 95, 37, 69, 31, 33, 59, 25, 47, 52, 1, 10, 9, 10, 26, 16, 18, 44, 26, 3, 25, 254, 42, 1, 214, 251, 198, 1, 205, 0, 0, 1, 0, 142, 255, 235, 4, 118, 5, 197, 0, 60, 0, 0, 69, 50, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 22, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 23, 22, 22, 2, 148, 96, 173, 66, 65, 78, 2, 2, 38, 20, 179, 23, 29, 2, 1, 38, 36, 37, 111, 72, 79, 124, 42, 43, 45, 17, 17, 20, 67, 44, 35, 84, 49, 86, 143, 65, 59, 67, 174, 112, 68, 123, 52, 75, 111, 35, 26, 28, 32, 29, 31, 94, 59, 57, 138, 21, 55, 56, 55, 168, 112, 89, 183, 89, 90, 181, 90, 66, 107, 38, 40, 43, 1, 74, 64, 64, 170, 95, 1, 8, 58, 110, 49, 60, 100, 32, 26, 29, 35, 33, 132, 44, 44, 33, 31, 43, 137, 83, 64, 147, 80, 254, 250, 85, 156, 67, 71, 117, 39, 40, 43, 0, 0, 1, 0, 160, 255, 235, 4, 80, 4, 78, 0, 54, 0, 0, 101, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 52, 38, 39, 35, 22, 22, 21, 6, 6, 7, 6, 6, 2, 180, 91, 131, 42, 42, 40, 37, 40, 40, 122, 86, 81, 140, 54, 44, 28, 72, 42, 38, 89, 50, 123, 190, 65, 65, 68, 71, 68, 67, 198, 128, 87, 149, 55, 55, 64, 2, 16, 11, 178, 14, 6, 1, 24, 25, 27, 88, 130, 69, 56, 55, 139, 71, 42, 70, 138, 56, 55, 69, 30, 28, 144, 17, 26, 8, 7, 8, 89, 74, 74, 195, 108, 42, 108, 196, 74, 74, 89, 41, 42, 42, 128, 87, 54, 110, 54, 54, 111, 53, 44, 68, 24, 26, 26, 0, 1, 0, 76, 255, 234, 4, 149, 5, 176, 0, 49, 0, 0, 65, 17, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 7, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 33, 53, 33, 21, 1, 181, 2, 14, 11, 20, 63, 44, 37, 90, 53, 82, 144, 54, 29, 45, 15, 14, 15, 1, 3, 42, 27, 179, 29, 33, 2, 1, 9, 8, 7, 18, 12, 27, 79, 53, 22, 37, 16, 21, 32, 10, 5, 6, 1, 134, 252, 88, 5, 24, 252, 65, 48, 82, 35, 55, 83, 23, 21, 20, 1, 71, 70, 37, 92, 55, 49, 113, 63, 103, 202, 98, 1, 100, 202, 100, 48, 87, 38, 32, 57, 24, 53, 59, 1, 12, 12, 15, 52, 33, 21, 46, 24, 3, 191, 152, 152, 0, 0, 1, 0, 73, 255, 234, 4, 106, 4, 58, 0, 40, 0, 0, 65, 17, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 35, 22, 22, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 53, 17, 33, 53, 33, 21, 1, 154, 4, 47, 42, 42, 124, 78, 78, 137, 52, 52, 61, 2, 1, 11, 9, 10, 25, 13, 178, 29, 33, 2, 2, 25, 25, 25, 72, 48, 37, 56, 19, 20, 19, 1, 122, 252, 123, 3, 164, 253, 181, 94, 139, 45, 46, 43, 1, 57, 57, 56, 167, 110, 41, 82, 41, 41, 81, 39, 78, 168, 79, 66, 108, 39, 39, 43, 1, 33, 29, 29, 78, 46, 2, 75, 150, 150, 0, 0, 1, 0, 108, 255, 236, 4, 111, 5, 197, 0, 76, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 35, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 53, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 109, 81, 72, 71, 195, 115, 91, 176, 70, 69, 86, 185, 1, 45, 40, 41, 112, 68, 81, 129, 45, 45, 49, 45, 43, 43, 125, 79, 182, 182, 80, 118, 38, 39, 38, 41, 41, 40, 123, 82, 60, 104, 39, 38, 45, 1, 185, 76, 64, 65, 172, 95, 115, 189, 67, 68, 74, 33, 31, 30, 88, 55, 52, 85, 31, 44, 47, 1, 150, 103, 159, 54, 54, 56, 49, 52, 52, 160, 111, 57, 100, 37, 37, 43, 40, 36, 36, 100, 60, 69, 99, 33, 32, 31, 152, 36, 33, 32, 91, 56, 55, 94, 35, 35, 40, 38, 33, 33, 92, 54, 93, 149, 52, 52, 56, 53, 52, 53, 155, 102, 51, 94, 40, 41, 66, 23, 17, 51, 32, 45, 121, 255, 255, 0, 166, 254, 106, 4, 59, 0, 0, 4, 39, 0, 102, 0, 11, 255, 1, 0, 6, 0, 102, 11, 0, 0, 1, 1, 207, 4, 7, 2, 226, 6, 22, 0, 12, 0, 0, 65, 53, 51, 21, 20, 22, 23, 7, 38, 38, 39, 38, 38, 1, 207, 181, 47, 47, 101, 42, 64, 22, 23, 23, 5, 131, 147, 150, 86, 148, 71, 72, 36, 92, 51, 50, 104, 0, 255, 255, 1, 92, 255, 237, 4, 58, 1, 7, 4, 39, 0, 96, 255, 108, 0, 0, 0, 7, 0, 96, 1, 38, 0, 0, 0, 2, 1, 15, 2, 56, 4, 24, 5, 195, 0, 10, 0, 14, 0, 0, 65, 17, 35, 1, 23, 33, 21, 51, 53, 51, 53, 33, 1, 55, 17, 3, 129, 169, 254, 55, 3, 1, 204, 163, 151, 253, 172, 1, 4, 22, 3, 111, 2, 84, 253, 140, 94, 185, 185, 126, 1, 92, 44, 254, 120, 0, 0, 1, 1, 75, 2, 139, 3, 201, 5, 186, 0, 31, 0, 0, 65, 35, 17, 51, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 6, 6, 7, 6, 6, 7, 1, 204, 129, 170, 9, 26, 17, 20, 51, 31, 33, 52, 19, 19, 21, 170, 36, 34, 34, 95, 60, 42, 73, 30, 23, 38, 15, 5, 171, 252, 224, 2, 50, 23, 38, 14, 16, 18, 20, 22, 23, 76, 54, 254, 36, 1, 252, 80, 116, 38, 37, 36, 1, 25, 22, 17, 46, 27, 0, 1, 0, 127, 255, 235, 4, 57, 5, 196, 0, 55, 0, 0, 65, 53, 33, 53, 33, 53, 33, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 35, 21, 51, 21, 35, 21, 51, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 3, 110, 254, 126, 1, 130, 254, 126, 54, 45, 45, 126, 78, 60, 111, 52, 18, 61, 117, 63, 116, 192, 70, 69, 87, 179, 179, 179, 179, 86, 68, 70, 195, 117, 63, 120, 56, 18, 52, 110, 59, 79, 128, 45, 43, 55, 2, 31, 122, 138, 123, 1, 86, 164, 49, 49, 50, 19, 16, 155, 14, 17, 70, 69, 68, 222, 119, 2, 123, 138, 122, 5, 128, 220, 68, 71, 72, 16, 15, 154, 17, 17, 52, 52, 49, 162, 93, 5, 0, 4, 0, 73, 255, 235, 4, 148, 5, 197, 0, 51, 0, 77, 0, 103, 0, 107, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 19, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 5, 1, 39, 1, 2, 76, 138, 15, 14, 15, 43, 30, 31, 45, 15, 15, 15, 15, 15, 14, 45, 30, 30, 44, 15, 15, 15, 138, 36, 33, 33, 95, 60, 61, 96, 33, 33, 35, 35, 34, 33, 97, 61, 59, 95, 33, 33, 35, 66, 35, 34, 33, 97, 61, 61, 96, 33, 33, 35, 35, 33, 34, 96, 61, 61, 96, 33, 34, 35, 139, 14, 15, 15, 45, 31, 31, 45, 15, 15, 14, 14, 15, 15, 45, 30, 31, 46, 15, 15, 14, 254, 156, 2, 2, 114, 253, 255, 4, 30, 24, 48, 19, 19, 24, 31, 25, 25, 64, 34, 77, 34, 66, 25, 25, 31, 22, 19, 19, 50, 27, 53, 93, 35, 35, 41, 48, 41, 42, 109, 61, 77, 60, 109, 41, 41, 48, 40, 35, 34, 93, 253, 123, 78, 61, 109, 41, 41, 48, 48, 41, 41, 109, 61, 78, 61, 109, 41, 41, 48, 48, 41, 41, 109, 139, 78, 34, 65, 26, 25, 30, 30, 25, 26, 65, 34, 78, 35, 64, 25, 26, 30, 30, 26, 25, 64, 31, 3, 186, 66, 252, 70, 0, 0, 2, 0, 221, 255, 235, 3, 243, 5, 201, 0, 44, 0, 64, 0, 0, 69, 53, 34, 38, 39, 38, 38, 53, 53, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 17, 6, 6, 35, 21, 50, 54, 55, 21, 20, 22, 23, 22, 22, 3, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 3, 84, 68, 90, 28, 28, 23, 96, 147, 51, 50, 52, 39, 36, 36, 100, 60, 63, 103, 38, 26, 39, 14, 13, 14, 47, 104, 58, 56, 104, 49, 51, 53, 52, 158, 129, 20, 21, 15, 42, 27, 21, 34, 10, 10, 11, 26, 26, 26, 79, 21, 157, 41, 39, 38, 109, 68, 87, 52, 145, 82, 81, 169, 77, 41, 72, 116, 42, 41, 45, 39, 36, 25, 64, 38, 38, 89, 50, 254, 33, 13, 14, 176, 13, 12, 14, 101, 166, 59, 60, 66, 2, 220, 1, 135, 62, 92, 28, 19, 20, 22, 21, 20, 58, 37, 43, 56, 113, 53, 54, 96, 0, 4, 0, 121, 0, 0, 4, 118, 5, 192, 0, 9, 0, 35, 0, 61, 0, 65, 0, 0, 97, 17, 35, 19, 1, 35, 17, 51, 3, 1, 1, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 19, 53, 33, 21, 2, 227, 176, 1, 254, 244, 175, 176, 1, 1, 11, 1, 3, 21, 21, 20, 59, 39, 39, 60, 20, 20, 21, 21, 20, 20, 61, 39, 38, 60, 20, 20, 21, 101, 5, 6, 6, 23, 18, 19, 23, 7, 6, 5, 4, 6, 7, 23, 19, 19, 23, 6, 7, 4, 217, 254, 205, 5, 176, 252, 113, 3, 143, 250, 80, 3, 147, 252, 109, 4, 251, 206, 40, 71, 26, 27, 31, 31, 27, 26, 71, 40, 206, 40, 72, 27, 27, 31, 31, 27, 27, 72, 237, 188, 22, 40, 15, 14, 17, 17, 14, 15, 40, 22, 188, 23, 39, 14, 15, 17, 17, 15, 14, 39, 254, 168, 95, 95, 0, 2, 0, 153, 255, 236, 4, 148, 4, 78, 0, 33, 0, 42, 0, 0, 101, 39, 6, 6, 39, 34, 38, 39, 17, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 1, 50, 22, 23, 17, 33, 17, 54, 54, 4, 23, 2, 89, 185, 94, 78, 140, 55, 3, 0, 78, 66, 67, 181, 103, 66, 129, 58, 59, 99, 36, 36, 41, 82, 71, 70, 191, 110, 99, 186, 254, 227, 77, 136, 54, 253, 228, 57, 140, 94, 104, 63, 60, 1, 59, 51, 1, 72, 47, 115, 198, 73, 73, 82, 41, 37, 37, 103, 62, 62, 143, 76, 115, 204, 76, 77, 89, 61, 3, 199, 62, 51, 254, 226, 1, 21, 56, 66, 0, 5, 0, 80, 255, 246, 4, 185, 5, 174, 0, 6, 0, 54, 0, 78, 0, 102, 0, 106, 0, 0, 65, 17, 35, 5, 21, 55, 17, 5, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 1, 159, 16, 254, 193, 194, 3, 150, 38, 33, 33, 92, 53, 54, 91, 34, 33, 37, 21, 20, 12, 35, 19, 23, 41, 15, 21, 25, 42, 36, 36, 98, 56, 55, 98, 36, 35, 41, 29, 26, 14, 36, 20, 19, 32, 13, 21, 22, 122, 19, 17, 17, 45, 27, 31, 50, 17, 13, 15, 18, 16, 16, 47, 28, 27, 46, 17, 16, 20, 19, 15, 13, 15, 39, 24, 27, 41, 14, 13, 13, 14, 13, 14, 40, 26, 23, 39, 13, 16, 16, 253, 122, 2, 2, 114, 253, 255, 2, 232, 2, 198, 105, 115, 51, 253, 227, 223, 49, 74, 25, 25, 26, 26, 25, 25, 74, 49, 31, 54, 22, 14, 25, 10, 9, 27, 16, 23, 60, 36, 51, 76, 26, 26, 25, 25, 26, 26, 76, 51, 39, 65, 24, 13, 22, 8, 9, 23, 13, 22, 56, 254, 229, 24, 37, 13, 12, 14, 16, 15, 13, 35, 21, 24, 37, 12, 13, 13, 13, 13, 12, 37, 1, 28, 21, 34, 12, 11, 14, 15, 13, 12, 32, 20, 21, 33, 12, 12, 13, 12, 11, 11, 35, 254, 190, 3, 186, 66, 252, 70, 0, 5, 0, 51, 255, 246, 4, 193, 5, 186, 0, 76, 0, 124, 0, 148, 0, 172, 0, 176, 0, 0, 83, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 1, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 234, 75, 34, 55, 19, 17, 18, 15, 14, 18, 49, 32, 34, 52, 17, 14, 14, 142, 46, 38, 36, 97, 51, 58, 100, 38, 37, 42, 21, 22, 16, 46, 30, 25, 39, 16, 20, 23, 39, 35, 35, 97, 58, 54, 93, 35, 35, 40, 141, 14, 12, 16, 48, 29, 31, 47, 15, 13, 14, 19, 18, 17, 47, 31, 3, 123, 38, 33, 33, 92, 53, 54, 91, 34, 33, 37, 21, 20, 12, 35, 19, 23, 41, 15, 21, 25, 42, 36, 36, 98, 56, 55, 98, 36, 35, 41, 29, 26, 14, 36, 20, 19, 32, 13, 21, 22, 122, 19, 17, 17, 45, 27, 31, 50, 17, 13, 15, 18, 16, 16, 47, 28, 27, 46, 17, 16, 20, 19, 15, 13, 15, 39, 24, 27, 41, 14, 13, 13, 14, 13, 14, 40, 26, 23, 39, 13, 16, 16, 253, 153, 2, 2, 114, 253, 255, 4, 135, 104, 13, 13, 12, 39, 27, 21, 36, 13, 14, 16, 18, 16, 11, 32, 18, 55, 79, 25, 27, 24, 28, 26, 26, 78, 50, 36, 59, 21, 16, 26, 8, 9, 25, 15, 22, 53, 30, 49, 76, 26, 25, 26, 28, 25, 26, 74, 46, 17, 28, 11, 13, 14, 15, 14, 12, 33, 19, 23, 38, 13, 11, 13, 253, 130, 49, 74, 25, 25, 26, 26, 25, 25, 74, 49, 31, 54, 22, 14, 25, 10, 9, 27, 16, 23, 60, 36, 51, 76, 26, 26, 25, 25, 26, 26, 76, 51, 39, 65, 24, 13, 22, 8, 9, 23, 13, 22, 56, 254, 229, 24, 37, 13, 12, 14, 16, 15, 13, 35, 21, 24, 37, 12, 13, 13, 13, 13, 12, 37, 1, 28, 21, 34, 12, 11, 14, 15, 13, 12, 32, 20, 21, 33, 12, 12, 13, 12, 11, 11, 35, 254, 181, 3, 186, 66, 252, 70, 0, 0, 5, 0, 36, 255, 250, 4, 173, 5, 177, 0, 45, 0, 93, 0, 117, 0, 141, 0, 145, 0, 0, 83, 23, 54, 54, 55, 54, 54, 51, 50, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 35, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 55, 33, 53, 33, 1, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 55, 112, 11, 22, 14, 14, 36, 23, 65, 72, 14, 16, 15, 46, 32, 53, 67, 5, 140, 3, 45, 36, 37, 93, 51, 66, 100, 33, 33, 32, 33, 32, 31, 91, 57, 40, 67, 18, 20, 1, 58, 254, 82, 4, 56, 38, 33, 33, 92, 53, 54, 91, 34, 33, 37, 21, 20, 12, 35, 19, 23, 41, 15, 21, 25, 42, 36, 36, 98, 56, 55, 98, 36, 35, 41, 29, 26, 14, 36, 20, 19, 32, 13, 21, 22, 122, 19, 17, 17, 45, 27, 31, 50, 17, 13, 15, 18, 16, 16, 47, 28, 27, 46, 17, 16, 20, 19, 15, 13, 15, 39, 24, 27, 41, 14, 13, 13, 14, 13, 14, 40, 26, 23, 39, 13, 16, 16, 253, 150, 2, 2, 114, 253, 255, 4, 71, 28, 8, 13, 6, 5, 7, 68, 57, 28, 47, 17, 18, 19, 44, 45, 48, 76, 26, 27, 27, 39, 33, 33, 89, 48, 54, 87, 30, 30, 31, 18, 8, 153, 119, 252, 92, 49, 74, 25, 25, 26, 26, 25, 25, 74, 49, 31, 54, 22, 14, 25, 10, 9, 27, 16, 23, 60, 36, 51, 76, 26, 26, 25, 25, 26, 26, 76, 51, 39, 65, 24, 13, 22, 8, 9, 23, 13, 22, 56, 254, 229, 24, 37, 13, 12, 14, 16, 15, 13, 35, 21, 24, 37, 12, 13, 13, 13, 13, 12, 37, 1, 28, 21, 34, 12, 11, 14, 15, 13, 12, 32, 20, 21, 33, 12, 12, 13, 12, 11, 11, 35, 254, 186, 3, 186, 66, 252, 70, 0, 5, 0, 65, 255, 246, 4, 167, 5, 177, 0, 6, 0, 54, 0, 78, 0, 102, 0, 106, 0, 0, 65, 53, 33, 21, 33, 1, 51, 5, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 2, 110, 253, 211, 1, 151, 254, 197, 150, 3, 99, 38, 33, 33, 92, 53, 54, 91, 34, 33, 37, 21, 20, 12, 35, 19, 23, 41, 15, 21, 25, 42, 36, 36, 98, 56, 55, 98, 36, 35, 41, 29, 26, 14, 36, 20, 19, 32, 13, 21, 22, 122, 19, 17, 17, 45, 27, 31, 50, 17, 13, 15, 18, 16, 16, 47, 28, 27, 46, 17, 16, 20, 19, 15, 13, 15, 39, 24, 27, 41, 14, 13, 13, 14, 13, 14, 40, 26, 23, 39, 13, 16, 16, 253, 103, 2, 2, 114, 253, 255, 5, 96, 81, 117, 253, 175, 226, 49, 74, 25, 25, 26, 26, 25, 25, 74, 49, 31, 54, 22, 14, 25, 10, 9, 27, 16, 23, 60, 36, 51, 76, 26, 26, 25, 25, 26, 26, 76, 51, 39, 65, 24, 13, 22, 8, 9, 23, 13, 22, 56, 254, 229, 24, 37, 13, 12, 14, 16, 15, 13, 35, 21, 24, 37, 12, 13, 13, 13, 13, 12, 37, 1, 28, 21, 34, 12, 11, 14, 15, 13, 12, 32, 20, 21, 33, 12, 12, 13, 12, 11, 11, 35, 254, 190, 3, 186, 66, 252, 70, 0, 2, 0, 126, 255, 235, 4, 70, 5, 236, 0, 44, 0, 73, 0, 0, 65, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 53, 52, 2, 39, 38, 38, 35, 34, 6, 7, 23, 54, 54, 51, 50, 22, 23, 22, 22, 23, 38, 38, 7, 50, 22, 23, 22, 22, 23, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 2, 80, 110, 173, 60, 60, 63, 65, 62, 62, 179, 114, 77, 131, 54, 63, 96, 26, 19, 20, 65, 67, 68, 207, 143, 117, 142, 57, 16, 71, 135, 78, 74, 130, 50, 50, 66, 11, 60, 166, 73, 74, 107, 36, 36, 40, 6, 12, 12, 18, 59, 41, 32, 79, 48, 76, 112, 36, 37, 36, 36, 37, 37, 112, 3, 254, 75, 66, 66, 180, 105, 23, 113, 193, 70, 71, 81, 45, 41, 49, 148, 91, 62, 141, 74, 59, 180, 1, 47, 110, 110, 124, 44, 25, 151, 27, 32, 71, 63, 63, 176, 105, 69, 76, 152, 45, 32, 33, 73, 28, 66, 57, 105, 47, 65, 104, 32, 25, 28, 61, 52, 51, 137, 76, 23, 68, 123, 47, 47, 55, 0, 1, 0, 167, 255, 43, 4, 37, 5, 176, 0, 7, 0, 0, 69, 17, 33, 17, 51, 17, 33, 17, 4, 37, 252, 130, 185, 2, 12, 213, 6, 133, 249, 123, 5, 237, 250, 19, 0, 1, 0, 51, 254, 243, 4, 152, 5, 176, 0, 12, 0, 0, 65, 53, 1, 33, 53, 33, 21, 1, 1, 21, 33, 53, 33, 3, 88, 253, 187, 3, 57, 251, 231, 2, 96, 253, 160, 4, 101, 252, 124, 2, 65, 25, 2, 190, 152, 144, 253, 46, 253, 52, 143, 152, 0, 1, 0, 57, 0, 0, 4, 146, 5, 176, 0, 10, 0, 0, 65, 3, 33, 21, 51, 19, 51, 1, 35, 1, 7, 2, 24, 164, 254, 197, 185, 245, 141, 2, 30, 189, 254, 114, 25, 1, 81, 1, 189, 154, 253, 140, 5, 176, 251, 161, 105, 0, 0, 3, 0, 53, 0, 224, 4, 154, 3, 221, 0, 64, 0, 102, 0, 140, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 39, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 5, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 23, 21, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 4, 154, 17, 17, 13, 35, 20, 34, 91, 56, 34, 59, 26, 34, 56, 21, 15, 25, 10, 19, 52, 34, 35, 87, 52, 49, 81, 32, 38, 53, 14, 8, 8, 12, 12, 16, 53, 34, 31, 79, 47, 52, 86, 35, 34, 52, 19, 19, 53, 35, 34, 86, 52, 48, 76, 35, 41, 51, 15, 9, 9, 124, 5, 5, 7, 28, 22, 17, 46, 30, 30, 53, 23, 23, 36, 14, 14, 17, 3, 3, 17, 14, 14, 37, 23, 22, 54, 30, 31, 49, 18, 17, 22, 6, 9, 7, 252, 147, 5, 6, 7, 26, 19, 18, 47, 31, 30, 54, 23, 22, 37, 14, 13, 17, 3, 3, 17, 13, 14, 37, 22, 23, 53, 30, 30, 46, 18, 19, 27, 8, 6, 6, 2, 74, 42, 48, 94, 41, 30, 55, 20, 34, 39, 19, 16, 21, 61, 34, 22, 46, 23, 42, 86, 35, 35, 44, 29, 26, 32, 91, 54, 30, 66, 33, 42, 41, 80, 36, 47, 80, 27, 24, 27, 44, 35, 35, 86, 42, 42, 86, 35, 35, 44, 27, 26, 31, 88, 52, 32, 70, 78, 42, 27, 52, 24, 33, 57, 18, 15, 17, 29, 23, 22, 56, 28, 27, 49, 15, 29, 15, 49, 28, 27, 56, 23, 23, 28, 20, 18, 15, 43, 23, 27, 63, 75, 42, 28, 53, 24, 30, 52, 19, 17, 19, 28, 23, 23, 56, 27, 28, 49, 15, 29, 16, 48, 27, 28, 56, 22, 23, 29, 17, 15, 17, 52, 32, 25, 56, 0, 0, 1, 0, 248, 254, 75, 3, 211, 6, 43, 0, 40, 0, 0, 69, 49, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 2, 170, 26, 25, 22, 66, 43, 29, 45, 17, 24, 37, 70, 37, 79, 126, 43, 44, 46, 26, 25, 16, 44, 26, 14, 68, 16, 14, 29, 53, 30, 73, 116, 41, 45, 47, 89, 5, 27, 51, 80, 27, 25, 26, 6, 5, 142, 9, 12, 49, 46, 46, 134, 86, 250, 229, 54, 83, 25, 16, 18, 7, 6, 147, 10, 8, 41, 40, 44, 135, 0, 0, 2, 0, 142, 0, 0, 4, 63, 5, 176, 0, 5, 0, 13, 0, 0, 65, 1, 1, 51, 1, 1, 7, 23, 1, 1, 7, 39, 1, 1, 2, 30, 254, 112, 1, 147, 141, 1, 145, 254, 108, 72, 17, 1, 12, 254, 250, 18, 16, 254, 244, 1, 6, 5, 176, 253, 39, 253, 41, 2, 215, 2, 217, 156, 51, 253, 246, 253, 247, 51, 51, 2, 9, 2, 10, 0, 0, 22, 0, 92, 0, 10, 4, 135, 4, 6, 0, 13, 0, 28, 0, 42, 0, 58, 0, 64, 0, 70, 0, 76, 0, 82, 0, 91, 0, 95, 0, 99, 0, 103, 0, 107, 0, 111, 0, 115, 0, 124, 0, 128, 0, 132, 0, 136, 0, 140, 0, 144, 0, 148, 0, 0, 65, 21, 20, 6, 35, 34, 38, 53, 53, 52, 54, 51, 50, 22, 23, 35, 17, 51, 50, 22, 21, 20, 6, 7, 22, 22, 21, 20, 6, 37, 53, 52, 38, 35, 34, 6, 21, 21, 20, 22, 51, 50, 54, 37, 53, 51, 21, 20, 6, 35, 34, 38, 53, 51, 20, 22, 51, 50, 54, 1, 51, 53, 35, 53, 35, 5, 51, 53, 35, 21, 35, 1, 51, 53, 51, 53, 35, 5, 51, 21, 51, 53, 35, 1, 35, 21, 51, 50, 54, 53, 52, 38, 3, 51, 53, 35, 23, 51, 53, 35, 5, 51, 53, 35, 19, 51, 53, 35, 23, 51, 53, 35, 5, 51, 53, 35, 19, 21, 51, 50, 54, 53, 52, 38, 35, 5, 53, 35, 21, 23, 53, 35, 21, 19, 53, 35, 21, 5, 53, 35, 21, 23, 53, 35, 21, 19, 53, 35, 21, 1, 240, 69, 57, 57, 71, 70, 57, 57, 70, 159, 122, 103, 55, 62, 23, 23, 28, 28, 57, 254, 251, 41, 35, 35, 41, 41, 36, 35, 40, 2, 14, 50, 58, 45, 48, 60, 51, 31, 26, 23, 30, 252, 145, 170, 108, 62, 3, 129, 170, 61, 109, 252, 127, 62, 108, 170, 3, 129, 109, 61, 170, 254, 178, 70, 70, 29, 27, 27, 135, 153, 153, 220, 153, 153, 254, 73, 152, 152, 219, 153, 153, 220, 153, 153, 254, 73, 152, 152, 255, 51, 33, 32, 32, 33, 254, 30, 62, 62, 62, 62, 62, 4, 43, 61, 61, 61, 61, 61, 2, 37, 62, 54, 66, 66, 54, 62, 54, 66, 66, 235, 1, 47, 40, 43, 21, 34, 9, 8, 39, 23, 43, 43, 119, 62, 38, 43, 43, 38, 62, 38, 43, 43, 15, 208, 208, 45, 50, 45, 46, 26, 24, 30, 254, 82, 63, 111, 174, 174, 111, 3, 32, 93, 64, 64, 93, 157, 253, 241, 93, 24, 21, 22, 26, 1, 207, 64, 64, 64, 64, 64, 252, 4, 63, 63, 63, 63, 63, 2, 39, 83, 22, 22, 23, 16, 165, 138, 138, 207, 137, 137, 1, 159, 137, 137, 208, 138, 138, 207, 137, 137, 1, 159, 137, 137, 0, 5, 0, 15, 253, 213, 4, 175, 8, 98, 0, 3, 0, 47, 0, 51, 0, 55, 0, 59, 0, 0, 65, 9, 2, 5, 35, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 35, 34, 6, 7, 35, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 21, 21, 35, 53, 19, 21, 51, 53, 3, 21, 51, 53, 2, 98, 253, 173, 2, 83, 2, 77, 254, 26, 202, 8, 11, 10, 35, 29, 10, 27, 12, 12, 17, 32, 37, 24, 41, 2, 203, 1, 43, 37, 36, 97, 56, 64, 102, 35, 34, 37, 23, 18, 18, 45, 22, 11, 17, 6, 6, 6, 202, 94, 4, 6, 4, 6, 82, 252, 49, 252, 49, 3, 207, 251, 48, 50, 19, 19, 40, 36, 13, 39, 24, 23, 51, 26, 52, 64, 48, 55, 70, 101, 33, 32, 30, 39, 36, 37, 103, 64, 41, 64, 28, 29, 55, 31, 16, 29, 15, 16, 39, 116, 170, 170, 252, 172, 4, 4, 10, 137, 4, 4, 0, 0, 2, 1, 17, 4, 228, 3, 239, 6, 249, 0, 6, 0, 44, 0, 0, 65, 1, 35, 1, 51, 55, 23, 19, 39, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 239, 254, 219, 149, 254, 220, 170, 196, 197, 64, 77, 14, 11, 12, 30, 16, 29, 48, 23, 23, 50, 31, 34, 58, 21, 22, 25, 77, 15, 12, 11, 29, 16, 30, 44, 22, 21, 50, 37, 34, 58, 22, 21, 25, 4, 228, 1, 6, 254, 250, 176, 176, 1, 254, 23, 17, 33, 13, 13, 16, 22, 13, 13, 22, 31, 25, 25, 65, 33, 19, 17, 33, 14, 13, 17, 23, 13, 14, 22, 30, 25, 24, 63, 0, 0, 2, 0, 252, 4, 228, 4, 186, 6, 207, 0, 6, 0, 34, 0, 0, 65, 1, 35, 1, 51, 55, 23, 55, 51, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 7, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 3, 221, 254, 237, 188, 254, 238, 170, 198, 198, 142, 114, 1, 25, 49, 19, 19, 23, 48, 44, 33, 86, 52, 6, 28, 52, 20, 19, 24, 19, 18, 15, 45, 28, 4, 228, 1, 6, 254, 250, 186, 186, 138, 60, 3, 18, 16, 15, 47, 33, 43, 67, 20, 15, 16, 92, 7, 8, 8, 25, 19, 19, 23, 7, 5, 7, 2, 0, 2, 0, 16, 4, 228, 3, 249, 6, 149, 0, 6, 0, 10, 0, 0, 65, 1, 35, 1, 51, 55, 23, 37, 3, 35, 19, 3, 249, 254, 221, 152, 254, 222, 196, 170, 170, 254, 49, 141, 200, 201, 4, 228, 1, 6, 254, 250, 158, 158, 174, 1, 3, 254, 253, 0, 0, 2, 1, 11, 4, 228, 4, 244, 6, 149, 0, 6, 0, 10, 0, 0, 65, 1, 51, 55, 23, 51, 1, 37, 3, 51, 19, 2, 47, 254, 220, 198, 170, 169, 197, 254, 221, 1, 103, 142, 141, 200, 5, 234, 254, 250, 158, 158, 1, 6, 171, 254, 253, 1, 3, 0, 0, 2, 1, 62, 4, 223, 3, 156, 6, 138, 0, 3, 0, 29, 0, 0, 65, 39, 35, 23, 5, 35, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 2, 166, 113, 153, 164, 1, 92, 153, 1, 19, 20, 18, 54, 37, 40, 57, 18, 19, 18, 152, 44, 40, 39, 112, 69, 68, 111, 40, 39, 44, 5, 196, 198, 198, 20, 25, 44, 16, 14, 17, 18, 16, 15, 43, 24, 47, 77, 27, 28, 30, 30, 28, 27, 77, 0, 1, 1, 249, 4, 142, 2, 240, 6, 59, 0, 9, 0, 0, 65, 21, 51, 53, 52, 54, 55, 39, 6, 6, 1, 249, 185, 27, 35, 107, 48, 92, 5, 15, 129, 120, 61, 106, 59, 83, 42, 171, 0, 2, 0, 54, 0, 0, 4, 142, 4, 141, 0, 7, 0, 12, 0, 0, 65, 19, 51, 1, 35, 1, 51, 19, 55, 19, 55, 23, 19, 3, 102, 109, 187, 254, 42, 165, 254, 35, 188, 110, 60, 170, 30, 31, 168, 1, 23, 254, 233, 4, 141, 251, 115, 1, 23, 151, 1, 174, 77, 79, 254, 84, 0, 3, 0, 208, 0, 0, 4, 70, 4, 141, 0, 26, 0, 41, 0, 56, 0, 0, 115, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 19, 33, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 33, 17, 17, 51, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 208, 1, 199, 87, 169, 61, 53, 61, 36, 30, 31, 84, 49, 40, 71, 27, 26, 32, 81, 65, 60, 158, 75, 254, 99, 187, 1, 21, 47, 86, 33, 32, 38, 43, 35, 35, 88, 44, 254, 244, 227, 43, 90, 37, 37, 46, 43, 33, 33, 82, 40, 45, 46, 42, 117, 83, 55, 91, 35, 34, 46, 12, 14, 43, 30, 29, 77, 48, 93, 121, 38, 35, 31, 253, 133, 1, 23, 23, 24, 73, 52, 51, 69, 21, 22, 19, 1, 2, 8, 1, 85, 1, 15, 19, 19, 67, 52, 47, 64, 19, 20, 17, 1, 0, 1, 0, 110, 255, 240, 4, 54, 4, 157, 0, 51, 0, 0, 65, 35, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 54, 185, 10, 39, 30, 36, 106, 71, 84, 117, 36, 36, 32, 1, 1, 35, 38, 38, 120, 85, 64, 97, 35, 33, 42, 10, 185, 12, 78, 60, 61, 161, 94, 119, 185, 64, 65, 68, 1, 1, 66, 63, 62, 182, 117, 94, 163, 63, 63, 82, 1, 121, 55, 85, 30, 36, 37, 1, 69, 56, 56, 142, 73, 102, 75, 143, 56, 55, 67, 34, 33, 31, 90, 58, 94, 148, 51, 51, 54, 87, 75, 75, 199, 113, 101, 111, 198, 75, 75, 88, 51, 50, 50, 146, 0, 0, 2, 0, 183, 0, 0, 4, 83, 4, 141, 0, 15, 0, 31, 0, 0, 115, 33, 54, 54, 55, 54, 54, 55, 53, 38, 38, 39, 38, 38, 39, 33, 23, 51, 22, 22, 23, 22, 22, 23, 21, 6, 6, 7, 6, 6, 7, 35, 183, 1, 95, 123, 208, 77, 76, 88, 1, 1, 85, 74, 75, 205, 121, 254, 149, 186, 177, 91, 140, 48, 47, 49, 1, 1, 53, 49, 50, 143, 92, 165, 1, 78, 72, 71, 202, 126, 63, 123, 202, 73, 72, 80, 2, 153, 1, 58, 52, 53, 145, 88, 65, 90, 147, 52, 52, 57, 1, 0, 0, 1, 0, 200, 0, 0, 4, 35, 4, 141, 0, 11, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 33, 53, 33, 17, 3, 197, 253, 192, 2, 152, 252, 171, 3, 91, 253, 98, 2, 14, 152, 1, 78, 153, 251, 115, 151, 1, 119, 0, 0, 1, 0, 231, 0, 0, 4, 61, 4, 141, 0, 9, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 51, 17, 3, 228, 253, 195, 2, 150, 252, 170, 192, 1, 243, 153, 1, 104, 153, 251, 115, 1, 243, 0, 0, 1, 0, 124, 255, 240, 4, 65, 4, 157, 0, 55, 0, 0, 101, 17, 33, 21, 33, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 65, 254, 52, 1, 21, 1, 25, 62, 33, 34, 70, 33, 87, 126, 41, 42, 40, 1, 1, 33, 38, 37, 121, 87, 62, 98, 36, 30, 41, 11, 183, 14, 81, 61, 61, 157, 89, 122, 187, 63, 63, 66, 1, 1, 73, 67, 67, 192, 121, 60, 124, 58, 58, 103, 150, 1, 185, 144, 238, 24, 29, 8, 8, 5, 69, 56, 56, 146, 78, 86, 76, 145, 57, 57, 68, 33, 33, 27, 76, 48, 91, 139, 46, 46, 47, 87, 75, 76, 203, 116, 84, 116, 202, 75, 76, 87, 15, 19, 19, 64, 0, 0, 1, 0, 155, 0, 0, 3, 249, 4, 141, 0, 11, 0, 0, 97, 17, 35, 17, 33, 17, 35, 17, 51, 17, 33, 17, 3, 249, 178, 254, 6, 178, 178, 1, 250, 4, 141, 253, 253, 2, 3, 251, 115, 1, 242, 254, 14, 0, 0, 1, 0, 217, 0, 0, 4, 16, 4, 140, 0, 11, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 33, 53, 217, 1, 59, 254, 197, 3, 55, 254, 189, 1, 67, 4, 140, 161, 252, 181, 160, 160, 3, 75, 161, 0, 0, 1, 0, 150, 255, 240, 3, 230, 4, 141, 0, 27, 0, 0, 65, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 3, 40, 1, 2, 35, 30, 30, 80, 47, 49, 88, 34, 34, 40, 190, 8, 73, 58, 57, 152, 87, 80, 148, 57, 56, 68, 2, 2, 4, 141, 252, 234, 57, 89, 30, 31, 33, 25, 28, 28, 89, 62, 101, 145, 46, 47, 44, 51, 50, 49, 146, 95, 3, 22, 0, 1, 0, 180, 0, 0, 4, 128, 4, 141, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 7, 17, 35, 17, 51, 17, 2, 0, 1, 159, 225, 254, 0, 1, 222, 227, 254, 116, 130, 185, 185, 2, 7, 253, 249, 2, 134, 2, 7, 254, 101, 143, 2, 42, 251, 115, 1, 121, 0, 0, 1, 0, 209, 0, 0, 4, 82, 4, 141, 0, 5, 0, 0, 101, 17, 35, 17, 33, 53, 1, 149, 196, 3, 129, 151, 3, 246, 251, 115, 151, 0, 0, 1, 0, 155, 0, 0, 4, 58, 4, 141, 0, 12, 0, 0, 65, 3, 35, 17, 51, 17, 19, 51, 19, 17, 51, 17, 35, 2, 109, 218, 248, 176, 226, 131, 218, 176, 241, 2, 88, 2, 53, 251, 115, 3, 177, 253, 141, 2, 129, 252, 65, 4, 141, 0, 0, 1, 0, 194, 0, 0, 4, 15, 4, 141, 0, 9, 0, 0, 97, 17, 35, 19, 1, 35, 17, 51, 3, 1, 4, 15, 176, 6, 254, 11, 174, 177, 5, 1, 245, 4, 141, 252, 147, 3, 109, 251, 115, 3, 108, 252, 148, 0, 0, 2, 0, 130, 255, 240, 4, 74, 4, 157, 0, 25, 0, 51, 0, 0, 65, 53, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 39, 21, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 74, 1, 61, 60, 61, 181, 120, 119, 180, 61, 61, 62, 1, 1, 63, 61, 61, 180, 119, 120, 180, 61, 60, 61, 182, 1, 30, 34, 35, 115, 85, 84, 114, 35, 36, 32, 1, 1, 31, 36, 35, 114, 84, 84, 115, 35, 35, 31, 2, 36, 67, 110, 205, 79, 78, 94, 95, 79, 79, 204, 109, 67, 109, 204, 78, 79, 94, 94, 78, 78, 204, 179, 69, 71, 146, 59, 59, 75, 75, 60, 59, 145, 71, 69, 70, 145, 59, 59, 75, 74, 58, 59, 146, 0, 2, 0, 94, 255, 54, 4, 103, 4, 157, 0, 31, 0, 57, 0, 0, 65, 53, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 21, 22, 22, 23, 22, 22, 51, 50, 54, 55, 5, 55, 39, 54, 54, 55, 54, 54, 39, 21, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 101, 1, 70, 66, 66, 191, 122, 122, 190, 66, 66, 70, 1, 1, 71, 66, 66, 191, 122, 32, 63, 30, 1, 10, 125, 223, 53, 82, 28, 28, 29, 183, 1, 37, 40, 40, 124, 88, 87, 125, 40, 41, 39, 1, 1, 39, 40, 40, 124, 87, 88, 125, 40, 40, 38, 2, 36, 67, 116, 206, 77, 77, 90, 91, 77, 78, 205, 115, 67, 115, 205, 77, 77, 90, 7, 7, 200, 111, 163, 38, 102, 62, 61, 139, 143, 69, 78, 148, 57, 57, 70, 70, 58, 58, 147, 77, 69, 76, 147, 58, 57, 70, 69, 57, 57, 147, 0, 0, 2, 0, 144, 0, 0, 4, 44, 4, 141, 0, 20, 0, 35, 0, 0, 65, 1, 51, 53, 1, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 33, 17, 51, 17, 53, 17, 51, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 2, 97, 1, 4, 199, 254, 222, 50, 87, 32, 32, 36, 75, 62, 63, 161, 84, 254, 86, 185, 241, 50, 94, 36, 36, 43, 45, 35, 36, 91, 47, 1, 193, 254, 63, 10, 1, 230, 22, 57, 38, 37, 96, 63, 95, 134, 43, 43, 40, 1, 251, 115, 1, 193, 151, 1, 156, 1, 24, 25, 25, 79, 56, 53, 75, 24, 25, 24, 1, 0, 0, 1, 0, 138, 255, 240, 4, 57, 4, 157, 0, 76, 0, 0, 65, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 35, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 127, 1, 53, 39, 40, 93, 40, 54, 106, 43, 43, 55, 2, 188, 3, 31, 25, 21, 54, 31, 69, 171, 86, 76, 165, 70, 59, 82, 76, 60, 60, 146, 70, 48, 138, 49, 30, 39, 50, 38, 38, 90, 40, 50, 96, 38, 38, 47, 2, 187, 6, 81, 63, 63, 159, 84, 69, 151, 60, 72, 91, 83, 65, 64, 153, 69, 49, 131, 40, 33, 29, 1, 42, 50, 64, 18, 19, 14, 21, 26, 25, 83, 61, 52, 89, 37, 30, 50, 20, 45, 42, 37, 39, 36, 119, 85, 85, 121, 43, 42, 55, 18, 11, 41, 30, 18, 57, 40, 49, 65, 20, 19, 16, 22, 25, 25, 78, 55, 90, 134, 45, 44, 43, 34, 33, 39, 126, 89, 86, 120, 41, 41, 51, 17, 13, 38, 32, 27, 55, 0, 0, 1, 0, 93, 0, 0, 4, 105, 4, 141, 0, 7, 0, 0, 65, 53, 33, 21, 33, 17, 51, 17, 4, 105, 251, 244, 1, 167, 188, 3, 244, 153, 153, 252, 12, 3, 244, 0, 0, 1, 0, 181, 255, 240, 4, 43, 4, 141, 0, 29, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 3, 35, 3, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 4, 42, 183, 1, 1, 37, 33, 34, 95, 59, 59, 95, 33, 34, 37, 1, 1, 181, 1, 1, 70, 60, 59, 160, 92, 91, 160, 60, 60, 71, 2, 4, 141, 252, 244, 59, 93, 32, 32, 34, 34, 32, 32, 93, 59, 3, 12, 252, 244, 96, 149, 51, 51, 54, 54, 52, 52, 148, 95, 0, 0, 1, 0, 86, 0, 0, 4, 131, 4, 141, 0, 8, 0, 0, 65, 1, 35, 1, 51, 1, 35, 1, 7, 2, 80, 254, 206, 200, 1, 191, 174, 1, 192, 201, 254, 207, 29, 1, 54, 3, 87, 251, 115, 4, 141, 252, 168, 106, 0, 1, 0, 47, 0, 0, 4, 187, 4, 141, 0, 18, 0, 0, 97, 51, 19, 55, 23, 19, 51, 19, 35, 3, 7, 39, 3, 35, 3, 7, 39, 3, 35, 1, 23, 159, 179, 14, 13, 175, 159, 233, 172, 140, 11, 13, 167, 154, 171, 13, 11, 141, 171, 3, 3, 59, 59, 252, 253, 4, 141, 253, 3, 61, 61, 2, 253, 253, 2, 60, 61, 2, 253, 0, 0, 1, 0, 96, 0, 0, 4, 102, 4, 141, 0, 11, 0, 0, 65, 1, 35, 1, 1, 51, 1, 1, 51, 1, 1, 35, 2, 95, 254, 229, 219, 1, 139, 254, 108, 220, 1, 38, 1, 40, 220, 254, 105, 1, 136, 219, 2, 218, 1, 179, 253, 190, 253, 181, 1, 187, 254, 69, 2, 75, 2, 66, 0, 1, 0, 77, 0, 0, 4, 129, 4, 141, 0, 10, 0, 0, 97, 51, 17, 1, 35, 1, 7, 39, 1, 35, 1, 2, 6, 187, 1, 192, 212, 254, 190, 5, 5, 254, 192, 212, 1, 185, 1, 149, 2, 248, 253, 192, 9, 9, 2, 64, 253, 20, 0, 1, 0, 185, 0, 0, 4, 66, 4, 141, 0, 9, 0, 0, 101, 1, 39, 33, 21, 33, 1, 21, 33, 53, 1, 159, 2, 139, 1, 252, 153, 2, 130, 253, 117, 3, 137, 151, 3, 125, 121, 153, 252, 136, 124, 151, 0, 2, 1, 82, 4, 224, 3, 154, 7, 3, 0, 25, 0, 53, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 51, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 7, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 3, 154, 146, 17, 16, 18, 56, 38, 38, 55, 18, 18, 18, 1, 145, 42, 39, 38, 108, 66, 66, 108, 38, 37, 42, 254, 156, 127, 3, 27, 54, 21, 21, 26, 49, 47, 37, 99, 61, 7, 32, 58, 22, 22, 27, 18, 18, 18, 52, 34, 5, 176, 23, 41, 15, 17, 19, 18, 15, 15, 43, 24, 47, 76, 27, 28, 30, 30, 28, 27, 76, 64, 62, 3, 16, 14, 13, 41, 29, 38, 59, 18, 14, 15, 82, 6, 6, 7, 23, 17, 16, 20, 6, 6, 7, 2, 0, 2, 1, 66, 4, 223, 3, 160, 6, 138, 0, 25, 0, 29, 0, 0, 65, 35, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 7, 51, 55, 3, 160, 153, 1, 19, 20, 18, 54, 37, 40, 57, 18, 19, 18, 152, 44, 40, 39, 112, 69, 68, 111, 40, 39, 44, 248, 113, 102, 164, 5, 176, 25, 44, 16, 14, 17, 18, 16, 15, 43, 24, 47, 77, 27, 28, 30, 30, 28, 27, 77, 1, 9, 198, 198, 0, 1, 1, 53, 2, 139, 3, 178, 3, 34, 0, 3, 0, 0, 65, 53, 33, 21, 3, 178, 253, 131, 2, 139, 151, 151, 0, 3, 1, 209, 4, 64, 3, 168, 6, 114, 0, 3, 0, 27, 0, 39, 0, 0, 65, 7, 51, 55, 1, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 54, 54, 51, 50, 22, 21, 6, 6, 35, 34, 38, 2, 226, 146, 124, 220, 254, 41, 28, 24, 23, 62, 35, 34, 62, 23, 22, 27, 27, 22, 23, 62, 34, 35, 62, 23, 24, 28, 85, 1, 50, 36, 35, 49, 1, 48, 35, 36, 50, 6, 114, 184, 184, 254, 113, 36, 60, 21, 22, 24, 24, 22, 21, 60, 36, 36, 62, 22, 22, 25, 25, 22, 22, 62, 36, 38, 50, 50, 38, 35, 50, 50, 0, 0, 2, 1, 245, 4, 130, 3, 183, 5, 196, 0, 5, 0, 21, 0, 0, 65, 21, 51, 19, 53, 35, 5, 21, 51, 53, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 2, 175, 80, 184, 168, 254, 230, 123, 1, 7, 6, 6, 21, 13, 72, 24, 37, 13, 11, 16, 4, 158, 26, 1, 43, 21, 182, 140, 134, 24, 45, 22, 25, 47, 22, 3, 16, 42, 25, 22, 50, 0, 0, 2, 1, 116, 4, 217, 3, 194, 6, 208, 0, 25, 0, 51, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 39, 20, 6, 35, 34, 38, 39, 38, 38, 35, 34, 6, 21, 23, 54, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 3, 194, 149, 17, 18, 18, 55, 38, 39, 55, 18, 17, 17, 149, 42, 39, 38, 109, 67, 67, 109, 39, 38, 42, 9, 83, 48, 34, 32, 52, 25, 26, 53, 33, 72, 94, 84, 1, 46, 35, 33, 47, 24, 23, 54, 40, 71, 94, 5, 174, 24, 43, 16, 16, 19, 19, 16, 16, 43, 24, 47, 79, 28, 28, 31, 31, 28, 28, 79, 1, 57, 24, 38, 51, 23, 15, 14, 23, 111, 71, 21, 38, 51, 23, 14, 15, 23, 106, 0, 1, 2, 6, 254, 153, 2, 191, 0, 154, 0, 3, 0, 0, 65, 17, 35, 17, 2, 191, 185, 254, 153, 2, 1, 253, 255, 0, 0, 1, 1, 96, 254, 75, 3, 18, 0, 151, 0, 21, 0, 0, 101, 35, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 3, 18, 185, 17, 16, 18, 52, 34, 14, 66, 18, 14, 29, 53, 30, 85, 129, 40, 33, 35, 151, 240, 44, 68, 24, 24, 26, 7, 6, 157, 10, 8, 56, 53, 43, 121, 75, 0, 0, 2, 0, 204, 0, 0, 4, 75, 4, 141, 0, 16, 0, 31, 0, 0, 65, 33, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 33, 17, 51, 17, 17, 33, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 1, 132, 1, 18, 84, 158, 61, 60, 74, 74, 61, 61, 157, 84, 254, 54, 184, 1, 18, 49, 92, 35, 34, 42, 42, 34, 35, 92, 49, 1, 182, 1, 42, 44, 43, 135, 95, 92, 137, 46, 45, 46, 1, 251, 115, 2, 78, 1, 166, 1, 28, 26, 27, 80, 54, 55, 77, 25, 25, 23, 1, 0, 0, 1, 0, 169, 0, 0, 4, 182, 5, 176, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 35, 17, 35, 17, 51, 17, 2, 13, 1, 198, 227, 253, 232, 1, 239, 212, 254, 69, 156, 185, 185, 2, 147, 253, 109, 2, 239, 2, 193, 253, 122, 2, 134, 250, 80, 2, 147, 0, 1, 0, 210, 255, 236, 4, 65, 4, 157, 0, 62, 0, 0, 101, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 35, 1, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 51, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 3, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 2, 11, 53, 55, 111, 57, 87, 145, 53, 52, 59, 49, 45, 46, 129, 81, 1, 1, 18, 39, 87, 49, 50, 112, 65, 99, 149, 49, 52, 51, 184, 21, 25, 24, 83, 63, 36, 57, 23, 18, 29, 13, 237, 84, 76, 109, 34, 26, 26, 29, 27, 27, 78, 50, 54, 84, 181, 152, 26, 23, 50, 48, 48, 140, 90, 70, 109, 40, 39, 47, 7, 1, 74, 38, 67, 25, 24, 29, 51, 50, 53, 164, 110, 253, 15, 2, 241, 56, 101, 38, 37, 44, 14, 10, 8, 20, 10, 254, 217, 137, 26, 28, 21, 65, 43, 49, 81, 29, 30, 33, 31, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 1, 0, 0, 255, 255, 0, 218, 2, 49, 3, 215, 2, 201, 6, 6, 0, 103, 0, 0, 255, 255, 0, 107, 255, 236, 4, 93, 7, 46, 6, 38, 0, 4, 0, 0, 0, 7, 1, 96, 0, 52, 1, 112, 255, 255, 0, 143, 255, 236, 4, 51, 5, 215, 6, 38, 0, 30, 0, 0, 0, 6, 1, 96, 29, 25, 255, 255, 0, 100, 255, 235, 4, 92, 7, 46, 6, 38, 0, 8, 0, 0, 0, 7, 1, 96, 0, 25, 1, 112, 255, 255, 0, 140, 254, 86, 4, 29, 5, 215, 6, 38, 0, 34, 0, 0, 0, 6, 1, 96, 246, 25, 255, 255, 255, 186, 0, 0, 4, 41, 6, 22, 6, 38, 0, 41, 0, 0, 0, 7, 0, 109, 253, 237, 0, 0, 255, 255, 0, 118, 254, 36, 4, 105, 5, 196, 6, 38, 0, 20, 0, 0, 0, 7, 1, 104, 0, 181, 254, 206, 255, 255, 0, 175, 254, 37, 4, 54, 4, 78, 6, 38, 0, 46, 0, 0, 0, 7, 1, 104, 0, 168, 254, 207, 255, 255, 0, 76, 254, 46, 4, 132, 5, 176, 6, 38, 0, 21, 0, 0, 0, 7, 1, 104, 0, 163, 254, 216, 255, 255, 0, 142, 254, 46, 4, 41, 5, 64, 6, 38, 0, 47, 0, 0, 0, 7, 1, 104, 1, 5, 254, 216, 255, 255, 0, 76, 254, 77, 4, 132, 5, 176, 6, 38, 0, 21, 0, 0, 0, 6, 1, 102, 63, 0, 255, 255, 0, 93, 254, 79, 4, 105, 4, 141, 6, 38, 2, 97, 0, 0, 0, 6, 1, 102, 48, 2, 255, 255, 0, 142, 254, 77, 4, 41, 5, 64, 6, 38, 0, 47, 0, 0, 0, 7, 1, 102, 0, 161, 0, 0, 255, 255, 255, 231, 0, 0, 4, 83, 4, 141, 6, 38, 2, 82, 0, 0, 0, 7, 2, 106, 254, 178, 255, 120, 255, 255, 255, 231, 0, 0, 4, 83, 4, 141, 6, 38, 2, 82, 0, 0, 0, 7, 2, 106, 254, 178, 255, 120, 255, 255, 0, 93, 0, 0, 4, 105, 4, 141, 6, 38, 2, 97, 0, 0, 0, 6, 2, 106, 243, 224, 255, 255, 0, 54, 0, 0, 4, 142, 5, 255, 6, 38, 2, 79, 0, 0, 0, 6, 1, 90, 139, 54, 255, 255, 0, 54, 0, 0, 4, 142, 5, 252, 6, 38, 2, 79, 0, 0, 0, 6, 1, 91, 119, 51, 255, 255, 0, 54, 0, 0, 4, 142, 6, 36, 6, 38, 2, 79, 0, 0, 0, 6, 1, 92, 121, 55, 255, 255, 0, 54, 0, 0, 4, 142, 6, 46, 6, 38, 2, 79, 0, 0, 0, 7, 1, 93, 0, 133, 0, 61, 255, 255, 0, 54, 0, 0, 4, 142, 5, 252, 6, 38, 2, 79, 0, 0, 0, 6, 1, 97, 1, 55, 255, 255, 0, 54, 0, 0, 4, 142, 6, 103, 6, 38, 2, 79, 0, 0, 0, 7, 1, 98, 0, 0, 0, 128, 255, 255, 0, 54, 0, 0, 4, 142, 6, 244, 6, 38, 2, 79, 0, 0, 0, 7, 2, 107, 255, 238, 0, 130, 255, 255, 0, 110, 254, 74, 4, 54, 4, 157, 6, 38, 2, 81, 0, 0, 0, 6, 1, 102, 42, 253, 255, 255, 0, 200, 0, 0, 4, 35, 5, 255, 6, 38, 2, 83, 0, 0, 0, 7, 1, 90, 255, 109, 0, 54, 255, 255, 0, 200, 0, 0, 4, 35, 5, 252, 6, 38, 2, 83, 0, 0, 0, 6, 1, 91, 89, 51, 255, 255, 0, 200, 0, 0, 4, 35, 6, 36, 6, 38, 2, 83, 0, 0, 0, 6, 1, 92, 91, 55, 255, 255, 0, 200, 0, 0, 4, 35, 5, 252, 6, 38, 2, 83, 0, 0, 0, 6, 1, 97, 228, 55, 255, 255, 0, 217, 0, 0, 4, 16, 5, 227, 6, 38, 2, 87, 0, 0, 0, 6, 1, 90, 166, 26, 255, 255, 0, 217, 0, 0, 4, 16, 5, 224, 6, 38, 2, 87, 0, 0, 0, 7, 1, 91, 0, 146, 0, 23, 255, 255, 0, 217, 0, 0, 4, 16, 6, 8, 6, 38, 2, 87, 0, 0, 0, 7, 1, 92, 0, 148, 0, 27, 255, 255, 0, 217, 0, 0, 4, 16, 5, 224, 6, 38, 2, 87, 0, 0, 0, 6, 1, 97, 28, 27, 255, 255, 0, 194, 0, 0, 4, 22, 6, 46, 6, 38, 2, 92, 0, 0, 0, 7, 1, 93, 0, 220, 0, 61, 255, 255, 0, 130, 255, 240, 4, 74, 5, 255, 6, 38, 2, 93, 0, 0, 0, 6, 1, 90, 173, 54, 255, 255, 0, 130, 255, 240, 4, 74, 5, 252, 6, 38, 2, 93, 0, 0, 0, 7, 1, 91, 0, 153, 0, 51, 255, 255, 0, 130, 255, 240, 4, 74, 6, 36, 6, 38, 2, 93, 0, 0, 0, 7, 1, 92, 0, 155, 0, 55, 255, 255, 0, 130, 255, 240, 4, 74, 6, 46, 6, 38, 2, 93, 0, 0, 0, 7, 1, 93, 0, 167, 0, 61, 255, 255, 0, 130, 255, 240, 4, 74, 5, 252, 6, 38, 2, 93, 0, 0, 0, 6, 1, 97, 35, 55, 255, 255, 0, 181, 255, 240, 4, 43, 5, 255, 6, 38, 2, 98, 0, 0, 0, 6, 1, 90, 169, 54, 255, 255, 0, 181, 255, 240, 4, 43, 5, 252, 6, 38, 2, 98, 0, 0, 0, 7, 1, 91, 0, 149, 0, 51, 255, 255, 0, 181, 255, 240, 4, 43, 6, 36, 6, 38, 2, 98, 0, 0, 0, 7, 1, 92, 0, 151, 0, 55, 255, 255, 0, 181, 255, 240, 4, 43, 5, 252, 6, 38, 2, 98, 0, 0, 0, 6, 1, 97, 31, 55, 255, 255, 0, 77, 0, 0, 4, 129, 5, 252, 6, 38, 2, 102, 0, 0, 0, 6, 1, 91, 98, 51, 255, 255, 0, 54, 0, 0, 4, 142, 5, 214, 6, 38, 2, 79, 0, 0, 0, 6, 1, 94, 5, 38, 255, 255, 0, 54, 0, 0, 4, 142, 6, 38, 6, 38, 2, 79, 0, 0, 0, 6, 1, 95, 1, 116, 0, 2, 0, 54, 254, 79, 4, 145, 4, 141, 0, 35, 0, 40, 0, 0, 65, 35, 1, 51, 19, 33, 19, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 1, 19, 55, 23, 19, 2, 184, 165, 254, 35, 188, 110, 2, 6, 103, 30, 51, 21, 35, 38, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 28, 26, 22, 60, 36, 35, 253, 14, 176, 24, 24, 175, 4, 141, 251, 115, 1, 23, 254, 248, 20, 44, 23, 40, 87, 44, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 36, 65, 29, 25, 45, 19, 1, 174, 1, 191, 60, 61, 254, 66, 0, 255, 255, 0, 110, 255, 240, 4, 54, 5, 252, 6, 38, 2, 81, 0, 0, 0, 6, 1, 91, 104, 51, 255, 255, 0, 110, 255, 240, 4, 54, 6, 36, 6, 38, 2, 81, 0, 0, 0, 6, 1, 92, 106, 55, 255, 255, 0, 110, 255, 240, 4, 54, 6, 37, 6, 38, 2, 81, 0, 0, 0, 6, 1, 100, 244, 56, 255, 255, 0, 183, 0, 0, 4, 83, 6, 37, 6, 38, 2, 82, 0, 0, 0, 6, 1, 100, 187, 56, 255, 255, 0, 200, 0, 0, 4, 35, 5, 214, 6, 38, 2, 83, 0, 0, 0, 6, 1, 94, 232, 38, 255, 255, 0, 200, 0, 0, 4, 35, 6, 38, 6, 38, 2, 83, 0, 0, 0, 6, 1, 95, 228, 116, 255, 255, 0, 200, 0, 0, 4, 35, 5, 245, 6, 38, 2, 83, 0, 0, 0, 6, 1, 96, 228, 55, 0, 1, 0, 200, 254, 79, 4, 35, 4, 141, 0, 40, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 53, 33, 17, 3, 197, 253, 192, 2, 152, 252, 171, 2, 31, 24, 40, 17, 34, 37, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 29, 26, 22, 59, 36, 135, 253, 98, 2, 14, 152, 1, 78, 153, 251, 115, 17, 38, 19, 40, 87, 42, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 36, 66, 29, 25, 44, 19, 151, 1, 119, 255, 255, 0, 200, 0, 0, 4, 35, 6, 37, 6, 38, 2, 83, 0, 0, 0, 6, 1, 100, 229, 56, 255, 255, 0, 124, 255, 240, 4, 65, 6, 36, 6, 38, 2, 85, 0, 0, 0, 6, 1, 92, 116, 55, 255, 255, 0, 124, 255, 240, 4, 65, 6, 38, 6, 38, 2, 85, 0, 0, 0, 6, 1, 95, 253, 116, 255, 255, 0, 124, 254, 43, 4, 65, 4, 157, 6, 38, 2, 85, 0, 0, 0, 7, 1, 104, 0, 157, 254, 213, 255, 255, 0, 155, 0, 0, 3, 249, 6, 36, 6, 38, 2, 86, 0, 0, 0, 7, 1, 92, 0, 158, 0, 55, 255, 255, 0, 217, 0, 0, 4, 16, 6, 18, 6, 38, 2, 87, 0, 0, 0, 7, 1, 93, 0, 160, 0, 33, 255, 255, 0, 217, 0, 0, 4, 16, 5, 186, 6, 38, 2, 87, 0, 0, 0, 6, 1, 94, 32, 10, 255, 255, 0, 217, 0, 0, 4, 16, 6, 10, 6, 38, 2, 87, 0, 0, 0, 6, 1, 95, 28, 88, 0, 1, 0, 217, 254, 79, 4, 16, 4, 140, 0, 40, 0, 0, 83, 21, 33, 17, 33, 21, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 33, 53, 33, 17, 33, 53, 217, 1, 59, 254, 197, 1, 108, 29, 48, 19, 27, 29, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 31, 28, 21, 58, 34, 1, 22, 254, 189, 1, 67, 4, 140, 161, 252, 181, 160, 21, 47, 25, 36, 76, 38, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 37, 68, 30, 23, 43, 18, 160, 3, 75, 161, 0, 255, 255, 0, 217, 0, 0, 4, 16, 5, 217, 6, 38, 2, 87, 0, 0, 0, 6, 1, 96, 28, 27, 255, 255, 0, 150, 255, 240, 4, 119, 6, 36, 6, 38, 2, 88, 0, 0, 0, 7, 1, 92, 1, 89, 0, 55, 255, 255, 0, 180, 254, 52, 4, 128, 4, 141, 6, 38, 2, 89, 0, 0, 0, 7, 1, 104, 0, 107, 254, 222, 255, 255, 0, 182, 0, 0, 4, 82, 5, 252, 6, 38, 2, 90, 0, 0, 0, 7, 1, 91, 255, 28, 0, 51, 255, 255, 0, 209, 254, 54, 4, 82, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 1, 104, 0, 104, 254, 224, 255, 255, 0, 209, 0, 0, 4, 82, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 0, 109, 0, 148, 254, 119, 255, 255, 0, 209, 0, 0, 4, 82, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 1, 96, 0, 25, 253, 55, 255, 255, 0, 194, 0, 0, 4, 15, 5, 252, 6, 38, 2, 92, 0, 0, 0, 7, 1, 91, 0, 206, 0, 51, 255, 255, 0, 194, 254, 50, 4, 15, 4, 141, 6, 38, 2, 92, 0, 0, 0, 7, 1, 104, 0, 239, 254, 220, 255, 255, 0, 194, 0, 0, 4, 15, 6, 37, 6, 38, 2, 92, 0, 0, 0, 6, 1, 100, 89, 56, 255, 255, 0, 130, 255, 240, 4, 74, 5, 214, 6, 38, 2, 93, 0, 0, 0, 6, 1, 94, 39, 38, 255, 255, 0, 130, 255, 240, 4, 74, 6, 38, 6, 38, 2, 93, 0, 0, 0, 6, 1, 95, 35, 116, 255, 255, 0, 130, 255, 240, 4, 127, 6, 38, 6, 38, 2, 93, 0, 0, 0, 7, 1, 99, 0, 169, 0, 55, 255, 255, 0, 144, 0, 0, 4, 44, 5, 252, 6, 38, 2, 95, 0, 0, 0, 6, 1, 91, 30, 51, 255, 255, 0, 144, 254, 54, 4, 44, 4, 141, 6, 38, 2, 95, 0, 0, 0, 7, 1, 104, 0, 69, 254, 224, 255, 255, 0, 144, 0, 0, 4, 44, 6, 37, 6, 38, 2, 95, 0, 0, 0, 6, 1, 100, 170, 56, 255, 255, 0, 138, 255, 240, 4, 57, 5, 252, 6, 38, 2, 96, 0, 0, 0, 6, 1, 91, 113, 51, 255, 255, 0, 138, 255, 240, 4, 57, 6, 36, 6, 38, 2, 96, 0, 0, 0, 6, 1, 92, 115, 55, 255, 255, 0, 138, 254, 77, 4, 57, 4, 157, 6, 38, 2, 96, 0, 0, 0, 6, 1, 102, 61, 0, 255, 255, 0, 138, 255, 240, 4, 57, 6, 37, 6, 38, 2, 96, 0, 0, 0, 6, 1, 100, 253, 56, 255, 255, 0, 93, 0, 0, 4, 105, 6, 37, 6, 38, 2, 97, 0, 0, 0, 6, 1, 100, 249, 56, 255, 255, 0, 181, 255, 240, 4, 43, 6, 46, 6, 38, 2, 98, 0, 0, 0, 7, 1, 93, 0, 163, 0, 61, 255, 255, 0, 181, 255, 240, 4, 43, 5, 214, 6, 38, 2, 98, 0, 0, 0, 6, 1, 94, 35, 38, 255, 255, 0, 181, 255, 240, 4, 43, 6, 38, 6, 38, 2, 98, 0, 0, 0, 6, 1, 95, 31, 116, 255, 255, 0, 181, 255, 240, 4, 43, 6, 103, 6, 38, 2, 98, 0, 0, 0, 7, 1, 98, 0, 30, 0, 128, 255, 255, 0, 181, 255, 240, 4, 123, 6, 38, 6, 38, 2, 98, 0, 0, 0, 7, 1, 99, 0, 165, 0, 55, 0, 1, 0, 181, 254, 140, 4, 43, 4, 141, 0, 57, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 3, 35, 3, 22, 22, 23, 22, 22, 51, 50, 50, 51, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 39, 34, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 53, 4, 42, 183, 1, 1, 37, 33, 34, 95, 59, 59, 95, 33, 34, 37, 1, 1, 181, 1, 1, 70, 60, 59, 160, 92, 1, 2, 1, 11, 19, 8, 15, 16, 30, 26, 26, 70, 41, 65, 85, 28, 31, 16, 53, 32, 42, 36, 12, 12, 15, 48, 32, 102, 127, 4, 141, 252, 244, 59, 93, 32, 32, 34, 34, 32, 32, 93, 59, 3, 12, 252, 244, 96, 149, 51, 51, 54, 14, 27, 14, 27, 56, 28, 47, 71, 24, 24, 24, 28, 16, 121, 8, 19, 1, 41, 34, 24, 44, 21, 27, 49, 21, 43, 193, 121, 0, 255, 255, 0, 47, 0, 0, 4, 187, 6, 36, 6, 38, 2, 100, 0, 0, 0, 7, 1, 92, 0, 138, 0, 55, 255, 255, 0, 77, 0, 0, 4, 129, 6, 36, 6, 38, 2, 102, 0, 0, 0, 6, 1, 92, 100, 55, 255, 255, 0, 77, 0, 0, 4, 129, 5, 252, 6, 38, 2, 102, 0, 0, 0, 6, 1, 97, 237, 55, 255, 255, 0, 185, 0, 0, 4, 66, 5, 252, 6, 38, 2, 103, 0, 0, 0, 7, 1, 91, 0, 160, 0, 51, 255, 255, 0, 185, 0, 0, 4, 66, 5, 245, 6, 38, 2, 103, 0, 0, 0, 6, 1, 96, 42, 55, 255, 255, 0, 185, 0, 0, 4, 66, 6, 37, 6, 38, 2, 103, 0, 0, 0, 6, 1, 100, 43, 56, 255, 255, 0, 81, 0, 0, 4, 144, 6, 122, 6, 38, 0, 2, 0, 0, 0, 7, 1, 120, 254, 192, 0, 0, 255, 255, 255, 221, 0, 0, 4, 102, 6, 122, 4, 38, 0, 6, 50, 0, 0, 7, 1, 120, 253, 180, 0, 0, 255, 255, 255, 203, 0, 0, 4, 113, 6, 124, 4, 38, 0, 9, 50, 0, 0, 7, 1, 120, 253, 162, 0, 2, 255, 255, 255, 186, 0, 0, 4, 80, 6, 123, 4, 38, 0, 10, 50, 0, 0, 7, 1, 120, 253, 145, 0, 1, 255, 255, 255, 255, 255, 236, 4, 107, 6, 122, 4, 38, 0, 16, 10, 0, 0, 7, 1, 120, 253, 214, 0, 0, 255, 255, 255, 128, 0, 0, 4, 171, 6, 122, 4, 38, 0, 26, 50, 0, 0, 7, 1, 120, 253, 87, 0, 0, 255, 255, 255, 251, 0, 0, 4, 118, 6, 122, 4, 38, 1, 132, 10, 0, 0, 7, 1, 120, 253, 210, 0, 0, 255, 255, 0, 184, 255, 236, 4, 58, 6, 122, 6, 38, 1, 141, 0, 0, 0, 6, 1, 121, 228, 187, 255, 255, 0, 81, 0, 0, 4, 144, 5, 176, 6, 6, 0, 2, 0, 0, 255, 255, 0, 172, 0, 0, 4, 96, 5, 176, 6, 6, 0, 3, 0, 0, 255, 255, 0, 182, 0, 0, 4, 52, 5, 176, 6, 6, 0, 6, 0, 0, 255, 255, 0, 114, 0, 0, 4, 55, 5, 176, 6, 6, 0, 27, 0, 0, 255, 255, 0, 141, 0, 0, 4, 63, 5, 176, 6, 6, 0, 9, 0, 0, 255, 255, 0, 174, 0, 0, 4, 30, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 172, 0, 0, 4, 164, 5, 176, 6, 6, 0, 12, 0, 0, 255, 255, 0, 148, 0, 0, 4, 76, 5, 176, 6, 6, 0, 14, 0, 0, 255, 255, 0, 143, 0, 0, 4, 62, 5, 176, 6, 6, 0, 15, 0, 0, 255, 255, 0, 106, 255, 236, 4, 97, 5, 196, 6, 6, 0, 16, 0, 0, 255, 255, 0, 191, 0, 0, 4, 121, 5, 176, 6, 6, 0, 17, 0, 0, 255, 255, 0, 76, 0, 0, 4, 132, 5, 176, 6, 6, 0, 21, 0, 0, 255, 255, 0, 61, 0, 0, 4, 121, 5, 176, 6, 6, 0, 26, 0, 0, 255, 255, 0, 87, 0, 0, 4, 143, 5, 176, 6, 6, 0, 25, 0, 0, 255, 255, 0, 174, 0, 0, 4, 30, 7, 32, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 255, 210, 1, 91, 255, 255, 0, 61, 0, 0, 4, 121, 7, 31, 6, 38, 0, 26, 0, 0, 0, 7, 1, 97, 255, 252, 1, 90, 255, 255, 0, 129, 255, 235, 4, 138, 6, 126, 6, 38, 1, 133, 0, 0, 0, 6, 1, 120, 15, 4, 255, 255, 0, 139, 255, 236, 4, 96, 6, 125, 6, 38, 1, 137, 0, 0, 0, 6, 1, 120, 20, 3, 255, 255, 0, 164, 254, 97, 4, 43, 6, 126, 6, 38, 1, 139, 0, 0, 0, 6, 1, 120, 28, 4, 255, 255, 0, 184, 255, 236, 4, 58, 6, 106, 6, 38, 1, 141, 0, 0, 0, 6, 1, 120, 14, 240, 255, 255, 0, 158, 255, 236, 4, 63, 6, 122, 6, 38, 1, 149, 0, 0, 0, 6, 1, 121, 192, 187, 255, 255, 0, 186, 0, 0, 4, 114, 4, 58, 6, 6, 0, 79, 0, 0, 255, 255, 0, 122, 255, 236, 4, 82, 4, 78, 6, 6, 0, 42, 0, 0, 255, 255, 0, 188, 254, 96, 4, 16, 4, 58, 6, 6, 1, 107, 0, 0, 255, 255, 0, 98, 0, 0, 4, 101, 4, 58, 6, 6, 0, 49, 0, 0, 255, 255, 0, 110, 0, 0, 4, 114, 4, 58, 6, 6, 0, 51, 0, 0, 255, 255, 0, 184, 255, 236, 4, 58, 5, 201, 6, 38, 1, 141, 0, 0, 0, 6, 1, 97, 5, 4, 255, 255, 0, 158, 255, 236, 4, 63, 5, 201, 6, 38, 1, 149, 0, 0, 0, 6, 1, 97, 226, 4, 255, 255, 0, 122, 255, 236, 4, 82, 6, 126, 6, 38, 0, 42, 0, 0, 0, 6, 1, 120, 9, 4, 255, 255, 0, 158, 255, 236, 4, 63, 6, 106, 6, 38, 1, 149, 0, 0, 0, 6, 1, 120, 235, 240, 255, 255, 0, 79, 255, 236, 4, 137, 6, 106, 6, 38, 1, 152, 0, 0, 0, 6, 1, 120, 21, 240, 255, 255, 0, 182, 0, 0, 4, 52, 7, 32, 6, 38, 0, 6, 0, 0, 0, 7, 1, 97, 0, 5, 1, 91, 255, 255, 0, 181, 0, 0, 4, 48, 7, 32, 6, 38, 1, 123, 0, 0, 0, 7, 1, 91, 0, 128, 1, 87, 0, 1, 0, 118, 255, 236, 4, 105, 5, 196, 0, 79, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 35, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 168, 52, 41, 41, 105, 54, 68, 115, 44, 44, 56, 9, 189, 3, 92, 74, 73, 186, 97, 87, 174, 69, 69, 87, 37, 33, 33, 88, 51, 51, 110, 54, 49, 111, 47, 48, 62, 1, 47, 40, 39, 101, 53, 66, 105, 38, 38, 46, 8, 190, 2, 82, 68, 68, 176, 95, 86, 170, 67, 67, 83, 83, 66, 65, 159, 77, 53, 115, 48, 28, 46, 14, 10, 11, 1, 112, 60, 87, 28, 29, 27, 37, 37, 36, 105, 68, 104, 163, 56, 57, 60, 49, 49, 48, 146, 98, 65, 107, 45, 44, 70, 28, 28, 43, 17, 15, 40, 30, 30, 87, 63, 58, 88, 30, 30, 30, 41, 37, 37, 103, 63, 100, 162, 57, 57, 63, 53, 51, 51, 148, 94, 94, 139, 51, 51, 70, 25, 17, 42, 31, 19, 47, 30, 20, 48, 255, 255, 0, 174, 0, 0, 4, 30, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 174, 0, 0, 4, 30, 7, 32, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 255, 210, 1, 91, 255, 255, 0, 98, 255, 236, 4, 22, 5, 176, 6, 6, 0, 11, 0, 0, 255, 255, 0, 169, 0, 0, 4, 182, 5, 176, 6, 6, 2, 113, 0, 0, 255, 255, 0, 172, 0, 0, 4, 164, 7, 14, 6, 38, 0, 12, 0, 0, 0, 7, 1, 91, 0, 126, 1, 69, 255, 255, 0, 43, 255, 235, 4, 181, 7, 74, 6, 38, 1, 168, 0, 0, 0, 7, 1, 95, 0, 33, 1, 152, 255, 255, 0, 81, 0, 0, 4, 144, 5, 176, 6, 6, 0, 2, 0, 0, 255, 255, 0, 172, 0, 0, 4, 96, 5, 176, 6, 6, 0, 3, 0, 0, 255, 255, 0, 181, 0, 0, 4, 48, 5, 176, 6, 6, 1, 123, 0, 0, 255, 255, 0, 182, 0, 0, 4, 52, 5, 176, 6, 6, 0, 6, 0, 0, 255, 255, 0, 162, 0, 0, 4, 42, 7, 62, 6, 38, 1, 166, 0, 0, 0, 7, 1, 95, 255, 249, 1, 140, 255, 255, 0, 148, 0, 0, 4, 76, 5, 176, 6, 6, 0, 14, 0, 0, 255, 255, 0, 141, 0, 0, 4, 63, 5, 176, 6, 6, 0, 9, 0, 0, 255, 255, 0, 106, 255, 236, 4, 97, 5, 196, 6, 6, 0, 16, 0, 0, 255, 255, 0, 162, 0, 0, 4, 42, 5, 176, 6, 6, 1, 128, 0, 0, 255, 255, 0, 191, 0, 0, 4, 121, 5, 176, 6, 6, 0, 17, 0, 0, 255, 255, 0, 107, 255, 236, 4, 93, 5, 196, 6, 6, 0, 4, 0, 0, 255, 255, 0, 76, 0, 0, 4, 132, 5, 176, 6, 6, 0, 21, 0, 0, 255, 255, 0, 69, 0, 0, 4, 135, 5, 176, 6, 6, 1, 130, 0, 0, 255, 255, 0, 87, 0, 0, 4, 143, 5, 176, 6, 6, 0, 25, 0, 0, 255, 255, 0, 156, 255, 236, 4, 54, 4, 78, 6, 6, 0, 28, 0, 0, 255, 255, 0, 135, 255, 236, 4, 69, 4, 78, 6, 6, 0, 32, 0, 0, 255, 255, 0, 165, 0, 0, 4, 39, 5, 243, 6, 38, 1, 185, 0, 0, 0, 6, 1, 95, 244, 65, 255, 255, 0, 122, 255, 236, 4, 82, 4, 78, 6, 6, 0, 42, 0, 0, 255, 255, 0, 173, 254, 96, 4, 63, 4, 78, 6, 6, 0, 43, 0, 0, 0, 1, 0, 143, 255, 236, 4, 51, 4, 78, 0, 51, 0, 0, 101, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 35, 6, 6, 7, 6, 6, 2, 123, 87, 117, 35, 36, 31, 31, 36, 36, 117, 86, 56, 97, 35, 35, 41, 1, 175, 66, 58, 59, 161, 96, 123, 184, 61, 62, 62, 62, 62, 61, 184, 123, 86, 158, 61, 61, 73, 1, 175, 1, 45, 37, 37, 95, 130, 69, 56, 55, 139, 71, 42, 70, 138, 56, 55, 69, 38, 33, 33, 87, 49, 82, 144, 53, 52, 61, 88, 74, 75, 196, 107, 42, 108, 195, 74, 75, 88, 59, 50, 49, 131, 72, 45, 77, 28, 29, 32, 0, 255, 255, 0, 68, 254, 75, 4, 133, 4, 58, 6, 6, 0, 52, 0, 0, 255, 255, 0, 110, 0, 0, 4, 114, 4, 58, 6, 6, 0, 51, 0, 0, 255, 255, 0, 135, 255, 236, 4, 69, 5, 223, 6, 38, 0, 32, 0, 0, 0, 6, 1, 97, 6, 26, 255, 255, 0, 183, 0, 0, 4, 42, 5, 201, 6, 38, 1, 181, 0, 0, 0, 6, 1, 91, 115, 0, 255, 255, 0, 175, 255, 236, 4, 54, 4, 78, 6, 6, 0, 46, 0, 0, 255, 255, 0, 203, 0, 0, 4, 85, 5, 195, 6, 6, 0, 36, 0, 0, 255, 255, 0, 203, 0, 0, 4, 85, 5, 201, 6, 38, 1, 109, 0, 0, 0, 6, 1, 97, 52, 4, 255, 255, 0, 211, 254, 75, 3, 88, 5, 195, 6, 6, 0, 37, 0, 0, 255, 255, 0, 164, 0, 0, 4, 149, 5, 201, 6, 38, 1, 186, 0, 0, 0, 6, 1, 91, 39, 0, 255, 255, 0, 68, 254, 75, 4, 133, 5, 244, 6, 38, 0, 52, 0, 0, 0, 6, 1, 95, 19, 66, 255, 255, 0, 104, 255, 245, 4, 102, 5, 176, 4, 39, 0, 91, 254, 130, 0, 0, 0, 7, 0, 91, 1, 154, 0, 0, 255, 255, 0, 176, 254, 75, 3, 251, 5, 233, 6, 38, 1, 113, 0, 0, 0, 6, 1, 100, 96, 252, 255, 255, 1, 205, 4, 7, 2, 224, 6, 22, 6, 6, 0, 109, 0, 0, 255, 255, 0, 148, 0, 0, 4, 76, 7, 32, 6, 38, 0, 14, 0, 0, 0, 7, 1, 91, 0, 117, 1, 87, 255, 255, 0, 93, 0, 0, 4, 114, 5, 222, 6, 38, 0, 40, 0, 0, 0, 7, 1, 91, 0, 156, 0, 21, 255, 255, 0, 81, 254, 134, 4, 144, 5, 176, 6, 38, 0, 2, 0, 0, 0, 6, 1, 114, 37, 0, 255, 255, 0, 156, 254, 134, 4, 54, 4, 78, 6, 38, 0, 28, 0, 0, 0, 6, 1, 114, 237, 0, 255, 255, 255, 137, 255, 236, 4, 97, 6, 86, 6, 38, 0, 16, 0, 0, 0, 7, 2, 108, 253, 148, 0, 146, 255, 255, 0, 182, 0, 0, 4, 52, 7, 35, 6, 38, 0, 6, 0, 0, 0, 7, 1, 90, 255, 143, 1, 90, 255, 255, 0, 162, 0, 0, 4, 42, 7, 23, 6, 38, 1, 166, 0, 0, 0, 7, 1, 90, 255, 130, 1, 78, 255, 255, 0, 135, 255, 236, 4, 69, 5, 226, 6, 38, 0, 32, 0, 0, 0, 6, 1, 90, 144, 25, 255, 255, 0, 165, 0, 0, 4, 39, 5, 204, 6, 38, 1, 185, 0, 0, 0, 7, 1, 90, 255, 125, 0, 3, 255, 255, 0, 101, 0, 0, 4, 114, 5, 176, 6, 6, 1, 131, 0, 0, 255, 255, 0, 97, 254, 40, 4, 128, 4, 58, 6, 6, 1, 151, 0, 0, 255, 255, 0, 26, 0, 0, 4, 225, 7, 66, 6, 38, 1, 226, 0, 0, 0, 7, 1, 119, 4, 89, 1, 84, 255, 255, 0, 64, 0, 0, 4, 96, 6, 25, 6, 38, 1, 227, 0, 0, 0, 7, 1, 119, 4, 59, 0, 43, 255, 255, 0, 89, 254, 47, 4, 112, 5, 196, 6, 38, 1, 165, 0, 0, 0, 6, 2, 110, 241, 150, 255, 255, 0, 135, 254, 57, 4, 74, 4, 77, 6, 38, 1, 184, 0, 0, 0, 6, 2, 110, 8, 160, 255, 255, 0, 107, 254, 57, 4, 93, 5, 196, 6, 38, 0, 4, 0, 0, 0, 6, 2, 110, 255, 160, 255, 255, 0, 143, 254, 57, 4, 51, 4, 78, 6, 38, 0, 30, 0, 0, 0, 6, 2, 110, 19, 160, 255, 255, 0, 61, 0, 0, 4, 121, 5, 176, 6, 6, 0, 26, 0, 0, 255, 255, 0, 71, 254, 96, 4, 150, 4, 58, 6, 6, 1, 135, 0, 0, 255, 255, 0, 174, 0, 0, 4, 30, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 29, 0, 0, 4, 174, 7, 74, 6, 38, 1, 164, 0, 0, 0, 7, 1, 95, 0, 13, 1, 152, 255, 255, 0, 17, 0, 0, 4, 172, 5, 243, 6, 38, 1, 183, 0, 0, 0, 6, 1, 95, 244, 65, 255, 255, 0, 174, 0, 0, 4, 30, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 81, 0, 0, 4, 144, 7, 74, 6, 38, 0, 2, 0, 0, 0, 7, 1, 95, 0, 15, 1, 152, 255, 255, 0, 156, 255, 236, 4, 54, 6, 8, 6, 38, 0, 28, 0, 0, 0, 6, 1, 95, 11, 86, 255, 255, 0, 81, 0, 0, 4, 144, 7, 32, 6, 38, 0, 2, 0, 0, 0, 7, 1, 97, 0, 15, 1, 91, 255, 255, 0, 156, 255, 236, 4, 54, 5, 222, 6, 38, 0, 28, 0, 0, 0, 6, 1, 97, 11, 25, 255, 255, 0, 32, 0, 0, 4, 171, 5, 176, 6, 6, 0, 72, 0, 0, 255, 255, 0, 43, 255, 236, 4, 169, 4, 78, 6, 6, 0, 73, 0, 0, 255, 255, 0, 182, 0, 0, 4, 52, 7, 74, 6, 38, 0, 6, 0, 0, 0, 7, 1, 95, 0, 5, 1, 152, 255, 255, 0, 135, 255, 236, 4, 69, 6, 9, 6, 38, 0, 32, 0, 0, 0, 6, 1, 95, 6, 87, 255, 255, 0, 90, 255, 235, 4, 87, 6, 242, 6, 38, 2, 16, 0, 0, 0, 7, 1, 97, 255, 251, 1, 45, 255, 255, 0, 177, 255, 236, 4, 95, 4, 79, 6, 6, 0, 81, 0, 0, 255, 255, 0, 177, 255, 236, 4, 95, 5, 223, 6, 38, 0, 81, 0, 0, 0, 6, 1, 97, 40, 26, 255, 255, 0, 29, 0, 0, 4, 174, 7, 32, 6, 38, 1, 164, 0, 0, 0, 7, 1, 97, 0, 13, 1, 91, 255, 255, 0, 17, 0, 0, 4, 172, 5, 201, 6, 38, 1, 183, 0, 0, 0, 6, 1, 97, 244, 4, 255, 255, 0, 89, 255, 235, 4, 112, 7, 53, 6, 38, 1, 165, 0, 0, 0, 7, 1, 97, 255, 252, 1, 112, 255, 255, 0, 135, 255, 237, 4, 74, 5, 221, 6, 38, 1, 184, 0, 0, 0, 6, 1, 97, 10, 24, 255, 255, 0, 162, 0, 0, 4, 42, 6, 238, 6, 38, 1, 166, 0, 0, 0, 7, 1, 94, 255, 253, 1, 62, 255, 255, 0, 165, 0, 0, 4, 39, 5, 164, 6, 38, 1, 185, 0, 0, 0, 6, 1, 94, 248, 244, 255, 255, 0, 162, 0, 0, 4, 42, 7, 20, 6, 38, 1, 166, 0, 0, 0, 7, 1, 97, 255, 249, 1, 79, 255, 255, 0, 165, 0, 0, 4, 39, 5, 201, 6, 38, 1, 185, 0, 0, 0, 6, 1, 97, 244, 4, 255, 255, 0, 106, 255, 236, 4, 97, 7, 53, 6, 38, 0, 16, 0, 0, 0, 7, 1, 97, 0, 19, 1, 112, 255, 255, 0, 122, 255, 236, 4, 82, 5, 222, 6, 38, 0, 42, 0, 0, 0, 6, 1, 97, 0, 25, 255, 255, 0, 99, 255, 236, 4, 90, 5, 196, 6, 6, 1, 224, 0, 0, 255, 255, 0, 93, 255, 236, 4, 53, 4, 78, 6, 6, 1, 225, 0, 0, 255, 255, 0, 99, 255, 236, 4, 90, 7, 27, 6, 38, 1, 224, 0, 0, 0, 7, 1, 97, 0, 20, 1, 86, 255, 255, 0, 93, 255, 236, 4, 53, 5, 250, 6, 38, 1, 225, 0, 0, 0, 6, 1, 97, 208, 53, 255, 255, 0, 114, 255, 236, 4, 83, 7, 54, 6, 38, 1, 176, 0, 0, 0, 7, 1, 97, 255, 241, 1, 113, 255, 255, 0, 129, 255, 236, 4, 58, 5, 222, 6, 38, 1, 200, 0, 0, 0, 6, 1, 97, 237, 25, 255, 255, 0, 43, 255, 235, 4, 181, 6, 250, 6, 38, 1, 168, 0, 0, 0, 7, 1, 94, 0, 37, 1, 74, 255, 255, 0, 68, 254, 75, 4, 133, 5, 165, 6, 38, 0, 52, 0, 0, 0, 6, 1, 94, 23, 245, 255, 255, 0, 43, 255, 235, 4, 181, 7, 32, 6, 38, 1, 168, 0, 0, 0, 7, 1, 97, 0, 33, 1, 91, 255, 255, 0, 68, 254, 75, 4, 133, 5, 202, 6, 38, 0, 52, 0, 0, 0, 6, 1, 97, 19, 5, 255, 255, 0, 43, 255, 235, 4, 181, 7, 74, 6, 38, 1, 168, 0, 0, 0, 7, 1, 99, 0, 167, 1, 91, 255, 255, 0, 68, 254, 75, 4, 133, 5, 244, 6, 38, 0, 52, 0, 0, 0, 7, 1, 99, 0, 153, 0, 5, 255, 255, 0, 171, 0, 0, 4, 39, 7, 32, 6, 38, 1, 170, 0, 0, 0, 7, 1, 97, 255, 179, 1, 91, 255, 255, 0, 141, 0, 0, 4, 39, 5, 201, 6, 38, 1, 194, 0, 0, 0, 6, 1, 97, 27, 4, 255, 255, 0, 144, 0, 0, 4, 75, 7, 32, 6, 38, 1, 174, 0, 0, 0, 7, 1, 97, 255, 225, 1, 91, 255, 255, 0, 144, 0, 0, 4, 63, 5, 201, 6, 38, 1, 198, 0, 0, 0, 6, 1, 97, 67, 4, 255, 255, 0, 87, 254, 75, 5, 22, 5, 176, 6, 38, 0, 25, 0, 0, 0, 7, 2, 111, 2, 4, 0, 0, 255, 255, 0, 110, 254, 75, 4, 165, 4, 58, 6, 38, 0, 51, 0, 0, 0, 7, 2, 111, 1, 147, 0, 0, 255, 255, 0, 139, 255, 236, 4, 28, 6, 0, 6, 6, 0, 31, 0, 0, 255, 255, 0, 47, 254, 75, 4, 227, 5, 176, 6, 38, 1, 167, 0, 0, 0, 7, 2, 111, 1, 209, 0, 0, 255, 255, 0, 55, 254, 75, 4, 222, 4, 58, 6, 38, 1, 187, 0, 0, 0, 7, 2, 111, 1, 204, 0, 0, 255, 255, 0, 81, 254, 168, 4, 144, 5, 176, 6, 38, 0, 2, 0, 0, 0, 7, 1, 101, 4, 223, 0, 0, 255, 255, 0, 156, 254, 168, 4, 54, 4, 78, 6, 38, 0, 28, 0, 0, 0, 7, 1, 101, 4, 163, 0, 0, 255, 255, 0, 81, 0, 0, 4, 144, 7, 198, 6, 38, 0, 2, 0, 0, 0, 7, 1, 118, 4, 200, 1, 82, 255, 255, 0, 156, 255, 236, 4, 54, 6, 132, 6, 38, 0, 28, 0, 0, 0, 7, 1, 118, 4, 196, 0, 16, 255, 255, 0, 81, 0, 0, 4, 233, 7, 238, 6, 38, 0, 2, 0, 0, 0, 7, 2, 76, 255, 245, 1, 89, 255, 255, 0, 156, 255, 236, 4, 229, 6, 172, 6, 38, 0, 28, 0, 0, 0, 6, 2, 76, 241, 23, 255, 255, 255, 252, 0, 0, 4, 144, 7, 221, 6, 38, 0, 2, 0, 0, 0, 7, 2, 75, 255, 236, 1, 72, 255, 255, 255, 248, 255, 236, 4, 54, 6, 155, 6, 38, 0, 28, 0, 0, 0, 6, 2, 75, 232, 6, 255, 255, 0, 81, 0, 0, 4, 187, 8, 4, 6, 38, 0, 2, 0, 0, 0, 7, 2, 74, 0, 1, 1, 53, 255, 255, 0, 156, 255, 236, 4, 184, 6, 195, 6, 38, 0, 28, 0, 0, 0, 6, 2, 74, 254, 244, 255, 255, 0, 81, 0, 0, 4, 144, 8, 47, 6, 38, 0, 2, 0, 0, 0, 7, 2, 73, 255, 243, 1, 54, 255, 255, 0, 156, 255, 236, 4, 54, 6, 238, 6, 38, 0, 28, 0, 0, 0, 6, 2, 73, 239, 245, 255, 255, 0, 81, 254, 168, 4, 144, 7, 72, 6, 38, 0, 2, 0, 0, 0, 39, 1, 92, 0, 135, 1, 91, 0, 7, 1, 101, 4, 223, 0, 0, 255, 255, 0, 156, 254, 168, 4, 54, 6, 6, 6, 38, 0, 28, 0, 0, 0, 39, 1, 92, 0, 131, 0, 25, 0, 7, 1, 101, 4, 163, 0, 0, 255, 255, 0, 81, 0, 0, 4, 144, 7, 222, 6, 38, 0, 2, 0, 0, 0, 7, 2, 105, 0, 0, 1, 84, 255, 255, 0, 156, 255, 236, 4, 54, 6, 156, 6, 38, 0, 28, 0, 0, 0, 6, 2, 105, 252, 18, 255, 255, 0, 81, 0, 0, 4, 144, 8, 4, 6, 38, 0, 2, 0, 0, 0, 7, 2, 77, 0, 3, 1, 122, 255, 255, 0, 156, 255, 236, 4, 54, 6, 194, 6, 38, 0, 28, 0, 0, 0, 6, 2, 77, 0, 56, 255, 255, 0, 81, 0, 0, 4, 144, 8, 76, 6, 38, 0, 2, 0, 0, 0, 7, 2, 104, 255, 244, 1, 73, 255, 255, 0, 156, 255, 236, 4, 54, 7, 10, 6, 38, 0, 28, 0, 0, 0, 6, 2, 104, 240, 7, 255, 255, 0, 81, 0, 0, 4, 144, 8, 33, 6, 38, 0, 2, 0, 0, 0, 7, 2, 109, 255, 212, 1, 81, 255, 255, 0, 156, 255, 236, 4, 54, 6, 223, 6, 38, 0, 28, 0, 0, 0, 6, 2, 109, 208, 15, 255, 255, 0, 81, 254, 168, 4, 144, 7, 74, 6, 38, 0, 2, 0, 0, 0, 39, 1, 95, 0, 15, 1, 152, 0, 7, 1, 101, 4, 223, 0, 0, 255, 255, 0, 156, 254, 168, 4, 54, 6, 8, 6, 38, 0, 28, 0, 0, 0, 38, 1, 95, 11, 86, 0, 7, 1, 101, 4, 163, 0, 0, 255, 255, 0, 182, 254, 178, 4, 52, 5, 176, 6, 38, 0, 6, 0, 0, 0, 7, 1, 101, 4, 210, 0, 10, 255, 255, 0, 135, 254, 168, 4, 69, 4, 78, 6, 38, 0, 32, 0, 0, 0, 7, 1, 101, 4, 227, 0, 0, 255, 255, 0, 182, 0, 0, 4, 52, 7, 198, 6, 38, 0, 6, 0, 0, 0, 7, 1, 118, 4, 190, 1, 82, 255, 255, 0, 135, 255, 236, 4, 69, 6, 133, 6, 38, 0, 32, 0, 0, 0, 7, 1, 118, 4, 191, 0, 17, 255, 255, 0, 182, 0, 0, 4, 52, 7, 82, 6, 38, 0, 6, 0, 0, 0, 7, 1, 93, 0, 137, 1, 97, 255, 255, 0, 135, 255, 236, 4, 69, 6, 17, 6, 38, 0, 32, 0, 0, 0, 7, 1, 93, 0, 138, 0, 32, 255, 255, 0, 182, 0, 0, 4, 223, 7, 238, 6, 38, 0, 6, 0, 0, 0, 7, 2, 76, 255, 235, 1, 89, 255, 255, 0, 135, 255, 236, 4, 224, 6, 173, 6, 38, 0, 32, 0, 0, 0, 6, 2, 76, 236, 24, 255, 255, 255, 242, 0, 0, 4, 52, 7, 221, 6, 38, 0, 6, 0, 0, 0, 7, 2, 75, 255, 226, 1, 72, 255, 255, 255, 243, 255, 236, 4, 69, 6, 156, 6, 38, 0, 32, 0, 0, 0, 6, 2, 75, 227, 7, 255, 255, 0, 182, 0, 0, 4, 178, 8, 4, 6, 38, 0, 6, 0, 0, 0, 7, 2, 74, 255, 248, 1, 53, 255, 255, 0, 135, 255, 236, 4, 179, 6, 196, 6, 38, 0, 32, 0, 0, 0, 6, 2, 74, 249, 245, 255, 255, 0, 182, 0, 0, 4, 52, 8, 47, 6, 38, 0, 6, 0, 0, 0, 7, 2, 73, 255, 233, 1, 54, 255, 255, 0, 135, 255, 236, 4, 69, 6, 239, 6, 38, 0, 32, 0, 0, 0, 6, 2, 73, 234, 246, 255, 255, 0, 182, 254, 178, 4, 52, 7, 72, 6, 38, 0, 6, 0, 0, 0, 39, 1, 92, 0, 125, 1, 91, 0, 7, 1, 101, 4, 210, 0, 10, 255, 255, 0, 135, 254, 168, 4, 69, 6, 7, 6, 38, 0, 32, 0, 0, 0, 38, 1, 92, 126, 26, 0, 7, 1, 101, 4, 227, 0, 0, 255, 255, 0, 174, 0, 0, 4, 30, 7, 198, 6, 38, 0, 10, 0, 0, 0, 7, 1, 118, 4, 138, 1, 82, 255, 255, 0, 203, 0, 0, 4, 85, 6, 112, 6, 38, 1, 109, 0, 0, 0, 7, 1, 118, 4, 237, 255, 252, 255, 255, 0, 174, 254, 178, 4, 30, 5, 176, 6, 38, 0, 10, 0, 0, 0, 7, 1, 101, 4, 158, 0, 10, 255, 255, 0, 203, 254, 178, 4, 85, 5, 195, 6, 38, 0, 36, 0, 0, 0, 7, 1, 101, 5, 6, 0, 10, 255, 255, 0, 106, 254, 160, 4, 97, 5, 196, 6, 38, 0, 16, 0, 0, 0, 7, 1, 101, 4, 223, 255, 248, 255, 255, 0, 122, 254, 159, 4, 82, 4, 78, 6, 38, 0, 42, 0, 0, 0, 7, 1, 101, 4, 205, 255, 247, 255, 255, 0, 106, 255, 236, 4, 97, 7, 219, 6, 38, 0, 16, 0, 0, 0, 7, 1, 118, 4, 204, 1, 103, 255, 255, 0, 122, 255, 236, 4, 82, 6, 132, 6, 38, 0, 42, 0, 0, 0, 7, 1, 118, 4, 185, 0, 16, 255, 255, 0, 106, 255, 236, 4, 237, 8, 3, 6, 38, 0, 16, 0, 0, 0, 7, 2, 76, 255, 249, 1, 110, 255, 255, 0, 122, 255, 236, 4, 218, 6, 172, 6, 38, 0, 42, 0, 0, 0, 6, 2, 76, 230, 23, 255, 255, 0, 0, 255, 236, 4, 97, 7, 242, 6, 38, 0, 16, 0, 0, 0, 7, 2, 75, 255, 240, 1, 93, 255, 255, 255, 237, 255, 236, 4, 82, 6, 155, 6, 38, 0, 42, 0, 0, 0, 6, 2, 75, 221, 6, 255, 255, 0, 106, 255, 236, 4, 191, 8, 25, 6, 38, 0, 16, 0, 0, 0, 7, 2, 74, 0, 5, 1, 74, 255, 255, 0, 122, 255, 236, 4, 173, 6, 195, 6, 38, 0, 42, 0, 0, 0, 6, 2, 74, 243, 244, 255, 255, 0, 106, 255, 236, 4, 97, 8, 68, 6, 38, 0, 16, 0, 0, 0, 7, 2, 73, 255, 247, 1, 75, 255, 255, 0, 122, 255, 236, 4, 82, 6, 238, 6, 38, 0, 42, 0, 0, 0, 6, 2, 73, 228, 245, 255, 255, 0, 106, 254, 160, 4, 97, 7, 93, 6, 38, 0, 16, 0, 0, 0, 39, 1, 92, 0, 139, 1, 112, 0, 7, 1, 101, 4, 223, 255, 248, 255, 255, 0, 122, 254, 159, 4, 82, 6, 6, 6, 38, 0, 42, 0, 0, 0, 38, 1, 92, 120, 25, 0, 7, 1, 101, 4, 205, 255, 247, 255, 255, 0, 99, 255, 236, 4, 198, 7, 32, 6, 38, 0, 216, 0, 0, 0, 7, 1, 91, 0, 132, 1, 87, 255, 255, 0, 119, 255, 236, 4, 174, 5, 222, 6, 38, 1, 53, 0, 0, 0, 6, 1, 91, 124, 21, 255, 255, 0, 99, 255, 236, 4, 198, 7, 35, 6, 38, 0, 216, 0, 0, 0, 7, 1, 90, 255, 152, 1, 90, 255, 255, 0, 119, 255, 236, 4, 174, 5, 225, 6, 38, 1, 53, 0, 0, 0, 6, 1, 90, 144, 24, 255, 255, 0, 99, 255, 236, 4, 198, 7, 198, 6, 38, 0, 216, 0, 0, 0, 7, 1, 118, 4, 199, 1, 82, 255, 255, 0, 119, 255, 236, 4, 174, 6, 132, 6, 38, 1, 53, 0, 0, 0, 7, 1, 118, 4, 191, 0, 16, 255, 255, 0, 99, 255, 236, 4, 198, 7, 82, 6, 38, 0, 216, 0, 0, 0, 7, 1, 93, 0, 146, 1, 97, 255, 255, 0, 119, 255, 236, 4, 174, 6, 16, 6, 38, 1, 53, 0, 0, 0, 7, 1, 93, 0, 138, 0, 31, 255, 255, 0, 99, 254, 168, 4, 198, 5, 250, 6, 38, 0, 216, 0, 0, 0, 7, 1, 101, 4, 211, 0, 0, 255, 255, 0, 119, 254, 159, 4, 174, 4, 170, 6, 38, 1, 53, 0, 0, 0, 7, 1, 101, 4, 203, 255, 247, 255, 255, 0, 139, 254, 168, 4, 66, 5, 176, 6, 38, 0, 22, 0, 0, 0, 7, 1, 101, 4, 200, 0, 0, 255, 255, 0, 180, 254, 168, 4, 31, 4, 58, 6, 38, 0, 48, 0, 0, 0, 7, 1, 101, 4, 158, 0, 0, 255, 255, 0, 139, 255, 236, 4, 66, 7, 186, 6, 38, 0, 22, 0, 0, 0, 7, 1, 118, 4, 230, 1, 70, 255, 255, 0, 180, 255, 236, 4, 31, 6, 113, 6, 38, 0, 48, 0, 0, 0, 7, 1, 118, 4, 184, 255, 253, 255, 255, 0, 139, 255, 236, 5, 131, 7, 32, 6, 38, 0, 236, 0, 0, 0, 7, 1, 91, 0, 116, 1, 87, 255, 255, 0, 180, 255, 236, 5, 63, 5, 201, 6, 38, 1, 73, 0, 0, 0, 6, 1, 91, 118, 0, 255, 255, 0, 139, 255, 236, 5, 131, 7, 35, 6, 38, 0, 236, 0, 0, 0, 7, 1, 90, 255, 136, 1, 90, 255, 255, 0, 180, 255, 236, 5, 63, 5, 204, 6, 38, 1, 73, 0, 0, 0, 6, 1, 90, 138, 3, 255, 255, 0, 139, 255, 236, 5, 131, 7, 198, 6, 38, 0, 236, 0, 0, 0, 7, 1, 118, 4, 183, 1, 82, 255, 255, 0, 180, 255, 236, 5, 63, 6, 112, 6, 38, 1, 73, 0, 0, 0, 7, 1, 118, 4, 185, 255, 252, 255, 255, 0, 139, 255, 236, 5, 131, 7, 82, 6, 38, 0, 236, 0, 0, 0, 7, 1, 93, 0, 130, 1, 97, 255, 255, 0, 180, 255, 236, 5, 63, 5, 251, 6, 38, 1, 73, 0, 0, 0, 7, 1, 93, 0, 132, 0, 10, 255, 255, 0, 139, 254, 160, 5, 131, 5, 232, 6, 38, 0, 236, 0, 0, 0, 7, 1, 101, 4, 205, 255, 248, 255, 255, 0, 180, 254, 168, 5, 63, 4, 147, 6, 38, 1, 73, 0, 0, 0, 7, 1, 101, 4, 144, 0, 0, 255, 255, 0, 61, 254, 178, 4, 121, 5, 176, 6, 38, 0, 26, 0, 0, 0, 7, 1, 101, 4, 195, 0, 10, 255, 255, 0, 68, 254, 11, 4, 133, 4, 58, 6, 38, 0, 52, 0, 0, 0, 7, 1, 101, 5, 167, 255, 99, 255, 255, 0, 61, 0, 0, 4, 121, 7, 197, 6, 38, 0, 26, 0, 0, 0, 7, 1, 118, 4, 180, 1, 81, 255, 255, 0, 68, 254, 75, 4, 133, 6, 113, 6, 38, 0, 52, 0, 0, 0, 7, 1, 118, 4, 204, 255, 253, 255, 255, 0, 61, 0, 0, 4, 121, 7, 81, 6, 38, 0, 26, 0, 0, 0, 7, 1, 93, 0, 127, 1, 96, 255, 255, 0, 68, 254, 75, 4, 133, 5, 252, 6, 38, 0, 52, 0, 0, 0, 7, 1, 93, 0, 151, 0, 11, 255, 255, 0, 124, 254, 237, 4, 225, 6, 0, 4, 38, 0, 31, 241, 0, 0, 39, 2, 106, 1, 47, 2, 71, 0, 6, 0, 102, 33, 132, 255, 255, 0, 169, 254, 160, 4, 223, 5, 176, 6, 38, 2, 113, 0, 0, 0, 7, 2, 110, 2, 32, 0, 7, 255, 255, 0, 164, 254, 153, 4, 186, 4, 58, 6, 38, 1, 186, 0, 0, 0, 7, 2, 110, 1, 251, 0, 0, 255, 255, 0, 141, 254, 153, 4, 168, 5, 176, 6, 38, 0, 9, 0, 0, 0, 7, 2, 110, 1, 233, 0, 0, 255, 255, 0, 165, 254, 153, 4, 176, 4, 58, 6, 38, 1, 189, 0, 0, 0, 7, 2, 110, 1, 241, 0, 0, 255, 255, 0, 76, 254, 153, 4, 132, 5, 176, 6, 38, 0, 21, 0, 0, 0, 7, 2, 110, 0, 140, 0, 0, 255, 255, 0, 104, 254, 153, 4, 123, 4, 58, 6, 38, 1, 191, 0, 0, 0, 7, 2, 110, 0, 149, 0, 0, 255, 255, 0, 87, 254, 153, 4, 231, 5, 176, 6, 38, 0, 25, 0, 0, 0, 7, 2, 110, 2, 40, 0, 0, 255, 255, 0, 110, 254, 153, 4, 118, 4, 58, 6, 38, 0, 51, 0, 0, 0, 7, 2, 110, 1, 183, 0, 0, 255, 255, 0, 171, 254, 153, 4, 176, 5, 176, 6, 38, 1, 170, 0, 0, 0, 7, 2, 110, 1, 241, 0, 0, 255, 255, 0, 141, 254, 153, 4, 176, 4, 58, 6, 38, 1, 194, 0, 0, 0, 7, 2, 110, 1, 241, 0, 0, 255, 255, 0, 171, 254, 153, 4, 39, 5, 176, 6, 38, 1, 170, 0, 0, 0, 7, 2, 110, 0, 222, 0, 0, 255, 255, 0, 141, 254, 153, 4, 39, 4, 58, 6, 38, 1, 194, 0, 0, 0, 7, 2, 110, 0, 221, 0, 0, 255, 255, 0, 181, 254, 153, 4, 48, 5, 176, 6, 38, 1, 123, 0, 0, 0, 7, 2, 110, 255, 58, 0, 0, 255, 255, 0, 183, 254, 153, 4, 42, 4, 58, 6, 38, 1, 181, 0, 0, 0, 7, 2, 110, 255, 11, 0, 0, 255, 255, 0, 29, 254, 153, 4, 251, 5, 176, 6, 38, 1, 164, 0, 0, 0, 7, 2, 110, 2, 60, 0, 0, 255, 255, 0, 17, 254, 153, 4, 239, 4, 58, 6, 38, 1, 183, 0, 0, 0, 7, 2, 110, 2, 48, 0, 0, 255, 255, 0, 38, 254, 59, 4, 137, 5, 195, 6, 38, 2, 10, 0, 0, 0, 7, 2, 110, 0, 191, 255, 162, 255, 255, 0, 38, 254, 59, 4, 133, 4, 78, 6, 38, 2, 11, 0, 0, 0, 7, 2, 110, 0, 155, 255, 162, 255, 255, 0, 174, 0, 0, 4, 44, 6, 0, 6, 6, 0, 35, 0, 0, 0, 2, 0, 18, 0, 0, 4, 64, 4, 58, 0, 24, 0, 39, 0, 0, 65, 53, 33, 53, 35, 21, 35, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 53, 17, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 2, 143, 254, 207, 185, 147, 147, 2, 4, 97, 152, 52, 52, 54, 55, 52, 52, 151, 97, 254, 181, 1, 75, 58, 83, 27, 27, 26, 25, 27, 27, 84, 58, 254, 181, 3, 35, 151, 128, 128, 151, 252, 221, 52, 46, 45, 125, 72, 73, 122, 44, 44, 49, 131, 254, 230, 33, 26, 27, 67, 35, 36, 66, 25, 25, 30, 0, 2, 255, 212, 0, 0, 4, 81, 5, 176, 0, 24, 0, 39, 0, 0, 65, 53, 35, 53, 35, 21, 35, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 53, 17, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 2, 81, 240, 185, 212, 212, 1, 195, 116, 181, 62, 62, 65, 65, 62, 62, 181, 116, 254, 246, 1, 10, 78, 113, 37, 37, 35, 35, 37, 37, 113, 78, 254, 246, 4, 80, 151, 201, 201, 151, 251, 176, 63, 57, 57, 160, 96, 97, 156, 56, 55, 60, 247, 254, 114, 43, 36, 37, 99, 56, 57, 103, 39, 39, 46, 0, 0, 2, 255, 212, 0, 0, 4, 81, 5, 176, 0, 24, 0, 39, 0, 0, 65, 53, 35, 53, 35, 21, 35, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 53, 17, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 2, 81, 240, 185, 212, 212, 1, 195, 116, 181, 62, 62, 65, 65, 62, 62, 181, 116, 254, 246, 1, 10, 78, 113, 37, 37, 35, 35, 37, 37, 113, 78, 254, 246, 4, 80, 151, 201, 201, 151, 251, 176, 63, 57, 57, 160, 96, 97, 156, 56, 55, 60, 247, 254, 114, 43, 36, 37, 99, 56, 57, 103, 39, 39, 46, 0, 0, 1, 255, 253, 0, 0, 4, 48, 5, 176, 0, 13, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 35, 21, 51, 17, 51, 17, 2, 122, 254, 245, 2, 193, 252, 133, 184, 184, 186, 2, 172, 151, 1, 213, 152, 253, 147, 151, 253, 84, 2, 172, 0, 1, 255, 251, 0, 0, 4, 42, 4, 58, 0, 13, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 35, 21, 51, 17, 51, 17, 2, 120, 254, 249, 2, 185, 252, 141, 188, 188, 186, 1, 223, 151, 1, 43, 153, 254, 60, 151, 254, 33, 1, 223, 0, 1, 255, 255, 0, 0, 4, 192, 5, 176, 0, 20, 0, 0, 65, 1, 51, 1, 1, 35, 1, 35, 17, 33, 53, 33, 53, 35, 21, 35, 21, 51, 17, 51, 17, 2, 23, 1, 198, 227, 253, 232, 1, 239, 212, 254, 69, 156, 1, 16, 254, 240, 185, 180, 180, 185, 2, 147, 253, 109, 2, 239, 2, 193, 253, 122, 1, 63, 151, 176, 176, 151, 251, 151, 2, 147, 0, 1, 255, 233, 0, 0, 4, 116, 6, 0, 0, 20, 0, 0, 115, 51, 17, 55, 1, 51, 1, 1, 35, 1, 7, 17, 51, 53, 35, 53, 35, 21, 35, 21, 51, 186, 186, 136, 1, 141, 235, 254, 7, 1, 182, 225, 254, 157, 121, 242, 242, 186, 209, 209, 1, 118, 131, 254, 7, 2, 119, 1, 195, 254, 156, 130, 2, 109, 151, 168, 168, 151, 255, 255, 0, 162, 254, 138, 4, 227, 7, 62, 6, 38, 1, 166, 0, 0, 0, 39, 1, 95, 255, 249, 1, 140, 0, 7, 0, 95, 2, 96, 255, 218, 255, 255, 0, 165, 254, 138, 4, 224, 5, 243, 6, 38, 1, 185, 0, 0, 0, 38, 1, 95, 244, 65, 0, 7, 0, 95, 2, 93, 255, 218, 255, 255, 0, 141, 254, 138, 4, 216, 5, 176, 6, 38, 0, 9, 0, 0, 0, 7, 0, 95, 2, 85, 255, 218, 255, 255, 0, 165, 254, 138, 4, 224, 4, 58, 6, 38, 1, 189, 0, 0, 0, 7, 0, 95, 2, 93, 255, 218, 255, 255, 0, 148, 254, 138, 5, 2, 5, 176, 6, 38, 0, 14, 0, 0, 0, 7, 0, 95, 2, 127, 255, 218, 255, 255, 0, 137, 254, 138, 4, 228, 4, 58, 6, 38, 1, 188, 0, 0, 0, 7, 0, 95, 2, 97, 255, 218, 255, 255, 0, 47, 254, 138, 4, 228, 5, 176, 6, 38, 1, 167, 0, 0, 0, 7, 0, 95, 2, 97, 255, 218, 255, 255, 0, 55, 254, 138, 4, 223, 4, 58, 6, 38, 1, 187, 0, 0, 0, 7, 0, 95, 2, 92, 255, 218, 0, 1, 0, 61, 0, 0, 4, 121, 5, 176, 0, 17, 0, 0, 65, 53, 35, 1, 35, 1, 35, 1, 35, 1, 35, 21, 51, 23, 19, 51, 19, 55, 3, 155, 163, 1, 129, 210, 254, 181, 2, 254, 182, 211, 1, 128, 159, 226, 2, 3, 172, 3, 2, 2, 18, 151, 3, 7, 253, 37, 2, 219, 252, 249, 151, 3, 253, 241, 2, 16, 2, 0, 0, 1, 0, 71, 254, 96, 4, 150, 4, 58, 0, 17, 0, 0, 69, 53, 35, 1, 35, 1, 7, 35, 39, 1, 35, 1, 35, 21, 51, 17, 51, 17, 3, 177, 188, 1, 161, 190, 254, 179, 26, 1, 23, 254, 172, 190, 1, 164, 183, 222, 186, 11, 151, 3, 174, 252, 240, 98, 98, 3, 16, 252, 82, 151, 254, 107, 1, 149, 0, 1, 0, 87, 0, 0, 4, 143, 5, 176, 0, 17, 0, 0, 65, 53, 35, 1, 35, 1, 1, 35, 1, 35, 21, 51, 1, 51, 1, 1, 51, 1, 3, 174, 157, 1, 116, 218, 254, 198, 254, 202, 217, 1, 116, 165, 178, 254, 116, 219, 1, 67, 1, 66, 216, 254, 117, 2, 158, 151, 2, 123, 253, 197, 2, 59, 253, 133, 151, 253, 98, 2, 70, 253, 186, 2, 158, 0, 0, 1, 0, 110, 0, 0, 4, 114, 4, 58, 0, 17, 0, 0, 65, 53, 35, 1, 35, 1, 1, 35, 1, 35, 21, 51, 1, 51, 1, 1, 51, 1, 3, 162, 142, 1, 83, 217, 254, 223, 254, 226, 214, 1, 83, 167, 181, 254, 148, 216, 1, 43, 1, 43, 214, 254, 148, 1, 225, 151, 1, 194, 254, 111, 1, 145, 254, 62, 151, 254, 31, 1, 156, 254, 100, 1, 225, 0, 255, 255, 0, 139, 255, 236, 4, 96, 4, 77, 6, 6, 1, 137, 0, 0, 0, 1, 0, 79, 2, 139, 4, 140, 3, 34, 0, 3, 0, 0, 65, 53, 33, 21, 4, 140, 251, 195, 2, 139, 151, 151, 0, 1, 0, 0, 3, 231, 0, 177, 0, 22, 0, 135, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 28, 0, 121, 0, 218, 1, 33, 1, 58, 1, 80, 1, 186, 1, 210, 1, 234, 2, 26, 2, 56, 2, 72, 2, 104, 2, 128, 2, 245, 3, 44, 3, 165, 3, 226, 4, 81, 4, 100, 4, 151, 4, 173, 4, 209, 4, 240, 5, 8, 5, 32, 5, 140, 5, 244, 6, 66, 6, 134, 6, 210, 7, 5, 7, 124, 7, 177, 7, 223, 8, 33, 8, 63, 8, 84, 8, 173, 8, 224, 9, 46, 9, 132, 9, 218, 10, 1, 10, 110, 10, 168, 10, 214, 10, 236, 11, 17, 11, 48, 11, 100, 11, 123, 11, 215, 11, 233, 12, 44, 12, 155, 12, 186, 13, 5, 13, 103, 13, 121, 14, 8, 14, 106, 14, 124, 14, 191, 15, 46, 15, 155, 15, 233, 16, 66, 16, 117, 17, 5, 17, 44, 17, 233, 18, 54, 18, 227, 19, 81, 19, 136, 19, 222, 19, 252, 20, 116, 20, 204, 21, 65, 21, 151, 21, 230, 22, 19, 22, 91, 22, 103, 22, 191, 23, 26, 23, 118, 23, 148, 23, 178, 24, 15, 24, 108, 24, 129, 24, 151, 24, 163, 24, 176, 24, 193, 24, 216, 25, 3, 25, 16, 25, 29, 25, 42, 25, 55, 25, 71, 25, 97, 25, 123, 25, 149, 25, 174, 25, 187, 25, 200, 25, 244, 25, 252, 26, 4, 26, 70, 26, 136, 26, 155, 26, 173, 26, 239, 27, 66, 27, 86, 27, 106, 27, 130, 27, 143, 27, 174, 27, 207, 27, 253, 28, 17, 28, 53, 28, 132, 28, 154, 28, 177, 28, 206, 28, 236, 28, 253, 29, 12, 29, 27, 29, 43, 29, 202, 30, 178, 30, 192, 30, 212, 30, 236, 31, 14, 31, 158, 32, 12, 32, 51, 32, 125, 32, 161, 32, 218, 33, 115, 34, 38, 34, 245, 35, 19, 35, 41, 35, 119, 35, 131, 35, 143, 35, 155, 35, 167, 35, 179, 35, 191, 36, 2, 36, 14, 36, 26, 36, 38, 36, 50, 36, 62, 36, 74, 36, 85, 36, 97, 36, 109, 36, 172, 36, 184, 36, 196, 36, 208, 36, 220, 36, 232, 36, 244, 37, 0, 37, 12, 37, 62, 37, 126, 37, 189, 37, 201, 37, 213, 37, 225, 38, 10, 38, 22, 38, 34, 38, 46, 38, 58, 38, 70, 38, 82, 38, 94, 38, 106, 38, 170, 38, 182, 38, 194, 38, 206, 38, 218, 38, 230, 38, 242, 38, 254, 39, 26, 39, 38, 39, 50, 39, 62, 39, 74, 39, 86, 39, 98, 39, 110, 39, 122, 39, 134, 39, 238, 39, 250, 40, 6, 40, 121, 40, 133, 40, 145, 40, 157, 40, 169, 40, 181, 40, 193, 40, 205, 40, 216, 40, 228, 41, 0, 41, 12, 41, 24, 41, 36, 41, 48, 41, 60, 41, 72, 41, 143, 41, 155, 41, 167, 42, 5, 42, 17, 42, 29, 42, 41, 42, 53, 42, 65, 42, 77, 42, 89, 42, 101, 42, 113, 42, 125, 42, 137, 42, 149, 42, 161, 42, 173, 42, 184, 42, 196, 42, 207, 42, 218, 42, 229, 43, 120, 43, 131, 43, 142, 43, 154, 43, 166, 43, 178, 43, 189, 43, 200, 43, 212, 43, 224, 44, 63, 44, 74, 44, 85, 44, 96, 44, 107, 44, 118, 44, 129, 44, 140, 44, 151, 44, 227, 45, 85, 45, 96, 45, 107, 45, 118, 45, 180, 45, 192, 45, 204, 45, 215, 45, 227, 45, 238, 45, 249, 46, 4, 46, 81, 46, 93, 46, 105, 46, 117, 46, 129, 46, 141, 46, 153, 46, 165, 46, 200, 46, 211, 46, 222, 46, 234, 46, 245, 47, 0, 47, 11, 47, 22, 47, 33, 47, 44, 47, 140, 47, 152, 47, 163, 48, 9, 48, 20, 48, 32, 48, 43, 48, 54, 48, 66, 48, 78, 48, 89, 48, 100, 48, 112, 48, 177, 48, 189, 48, 200, 48, 211, 48, 222, 48, 233, 48, 244, 49, 50, 49, 62, 49, 73, 49, 158, 49, 169, 49, 181, 49, 192, 49, 203, 49, 214, 49, 225, 49, 237, 49, 249, 50, 4, 50, 15, 50, 27, 50, 38, 50, 49, 50, 64, 50, 79, 50, 99, 50, 159, 50, 172, 50, 215, 50, 238, 51, 21, 51, 95, 51, 118, 51, 137, 51, 159, 51, 205, 51, 252, 52, 17, 52, 17, 52, 30, 52, 80, 52, 93, 52, 114, 52, 162, 53, 0, 53, 37, 53, 87, 53, 143, 53, 158, 53, 173, 53, 182, 53, 229, 53, 252, 54, 11, 54, 58, 54, 66, 54, 82, 54, 109, 54, 196, 54, 216, 54, 242, 55, 5, 55, 33, 55, 123, 55, 181, 56, 13, 56, 127, 56, 244, 57, 17, 57, 142, 58, 6, 58, 98, 58, 150, 58, 236, 59, 25, 59, 100, 59, 235, 60, 27, 60, 110, 60, 207, 61, 34, 61, 82, 61, 141, 61, 243, 62, 52, 62, 176, 63, 34, 63, 111, 63, 245, 64, 51, 64, 135, 64, 228, 65, 32, 65, 81, 65, 106, 65, 162, 65, 224, 66, 10, 66, 130, 66, 155, 66, 207, 67, 1, 67, 26, 67, 69, 67, 93, 67, 122, 67, 176, 67, 236, 68, 33, 68, 117, 68, 207, 69, 10, 69, 129, 69, 218, 69, 234, 70, 29, 70, 72, 70, 192, 70, 216, 70, 245, 71, 37, 71, 63, 71, 87, 71, 106, 71, 125, 71, 220, 71, 245, 72, 36, 72, 60, 72, 90, 72, 144, 72, 204, 73, 1, 73, 82, 73, 169, 73, 225, 74, 56, 74, 138, 74, 223, 75, 29, 75, 91, 75, 116, 75, 203, 76, 33, 76, 96, 76, 221, 77, 74, 77, 111, 77, 148, 77, 194, 77, 240, 78, 56, 78, 132, 78, 213, 79, 40, 79, 188, 80, 89, 80, 212, 81, 40, 81, 84, 81, 131, 81, 254, 82, 119, 82, 251, 83, 88, 84, 47, 84, 242, 85, 94, 85, 192, 86, 2, 86, 72, 86, 116, 86, 136, 86, 192, 86, 209, 86, 225, 87, 193, 88, 21, 88, 85, 88, 180, 88, 199, 88, 218, 89, 16, 89, 70, 89, 107, 89, 143, 89, 175, 89, 207, 89, 234, 90, 5, 90, 81, 90, 137, 91, 36, 91, 196, 91, 226, 92, 0, 92, 59, 92, 113, 92, 155, 93, 16, 93, 106, 93, 169, 93, 227, 94, 20, 94, 69, 94, 181, 94, 252, 95, 67, 95, 83, 95, 99, 95, 152, 95, 232, 96, 150, 97, 17, 97, 137, 97, 238, 98, 88, 98, 211, 99, 72, 99, 162, 99, 247, 100, 85, 100, 167, 100, 248, 101, 59, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 170, 101, 182, 101, 208, 101, 221, 101, 252, 102, 48, 102, 127, 103, 29, 103, 125, 103, 227, 104, 40, 104, 204, 105, 205, 106, 165, 107, 73, 107, 183, 107, 202, 107, 230, 108, 0, 108, 209, 109, 16, 109, 54, 109, 54, 110, 8, 110, 104, 110, 177, 110, 236, 111, 8, 111, 36, 111, 86, 111, 107, 111, 138, 111, 227, 112, 52, 112, 106, 112, 131, 112, 153, 112, 239, 113, 7, 113, 31, 113, 79, 113, 109, 113, 125, 113, 152, 113, 176, 114, 1, 114, 92, 114, 153, 115, 13, 115, 32, 115, 84, 115, 108, 115, 145, 115, 176, 115, 202, 115, 225, 116, 52, 116, 102, 116, 115, 116, 180, 116, 220, 117, 42, 117, 56, 117, 93, 117, 148, 117, 177, 118, 15, 118, 23, 118, 31, 118, 43, 118, 54, 118, 66, 118, 77, 118, 89, 118, 101, 118, 113, 118, 125, 118, 137, 118, 148, 118, 159, 118, 171, 118, 183, 118, 195, 118, 206, 118, 217, 118, 228, 118, 239, 118, 251, 119, 6, 119, 18, 119, 30, 119, 41, 119, 53, 119, 64, 119, 75, 119, 86, 119, 97, 119, 109, 119, 121, 119, 132, 119, 144, 119, 155, 119, 167, 119, 179, 119, 191, 119, 202, 119, 213, 119, 225, 119, 237, 119, 248, 120, 3, 120, 14, 120, 25, 120, 95, 120, 106, 120, 117, 120, 128, 120, 139, 120, 150, 120, 161, 120, 172, 120, 236, 120, 247, 121, 2, 121, 13, 121, 25, 121, 37, 121, 49, 121, 60, 121, 71, 121, 135, 121, 146, 121, 158, 121, 170, 121, 182, 121, 194, 121, 206, 121, 218, 121, 230, 121, 242, 121, 253, 122, 8, 122, 19, 122, 31, 122, 42, 122, 54, 122, 65, 122, 76, 122, 87, 122, 98, 122, 109, 122, 120, 122, 132, 122, 143, 122, 154, 122, 166, 122, 178, 123, 11, 123, 23, 123, 34, 123, 45, 123, 57, 123, 68, 123, 79, 123, 91, 123, 103, 123, 115, 123, 127, 123, 139, 123, 151, 123, 163, 123, 174, 123, 182, 123, 190, 123, 198, 123, 206, 123, 214, 123, 222, 123, 230, 123, 238, 123, 246, 123, 254, 124, 6, 124, 14, 124, 22, 124, 30, 124, 42, 124, 54, 124, 65, 124, 76, 124, 87, 124, 98, 124, 109, 124, 117, 124, 125, 124, 133, 124, 141, 124, 149, 124, 160, 124, 171, 124, 182, 124, 193, 124, 204, 124, 216, 124, 228, 125, 92, 125, 100, 125, 112, 125, 120, 125, 128, 125, 140, 125, 152, 125, 160, 125, 168, 125, 176, 125, 184, 125, 196, 125, 204, 125, 212, 125, 220, 125, 228, 125, 236, 125, 244, 125, 252, 126, 4, 126, 12, 126, 20, 126, 28, 126, 39, 126, 47, 126, 55, 126, 133, 126, 141, 126, 149, 126, 160, 126, 171, 126, 179, 126, 187, 126, 198, 126, 206, 126, 217, 126, 228, 126, 241, 126, 252, 127, 4, 127, 16, 127, 28, 127, 39, 127, 50, 127, 62, 127, 74, 127, 86, 127, 97, 127, 109, 127, 117, 127, 125, 127, 137, 127, 149, 127, 160, 127, 171, 127, 182, 127, 193, 127, 201, 127, 209, 127, 217, 127, 229, 127, 240, 127, 248, 128, 4, 128, 15, 128, 27, 128, 38, 128, 46, 128, 54, 128, 66, 128, 77, 128, 89, 128, 97, 128, 108, 128, 120, 128, 131, 128, 143, 128, 154, 128, 166, 128, 177, 128, 189, 128, 200, 128, 212, 128, 223, 128, 231, 128, 239, 128, 251, 129, 6, 129, 18, 129, 29, 129, 41, 129, 52, 129, 64, 129, 75, 129, 87, 129, 99, 129, 111, 129, 122, 129, 134, 129, 145, 129, 157, 129, 169, 129, 177, 129, 189, 129, 201, 129, 213, 129, 225, 129, 237, 129, 249, 130, 5, 130, 16, 130, 28, 130, 39, 130, 51, 130, 62, 130, 74, 130, 85, 130, 101, 130, 117, 130, 129, 130, 140, 130, 152, 130, 163, 130, 175, 130, 186, 130, 198, 130, 209, 130, 225, 130, 240, 130, 252, 131, 8, 131, 20, 131, 32, 131, 44, 131, 56, 131, 68, 131, 79, 131, 91, 131, 102, 131, 114, 131, 125, 131, 137, 131, 148, 131, 164, 131, 179, 131, 191, 131, 203, 131, 215, 131, 227, 131, 239, 131, 251, 132, 7, 132, 19, 132, 31, 132, 42, 132, 54, 132, 65, 132, 77, 132, 88, 132, 100, 132, 111, 132, 127, 132, 142, 132, 154, 132, 165, 132, 177, 132, 188, 132, 200, 132, 212, 132, 224, 132, 236, 132, 248, 133, 4, 133, 16, 133, 28, 133, 40, 133, 52, 133, 64, 133, 75, 133, 87, 133, 98, 133, 110, 133, 122, 133, 134, 133, 146, 133, 158, 133, 170, 133, 182, 133, 194, 133, 206, 133, 218, 133, 230, 133, 242, 134, 1, 134, 13, 134, 25, 134, 37, 134, 49, 134, 61, 134, 73, 134, 85, 134, 97, 134, 109, 134, 121, 134, 133, 134, 145, 134, 157, 134, 169, 134, 181, 134, 193, 134, 205, 134, 217, 134, 225, 135, 30, 135, 91, 135, 152, 135, 178, 135, 204, 135, 242, 136, 22, 136, 38, 136, 53, 136, 65, 136, 77, 136, 89, 136, 101, 136, 113, 136, 125, 136, 161, 136, 195, 136, 234, 137, 17, 137, 25, 137, 38, 0, 1, 0, 0, 0, 3, 0, 0, 176, 143, 92, 244, 95, 15, 60, 245, 0, 11, 8, 0, 0, 0, 0, 0, 196, 240, 17, 46, 0, 0, 0, 0, 218, 216, 63, 171, 252, 5, 253, 213, 6, 71, 8, 98, 0, 0, 0, 9, 0, 2, 0, 0, 0, 0, 0, 0, 4, 205, 0, 0, 0, 0, 0, 81, 0, 172, 0, 107, 0, 155, 0, 182, 0, 191, 0, 100, 0, 141, 0, 174, 0, 98, 0, 172, 0, 198, 0, 148, 0, 143, 0, 106, 0, 191, 0, 94, 0, 181, 0, 118, 0, 76, 0, 139, 0, 71, 0, 73, 0, 87, 0, 61, 0, 114, 0, 156, 0, 175, 0, 143, 0, 139, 0, 135, 0, 152, 0, 140, 0, 174, 0, 203, 0, 211, 0, 176, 0, 203, 0, 93, 0, 174, 0, 122, 0, 173, 0, 140, 1, 73, 0, 175, 0, 142, 0, 180, 0, 98, 0, 48, 0, 110, 0, 68, 0, 160, 0, 145, 0, 208, 0, 85, 0, 94, 0, 75, 0, 187, 0, 141, 0, 112, 0, 177, 0, 149, 1, 130, 1, 60, 1, 67, 1, 28, 1, 16, 0, 36, 0, 48, 0, 38, 0, 32, 0, 43, 0, 79, 0, 46, 0, 73, 0, 168, 0, 173, 0, 186, 0, 169, 0, 177, 0, 162, 0, 147, 0, 113, 0, 33, 0, 160, 0, 17, 0, 105, 0, 127, 0, 103, 1, 230, 1, 242, 0, 191, 0, 204, 1, 98, 1, 240, 2, 34, 1, 230, 1, 9, 1, 248, 1, 154, 0, 155, 0, 218, 0, 74, 0, 79, 1, 238, 1, 98, 1, 236, 1, 205, 1, 188, 1, 73, 1, 45, 1, 47, 1, 238, 1, 98, 1, 101, 1, 64, 1, 170, 1, 149, 1, 67, 1, 67, 1, 140, 1, 140, 0, 119, 0, 169, 0, 156, 0, 181, 0, 115, 0, 173, 0, 169, 0, 141, 0, 170, 0, 178, 0, 187, 0, 194, 0, 189, 0, 252, 0, 231, 1, 43, 0, 44, 0, 54, 2, 28, 1, 255, 0, 119, 0, 121, 0, 90, 0, 87, 0, 103, 1, 105, 0, 160, 0, 61, 0, 107, 0, 64, 0, 87, 0, 211, 0, 231, 0, 48, 0, 81, 0, 81, 0, 81, 0, 81, 0, 81, 0, 81, 0, 81, 0, 81, 0, 81, 0, 81, 0, 32, 0, 107, 0, 107, 0, 107, 0, 107, 0, 155, 255, 197, 0, 182, 0, 182, 0, 182, 0, 182, 0, 182, 0, 182, 0, 182, 0, 182, 0, 175, 0, 182, 255, 197, 0, 100, 0, 100, 0, 100, 0, 24, 0, 141, 0, 174, 0, 174, 0, 174, 0, 174, 0, 174, 0, 174, 0, 174, 0, 174, 0, 174, 0, 98, 0, 172, 0, 198, 0, 198, 0, 198, 0, 198, 0, 58, 0, 143, 0, 143, 0, 143, 0, 143, 0, 106, 0, 106, 0, 106, 0, 106, 0, 106, 0, 99, 0, 106, 0, 106, 0, 71, 0, 71, 0, 106, 0, 181, 0, 181, 0, 181, 0, 118, 0, 118, 0, 118, 0, 118, 0, 76, 0, 76, 0, 139, 0, 139, 0, 139, 0, 139, 0, 139, 0, 139, 0, 139, 0, 139, 0, 139, 0, 139, 0, 139, 0, 73, 0, 73, 0, 73, 0, 73, 0, 61, 0, 61, 0, 61, 0, 61, 0, 114, 0, 114, 0, 114, 0, 156, 0, 156, 0, 156, 0, 156, 0, 156, 0, 156, 0, 156, 0, 156, 0, 156, 0, 156, 0, 43, 0, 143, 0, 143, 0, 143, 0, 143, 0, 100, 0, 124, 0, 135, 0, 135, 0, 135, 0, 135, 0, 135, 0, 135, 0, 135, 0, 135, 0, 184, 0, 135, 0, 140, 0, 140, 0, 140, 0, 11, 255, 231, 0, 203, 0, 203, 0, 203, 0, 203, 0, 203, 0, 203, 0, 203, 0, 203, 0, 176, 0, 176, 0, 203, 0, 153, 0, 203, 0, 133, 0, 203, 0, 174, 0, 174, 0, 174, 0, 174, 0, 122, 0, 122, 0, 122, 0, 122, 0, 122, 0, 119, 0, 122, 0, 122, 0, 122, 0, 122, 0, 122, 1, 73, 1, 20, 1, 16, 0, 175, 0, 175, 0, 175, 0, 175, 0, 142, 0, 127, 0, 180, 0, 180, 0, 180, 0, 180, 0, 180, 0, 180, 0, 180, 0, 180, 0, 180, 0, 180, 0, 180, 0, 48, 0, 48, 0, 48, 0, 48, 0, 68, 0, 68, 0, 68, 0, 68, 0, 160, 0, 160, 0, 160, 1, 159, 1, 154, 0, 193, 0, 138, 1, 1, 1, 59, 1, 242, 1, 31, 1, 154, 0, 246, 1, 48, 253, 39, 1, 205, 1, 142, 1, 46, 0, 0, 0, 212, 0, 188, 0, 241, 0, 203, 0, 128, 0, 80, 1, 200, 0, 176, 1, 173, 252, 202, 253, 104, 252, 136, 253, 89, 252, 5, 2, 41, 1, 19, 2, 48, 0, 181, 0, 46, 0, 106, 0, 54, 0, 145, 0, 162, 0, 112, 0, 69, 0, 101, 0, 97, 0, 129, 0, 174, 0, 71, 0, 120, 0, 139, 0, 117, 0, 164, 0, 185, 0, 184, 0, 57, 0, 175, 0, 89, 0, 165, 0, 120, 0, 109, 0, 173, 0, 158, 0, 110, 0, 97, 0, 79, 0, 152, 0, 54, 0, 46, 0, 42, 0, 129, 0, 30, 0, 131, 0, 67, 0, 162, 0, 162, 0, 70, 0, 29, 0, 89, 0, 162, 0, 47, 0, 43, 0, 166, 0, 171, 0, 125, 0, 125, 0, 50, 0, 144, 0, 168, 0, 114, 0, 119, 0, 65, 0, 129, 0, 164, 0, 183, 0, 54, 0, 17, 0, 135, 0, 165, 0, 164, 0, 55, 0, 137, 0, 165, 0, 165, 0, 104, 0, 122, 0, 170, 0, 141, 0, 129, 0, 118, 0, 57, 0, 144, 0, 165, 0, 129, 0, 113, 0, 79, 255, 233, 0, 143, 0, 38, 0, 130, 0, 28, 0, 165, 0, 107, 0, 95, 0, 28, 0, 125, 0, 155, 0, 39, 0, 87, 0, 113, 0, 112, 0, 85, 0, 105, 0, 80, 0, 81, 0, 202, 0, 222, 0, 99, 0, 93, 0, 26, 0, 81, 0, 69, 0, 55, 0, 106, 0, 122, 0, 77, 0, 103, 0, 113, 0, 95, 0, 151, 0, 191, 0, 118, 0, 209, 0, 252, 1, 195, 2, 60, 254, 171, 254, 180, 0, 191, 0, 173, 0, 182, 0, 182, 0, 185, 0, 184, 0, 174, 0, 163, 0, 45, 0, 56, 0, 114, 0, 110, 0, 109, 0, 116, 0, 104, 0, 92, 0, 57, 0, 52, 0, 171, 0, 146, 0, 227, 0, 38, 0, 38, 0, 200, 0, 180, 0, 182, 0, 179, 0, 90, 0, 148, 0, 137, 0, 66, 0, 116, 0, 97, 0, 77, 0, 101, 0, 55, 0, 80, 0, 179, 0, 208, 0, 20, 0, 47, 0, 111, 0, 117, 0, 142, 0, 160, 0, 76, 0, 73, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 1, 207, 1, 92, 1, 15, 1, 75, 0, 127, 0, 73, 0, 221, 0, 121, 0, 153, 0, 80, 0, 51, 0, 36, 0, 65, 0, 126, 0, 167, 0, 51, 0, 57, 0, 53, 0, 248, 0, 142, 0, 0, 0, 92, 0, 15, 1, 17, 0, 252, 0, 16, 1, 11, 1, 62, 1, 249, 0, 54, 0, 208, 0, 110, 0, 183, 0, 200, 0, 231, 0, 124, 0, 155, 0, 217, 0, 150, 0, 180, 0, 209, 0, 155, 0, 194, 0, 130, 0, 94, 0, 144, 0, 138, 0, 93, 0, 181, 0, 86, 0, 47, 0, 96, 0, 77, 0, 185, 1, 82, 1, 66, 1, 53, 1, 209, 1, 245, 1, 116, 2, 6, 1, 96, 0, 204, 0, 169, 0, 210, 0, 0, 0, 218, 0, 107, 0, 143, 0, 100, 0, 140, 255, 186, 0, 118, 0, 175, 0, 76, 0, 142, 0, 76, 0, 93, 0, 142, 255, 231, 255, 231, 0, 93, 0, 54, 0, 54, 0, 54, 0, 54, 0, 54, 0, 54, 0, 54, 0, 110, 0, 200, 0, 200, 0, 200, 0, 200, 0, 217, 0, 217, 0, 217, 0, 217, 0, 194, 0, 130, 0, 130, 0, 130, 0, 130, 0, 130, 0, 181, 0, 181, 0, 181, 0, 181, 0, 77, 0, 54, 0, 54, 0, 54, 0, 110, 0, 110, 0, 110, 0, 183, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 124, 0, 124, 0, 124, 0, 155, 0, 217, 0, 217, 0, 217, 0, 217, 0, 217, 0, 150, 0, 180, 0, 182, 0, 209, 0, 209, 0, 209, 0, 194, 0, 194, 0, 194, 0, 130, 0, 130, 0, 130, 0, 144, 0, 144, 0, 144, 0, 138, 0, 138, 0, 138, 0, 138, 0, 93, 0, 181, 0, 181, 0, 181, 0, 181, 0, 181, 0, 181, 0, 47, 0, 77, 0, 77, 0, 185, 0, 185, 0, 185, 0, 81, 255, 221, 255, 203, 255, 186, 255, 255, 255, 128, 255, 251, 0, 184, 0, 81, 0, 172, 0, 182, 0, 114, 0, 141, 0, 174, 0, 172, 0, 148, 0, 143, 0, 106, 0, 191, 0, 76, 0, 61, 0, 87, 0, 174, 0, 61, 0, 129, 0, 139, 0, 164, 0, 184, 0, 158, 0, 186, 0, 122, 0, 188, 0, 98, 0, 110, 0, 184, 0, 158, 0, 122, 0, 158, 0, 79, 0, 182, 0, 181, 0, 118, 0, 174, 0, 174, 0, 98, 0, 169, 0, 172, 0, 43, 0, 81, 0, 172, 0, 181, 0, 182, 0, 162, 0, 148, 0, 141, 0, 106, 0, 162, 0, 191, 0, 107, 0, 76, 0, 69, 0, 87, 0, 156, 0, 135, 0, 165, 0, 122, 0, 173, 0, 143, 0, 68, 0, 110, 0, 135, 0, 183, 0, 175, 0, 203, 0, 203, 0, 211, 0, 164, 0, 68, 0, 104, 0, 176, 1, 205, 0, 148, 0, 93, 0, 81, 0, 156, 255, 137, 0, 182, 0, 162, 0, 135, 0, 165, 0, 101, 0, 97, 0, 26, 0, 64, 0, 89, 0, 135, 0, 107, 0, 143, 0, 61, 0, 71, 0, 174, 0, 29, 0, 17, 0, 174, 0, 81, 0, 156, 0, 81, 0, 156, 0, 32, 0, 43, 0, 182, 0, 135, 0, 90, 0, 177, 0, 177, 0, 29, 0, 17, 0, 89, 0, 135, 0, 162, 0, 165, 0, 162, 0, 165, 0, 106, 0, 122, 0, 99, 0, 93, 0, 99, 0, 93, 0, 114, 0, 129, 0, 43, 0, 68, 0, 43, 0, 68, 0, 43, 0, 68, 0, 171, 0, 141, 0, 144, 0, 144, 0, 87, 0, 110, 0, 139, 0, 47, 0, 55, 0, 81, 0, 156, 0, 81, 0, 156, 0, 81, 0, 156, 255, 252, 255, 248, 0, 81, 0, 156, 0, 81, 0, 156, 0, 81, 0, 156, 0, 81, 0, 156, 0, 81, 0, 156, 0, 81, 0, 156, 0, 81, 0, 156, 0, 81, 0, 156, 0, 182, 0, 135, 0, 182, 0, 135, 0, 182, 0, 135, 0, 182, 0, 135, 255, 242, 255, 243, 0, 182, 0, 135, 0, 182, 0, 135, 0, 182, 0, 135, 0, 174, 0, 203, 0, 174, 0, 203, 0, 106, 0, 122, 0, 106, 0, 122, 0, 106, 0, 122, 0, 0, 255, 237, 0, 106, 0, 122, 0, 106, 0, 122, 0, 106, 0, 122, 0, 99, 0, 119, 0, 99, 0, 119, 0, 99, 0, 119, 0, 99, 0, 119, 0, 99, 0, 119, 0, 139, 0, 180, 0, 139, 0, 180, 0, 139, 0, 180, 0, 139, 0, 180, 0, 139, 0, 180, 0, 139, 0, 180, 0, 139, 0, 180, 0, 61, 0, 68, 0, 61, 0, 68, 0, 61, 0, 68, 0, 124, 0, 169, 0, 164, 0, 141, 0, 165, 0, 76, 0, 104, 0, 87, 0, 110, 0, 171, 0, 141, 0, 171, 0, 141, 0, 181, 0, 183, 0, 29, 0, 17, 0, 38, 0, 38, 0, 174, 0, 18, 255, 212, 255, 212, 255, 253, 255, 251, 255, 255, 255, 233, 0, 162, 0, 165, 0, 141, 0, 165, 0, 148, 0, 137, 0, 47, 0, 55, 0, 61, 0, 71, 0, 87, 0, 110, 0, 139, 0, 79, 0, 1, 0, 0, 8, 98, 253, 213, 0, 0, 4, 205, 252, 5, 254, 134, 6, 71, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 205, 1, 144, 0, 5, 0, 0, 5, 154, 5, 51, 0, 0, 1, 31, 5, 154, 5, 51, 0, 0, 3, 209, 0, 102, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 224, 0, 2, 255, 16, 0, 32, 91, 0, 0, 0, 32, 0, 0, 0, 0, 71, 79, 79, 71, 0, 64, 0, 13, 255, 253, 8, 98, 253, 213, 0, 0, 8, 98, 2, 43, 32, 0, 1, 159, 79, 1, 0, 0, 4, 58, 5, 176, 0, 0, 0, 32, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 20, 0, 3, 0, 1, 0, 0, 0, 20, 0, 4, 7, 76, 0, 0, 0, 194, 0, 128, 0, 6, 0, 66, 0, 13, 0, 47, 0, 57, 0, 64, 0, 90, 0, 96, 0, 122, 0, 126, 1, 127, 1, 146, 1, 161, 1, 176, 1, 240, 1, 255, 2, 27, 2, 55, 2, 89, 2, 188, 2, 199, 2, 201, 2, 221, 2, 243, 3, 1, 3, 3, 3, 9, 3, 15, 3, 35, 3, 138, 3, 140, 3, 146, 3, 161, 3, 176, 3, 185, 3, 201, 3, 206, 3, 210, 3, 214, 4, 37, 4, 47, 4, 69, 4, 79, 4, 98, 4, 111, 4, 119, 4, 134, 4, 206, 4, 215, 4, 225, 4, 245, 5, 1, 5, 16, 5, 19, 30, 1, 30, 63, 30, 133, 30, 241, 30, 243, 30, 249, 31, 77, 32, 11, 32, 21, 32, 30, 32, 34, 32, 38, 32, 48, 32, 51, 32, 58, 32, 60, 32, 68, 32, 116, 32, 127, 32, 164, 32, 167, 32, 172, 33, 5, 33, 19, 33, 22, 33, 34, 33, 38, 33, 46, 33, 94, 34, 2, 34, 6, 34, 15, 34, 18, 34, 21, 34, 26, 34, 30, 34, 43, 34, 72, 34, 96, 34, 101, 37, 202, 246, 195, 254, 255, 255, 253, 255, 255, 0, 0, 0, 13, 0, 32, 0, 48, 0, 58, 0, 65, 0, 91, 0, 97, 0, 123, 0, 160, 1, 146, 1, 160, 1, 175, 1, 240, 1, 250, 2, 24, 2, 55, 2, 89, 2, 188, 2, 198, 2, 201, 2, 216, 2, 243, 3, 0, 3, 3, 3, 9, 3, 15, 3, 35, 3, 132, 3, 140, 3, 142, 3, 147, 3, 163, 3, 177, 3, 186, 3, 202, 3, 209, 3, 214, 4, 0, 4, 38, 4, 48, 4, 70, 4, 80, 4, 99, 4, 112, 4, 120, 4, 136, 4, 207, 4, 216, 4, 226, 4, 246, 5, 2, 5, 17, 30, 0, 30, 62, 30, 128, 30, 160, 30, 242, 30, 244, 31, 77, 32, 0, 32, 19, 32, 23, 32, 32, 32, 37, 32, 48, 32, 50, 32, 57, 32, 60, 32, 68, 32, 116, 32, 127, 32, 163, 32, 167, 32, 171, 33, 5, 33, 19, 33, 22, 33, 34, 33, 38, 33, 46, 33, 91, 34, 2, 34, 6, 34, 15, 34, 17, 34, 21, 34, 26, 34, 30, 34, 43, 34, 72, 34, 96, 34, 100, 37, 202, 246, 195, 254, 255, 255, 252, 255, 255, 1, 92, 0, 0, 0, 6, 0, 0, 255, 193, 0, 0, 255, 187, 0, 0, 0, 0, 254, 196, 0, 0, 0, 0, 1, 51, 0, 0, 0, 98, 255, 58, 253, 248, 0, 104, 0, 0, 254, 149, 0, 0, 254, 127, 254, 115, 254, 114, 254, 109, 254, 104, 254, 66, 0, 0, 255, 76, 255, 75, 0, 0, 0, 0, 253, 212, 0, 0, 255, 44, 253, 200, 253, 197, 0, 0, 253, 131, 0, 0, 253, 123, 0, 0, 253, 112, 0, 0, 253, 108, 0, 0, 254, 108, 0, 0, 254, 105, 0, 0, 253, 20, 0, 0, 229, 39, 228, 231, 0, 0, 228, 198, 0, 0, 228, 196, 227, 220, 226, 37, 0, 0, 0, 0, 0, 0, 0, 0, 224, 93, 224, 64, 224, 65, 226, 230, 224, 71, 225, 192, 225, 182, 223, 180, 223, 178, 0, 0, 225, 50, 225, 37, 225, 35, 223, 114, 224, 94, 225, 12, 224, 224, 224, 61, 223, 118, 224, 49, 0, 0, 222, 116, 224, 40, 224, 37, 224, 25, 222, 59, 222, 34, 222, 34, 220, 123, 10, 165, 3, 71, 2, 75, 0, 1, 0, 0, 0, 192, 0, 0, 0, 220, 0, 0, 0, 230, 0, 0, 0, 238, 0, 244, 0, 0, 2, 176, 2, 178, 0, 0, 2, 178, 0, 0, 0, 0, 0, 0, 0, 0, 2, 180, 0, 0, 2, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 178, 0, 0, 0, 0, 2, 186, 2, 214, 0, 0, 2, 238, 0, 0, 0, 0, 0, 0, 3, 6, 0, 0, 3, 78, 0, 0, 3, 118, 0, 0, 3, 152, 0, 0, 3, 164, 0, 0, 4, 46, 0, 0, 4, 62, 0, 0, 4, 82, 0, 0, 0, 0, 4, 82, 0, 0, 4, 90, 0, 0, 0, 0, 0, 0, 4, 86, 4, 90, 4, 104, 4, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 91, 0, 107, 0, 151, 0, 82, 0, 140, 0, 152, 0, 106, 0, 116, 0, 117, 0, 150, 0, 124, 0, 95, 0, 103, 0, 96, 0, 137, 0, 97, 0, 98, 0, 132, 0, 129, 0, 133, 0, 93, 0, 153, 0, 118, 0, 138, 0, 119, 0, 156, 0, 102, 1, 90, 0, 120, 0, 142, 0, 121, 0, 157, 2, 115, 0, 92, 0, 83, 0, 84, 0, 90, 0, 85, 0, 143, 0, 154, 1, 97, 0, 146, 0, 67, 1, 106, 0, 136, 2, 116, 0, 147, 1, 94, 0, 149, 0, 126, 0, 65, 0, 66, 1, 91, 1, 107, 0, 155, 0, 100, 1, 102, 0, 64, 0, 68, 1, 108, 0, 70, 0, 69, 0, 71, 0, 94, 0, 162, 0, 158, 0, 160, 0, 167, 0, 161, 0, 165, 0, 72, 0, 171, 0, 181, 0, 175, 0, 178, 0, 179, 0, 196, 0, 191, 0, 193, 0, 194, 0, 185, 0, 210, 0, 215, 0, 211, 0, 213, 0, 221, 0, 214, 0, 127, 0, 219, 0, 235, 0, 231, 0, 233, 0, 234, 0, 246, 0, 77, 0, 80, 1, 1, 0, 253, 0, 255, 1, 6, 1, 0, 1, 4, 0, 73, 1, 10, 1, 20, 1, 14, 1, 17, 1, 18, 1, 33, 1, 29, 1, 31, 1, 32, 0, 76, 1, 47, 1, 52, 1, 48, 1, 50, 1, 58, 1, 51, 0, 128, 1, 56, 1, 72, 1, 68, 1, 70, 1, 71, 1, 83, 0, 78, 1, 85, 0, 163, 1, 2, 0, 159, 0, 254, 0, 164, 1, 3, 0, 169, 1, 8, 0, 172, 1, 11, 2, 117, 2, 118, 0, 170, 1, 9, 0, 173, 1, 12, 0, 174, 1, 13, 0, 182, 1, 21, 0, 176, 1, 15, 0, 180, 1, 19, 0, 184, 1, 23, 0, 177, 1, 16, 0, 187, 1, 25, 0, 186, 1, 24, 2, 119, 2, 120, 0, 188, 1, 26, 0, 190, 1, 28, 0, 189, 1, 27, 0, 199, 1, 36, 0, 197, 1, 34, 0, 192, 1, 30, 0, 198, 1, 35, 0, 195, 1, 109, 1, 110, 1, 111, 0, 200, 1, 37, 0, 201, 1, 38, 0, 79, 0, 202, 1, 39, 0, 204, 1, 41, 0, 203, 1, 40, 0, 205, 1, 42, 0, 206, 1, 43, 0, 207, 1, 44, 0, 209, 1, 46, 0, 208, 1, 45, 2, 121, 0, 183, 1, 22, 0, 218, 1, 55, 0, 212, 1, 49, 0, 217, 1, 54, 0, 74, 0, 75, 0, 222, 1, 59, 0, 224, 1, 61, 0, 223, 1, 60, 0, 225, 1, 62, 0, 228, 1, 65, 0, 227, 1, 64, 0, 226, 1, 63, 2, 126, 2, 128, 0, 230, 1, 67, 0, 229, 1, 66, 0, 241, 1, 78, 0, 238, 1, 75, 0, 232, 1, 69, 0, 240, 1, 77, 0, 237, 1, 74, 0, 239, 1, 76, 0, 243, 1, 80, 0, 247, 1, 84, 0, 248, 0, 250, 1, 87, 0, 252, 1, 89, 0, 251, 1, 88, 1, 112, 0, 216, 1, 53, 0, 236, 1, 73, 0, 166, 1, 5, 0, 168, 1, 7, 0, 220, 1, 57, 1, 92, 1, 100, 1, 95, 1, 96, 1, 98, 1, 103, 1, 93, 1, 99, 1, 120, 1, 121, 2, 212, 1, 122, 2, 213, 2, 214, 2, 215, 1, 123, 1, 124, 2, 222, 2, 223, 2, 224, 1, 125, 2, 225, 2, 226, 1, 126, 2, 227, 2, 228, 1, 127, 2, 229, 1, 128, 2, 230, 1, 129, 2, 231, 2, 232, 1, 130, 2, 233, 1, 131, 1, 132, 2, 234, 2, 235, 2, 236, 2, 237, 2, 238, 2, 239, 2, 240, 2, 241, 1, 142, 2, 243, 2, 244, 1, 143, 2, 242, 1, 144, 1, 145, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 2, 245, 1, 151, 1, 152, 3, 42, 2, 251, 1, 156, 2, 252, 1, 157, 2, 253, 2, 254, 2, 255, 3, 0, 1, 158, 1, 159, 1, 160, 3, 2, 3, 43, 3, 3, 1, 161, 3, 4, 1, 162, 3, 5, 3, 6, 1, 163, 3, 7, 1, 164, 1, 165, 1, 166, 3, 8, 3, 1, 1, 167, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 1, 168, 3, 16, 3, 17, 3, 18, 1, 179, 1, 180, 1, 181, 1, 182, 3, 19, 1, 183, 1, 184, 1, 185, 3, 20, 1, 186, 1, 187, 1, 188, 1, 189, 3, 21, 1, 190, 3, 22, 3, 23, 1, 191, 3, 24, 1, 192, 3, 25, 3, 44, 3, 26, 1, 203, 3, 27, 1, 204, 3, 28, 3, 29, 3, 30, 3, 31, 1, 205, 1, 206, 1, 207, 3, 32, 3, 45, 3, 33, 1, 208, 1, 209, 1, 210, 3, 212, 3, 46, 3, 47, 1, 224, 1, 225, 1, 226, 1, 227, 3, 48, 3, 49, 1, 243, 1, 244, 3, 217, 3, 218, 3, 211, 3, 210, 1, 245, 1, 246, 1, 247, 1, 248, 3, 213, 3, 214, 1, 249, 1, 250, 3, 205, 3, 206, 3, 50, 3, 51, 3, 191, 3, 192, 1, 251, 1, 252, 3, 215, 3, 216, 1, 253, 1, 254, 3, 193, 3, 194, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 3, 52, 3, 53, 3, 195, 3, 196, 3, 54, 3, 55, 3, 225, 3, 226, 3, 197, 3, 198, 2, 5, 2, 6, 3, 199, 3, 200, 2, 7, 2, 8, 2, 9, 3, 209, 2, 10, 2, 11, 3, 207, 3, 208, 3, 56, 3, 57, 3, 58, 2, 12, 2, 13, 3, 223, 3, 224, 2, 14, 2, 15, 3, 219, 3, 220, 3, 201, 3, 202, 3, 221, 3, 222, 2, 16, 3, 69, 3, 68, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 2, 17, 2, 18, 3, 203, 3, 204, 3, 95, 3, 96, 2, 19, 2, 20, 3, 97, 3, 98, 3, 227, 3, 228, 2, 21, 3, 99, 3, 229, 3, 100, 3, 101, 0, 245, 1, 82, 0, 242, 1, 79, 0, 244, 1, 81, 0, 249, 1, 86, 0, 104, 0, 105, 3, 230, 2, 49, 0, 108, 0, 109, 0, 110, 2, 50, 0, 111, 0, 112, 0, 113, 0, 144, 0, 145, 0, 101, 2, 51, 0, 99, 3, 190, 2, 54, 2, 65, 0, 125, 184, 1, 255, 133, 176, 4, 141, 0, 0, 0, 0, 17, 0, 210, 0, 3, 0, 1, 4, 9, 0, 0, 0, 180, 0, 0, 0, 3, 0, 1, 4, 9, 0, 1, 0, 22, 0, 180, 0, 3, 0, 1, 4, 9, 0, 2, 0, 14, 0, 202, 0, 3, 0, 1, 4, 9, 0, 3, 0, 58, 0, 216, 0, 3, 0, 1, 4, 9, 0, 4, 0, 38, 1, 18, 0, 3, 0, 1, 4, 9, 0, 5, 0, 26, 1, 56, 0, 3, 0, 1, 4, 9, 0, 6, 0, 36, 1, 82, 0, 3, 0, 1, 4, 9, 0, 7, 0, 74, 1, 118, 0, 3, 0, 1, 4, 9, 0, 9, 0, 12, 1, 192, 0, 3, 0, 1, 4, 9, 0, 11, 0, 20, 1, 204, 0, 3, 0, 1, 4, 9, 0, 12, 0, 38, 1, 224, 0, 3, 0, 1, 4, 9, 0, 13, 0, 92, 2, 6, 0, 3, 0, 1, 4, 9, 0, 14, 0, 84, 2, 98, 0, 3, 0, 1, 4, 9, 1, 0, 0, 12, 2, 182, 0, 3, 0, 1, 4, 9, 1, 11, 0, 12, 2, 194, 0, 3, 0, 1, 4, 9, 1, 14, 0, 14, 0, 202, 0, 3, 0, 1, 4, 9, 1, 17, 0, 12, 2, 206, 0, 67, 0, 111, 0, 112, 0, 121, 0, 114, 0, 105, 0, 103, 0, 104, 0, 116, 0, 32, 0, 50, 0, 48, 0, 49, 0, 53, 0, 32, 0, 84, 0, 104, 0, 101, 0, 32, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 80, 0, 114, 0, 111, 0, 106, 0, 101, 0, 99, 0, 116, 0, 32, 0, 65, 0, 117, 0, 116, 0, 104, 0, 111, 0, 114, 0, 115, 0, 32, 0, 40, 0, 104, 0, 116, 0, 116, 0, 112, 0, 115, 0, 58, 0, 47, 0, 47, 0, 103, 0, 105, 0, 116, 0, 104, 0, 117, 0, 98, 0, 46, 0, 99, 0, 111, 0, 109, 0, 47, 0, 103, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 102, 0, 111, 0, 110, 0, 116, 0, 115, 0, 47, 0, 114, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 109, 0, 111, 0, 110, 0, 111, 0, 41, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, 0, 114, 0, 51, 0, 46, 0, 48, 0, 48, 0, 48, 0, 59, 0, 71, 0, 79, 0, 79, 0, 71, 0, 59, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 77, 0, 111, 0, 110, 0, 111, 0, 45, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, 0, 114, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, 0, 114, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 51, 0, 46, 0, 48, 0, 48, 0, 48, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 77, 0, 111, 0, 110, 0, 111, 0, 45, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, 0, 114, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 105, 0, 115, 0, 32, 0, 97, 0, 32, 0, 116, 0, 114, 0, 97, 0, 100, 0, 101, 0, 109, 0, 97, 0, 114, 0, 107, 0, 32, 0, 111, 0, 102, 0, 32, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 46, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 46, 0, 99, 0, 111, 0, 109, 0, 67, 0, 104, 0, 114, 0, 105, 0, 115, 0, 116, 0, 105, 0, 97, 0, 110, 0, 32, 0, 82, 0, 111, 0, 98, 0, 101, 0, 114, 0, 116, 0, 115, 0, 111, 0, 110, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 100, 0, 32, 0, 117, 0, 110, 0, 100, 0, 101, 0, 114, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 65, 0, 112, 0, 97, 0, 99, 0, 104, 0, 101, 0, 32, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 44, 0, 32, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 50, 0, 46, 0, 48, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47, 0, 119, 0, 119, 0, 119, 0, 46, 0, 97, 0, 112, 0, 97, 0, 99, 0, 104, 0, 101, 0, 46, 0, 111, 0, 114, 0, 103, 0, 47, 0, 108, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 115, 0, 47, 0, 76, 0, 73, 0, 67, 0, 69, 0, 78, 0, 83, 0, 69, 0, 45, 0, 50, 0, 46, 0, 48, 0, 87, 0, 101, 0, 105, 0, 103, 0, 104, 0, 116, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 78, 0, 111, 0, 114, 0, 109, 0, 97, 0, 108, 0, 2, 0, 0, 0, 0, 0, 0, 255, 106, 0, 100, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 231, 0, 0, 0, 3, 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 68, 0, 69, 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, 0, 92, 0, 93, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 241, 0, 242, 0, 243, 0, 157, 0, 158, 0, 244, 0, 245, 0, 246, 0, 144, 0, 160, 0, 176, 0, 177, 0, 234, 0, 237, 0, 238, 1, 2, 0, 137, 1, 3, 0, 7, 0, 132, 0, 133, 0, 150, 0, 166, 0, 247, 1, 4, 1, 5, 0, 189, 0, 4, 0, 163, 0, 34, 0, 162, 0, 15, 0, 17, 0, 29, 0, 30, 0, 171, 0, 195, 0, 135, 0, 66, 0, 16, 0, 178, 0, 179, 0, 10, 0, 5, 0, 182, 0, 183, 0, 196, 0, 180, 0, 181, 0, 197, 1, 6, 1, 7, 0, 11, 0, 12, 0, 62, 0, 64, 0, 94, 0, 96, 0, 190, 0, 191, 0, 14, 0, 239, 0, 147, 0, 240, 0, 184, 0, 32, 0, 143, 0, 167, 0, 31, 0, 33, 0, 148, 0, 149, 0, 164, 0, 18, 0, 63, 0, 188, 0, 8, 0, 198, 0, 95, 0, 232, 0, 130, 0, 194, 0, 139, 0, 138, 0, 140, 0, 131, 0, 13, 0, 6, 0, 9, 0, 35, 0, 134, 0, 136, 0, 65, 0, 97, 0, 201, 1, 8, 0, 199, 0, 98, 0, 173, 1, 9, 1, 10, 0, 99, 1, 11, 0, 174, 1, 12, 0, 253, 0, 255, 0, 100, 1, 13, 1, 14, 1, 15, 0, 101, 1, 16, 1, 17, 0, 200, 0, 202, 1, 18, 0, 203, 1, 19, 1, 20, 1, 21, 0, 233, 0, 248, 1, 22, 1, 23, 1, 24, 1, 25, 0, 204, 1, 26, 0, 205, 0, 206, 0, 250, 0, 207, 1, 27, 1, 28, 1, 29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 34, 1, 35, 0, 226, 1, 36, 1, 37, 1, 38, 0, 102, 0, 208, 1, 39, 0, 209, 0, 103, 0, 211, 1, 40, 1, 41, 1, 42, 0, 145, 1, 43, 0, 175, 1, 44, 1, 45, 1, 46, 1, 47, 0, 228, 0, 251, 1, 48, 1, 49, 1, 50, 0, 212, 1, 51, 0, 213, 0, 104, 0, 214, 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, 0, 235, 1, 62, 0, 187, 1, 63, 1, 64, 0, 230, 1, 65, 0, 105, 1, 66, 0, 107, 0, 108, 0, 106, 1, 67, 1, 68, 0, 110, 1, 69, 0, 109, 1, 70, 0, 254, 1, 0, 0, 111, 1, 71, 1, 72, 1, 1, 0, 112, 1, 73, 1, 74, 0, 114, 0, 115, 1, 75, 0, 113, 1, 76, 1, 77, 1, 78, 0, 249, 1, 79, 1, 80, 1, 81, 1, 82, 0, 116, 1, 83, 0, 118, 0, 119, 0, 117, 1, 84, 1, 85, 1, 86, 1, 87, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 0, 227, 1, 93, 1, 94, 1, 95, 0, 120, 0, 121, 1, 96, 0, 123, 0, 124, 0, 122, 1, 97, 1, 98, 1, 99, 0, 161, 1, 100, 0, 125, 1, 101, 1, 102, 1, 103, 1, 104, 0, 229, 0, 252, 1, 105, 1, 106, 1, 107, 0, 126, 1, 108, 0, 128, 0, 129, 0, 127, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 118, 0, 236, 1, 119, 0, 186, 1, 120, 1, 121, 0, 231, 1, 122, 0, 67, 0, 141, 0, 216, 0, 217, 0, 218, 0, 219, 0, 220, 0, 142, 0, 221, 0, 223, 0, 225, 1, 123, 0, 222, 0, 224, 1, 124, 0, 2, 0, 169, 0, 151, 0, 170, 0, 215, 1, 125, 1, 126, 1, 127, 1, 128, 1, 129, 1, 130, 1, 131, 1, 132, 1, 133, 1, 134, 1, 135, 1, 136, 1, 137, 1, 138, 0, 168, 1, 139, 1, 140, 1, 141, 1, 142, 1, 143, 1, 144, 1, 145, 0, 159, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 1, 151, 1, 152, 1, 153, 1, 154, 1, 155, 1, 156, 0, 155, 1, 157, 1, 158, 1, 159, 1, 160, 1, 161, 1, 162, 1, 163, 1, 164, 1, 165, 1, 166, 1, 167, 1, 168, 1, 169, 1, 170, 1, 171, 1, 172, 1, 173, 1, 174, 1, 175, 1, 176, 1, 177, 1, 178, 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 1, 184, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, 1, 193, 1, 194, 1, 195, 1, 196, 1, 197, 1, 198, 1, 199, 1, 200, 1, 201, 1, 202, 1, 203, 1, 204, 1, 205, 1, 206, 1, 207, 1, 208, 1, 209, 1, 210, 1, 211, 1, 212, 1, 213, 1, 214, 1, 215, 1, 216, 1, 217, 1, 218, 1, 219, 1, 220, 1, 221, 1, 222, 1, 223, 1, 224, 1, 225, 1, 226, 1, 227, 1, 228, 1, 229, 1, 230, 1, 231, 1, 232, 1, 233, 1, 234, 1, 235, 1, 236, 1, 237, 1, 238, 1, 239, 1, 240, 1, 241, 1, 242, 1, 243, 1, 244, 1, 245, 1, 246, 1, 247, 1, 248, 1, 249, 1, 250, 1, 251, 1, 252, 1, 253, 1, 254, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, 2, 28, 2, 29, 2, 30, 2, 31, 2, 32, 2, 33, 2, 34, 2, 35, 2, 36, 2, 37, 2, 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43, 2, 44, 2, 45, 2, 46, 2, 47, 2, 48, 2, 49, 2, 50, 2, 51, 2, 52, 2, 53, 2, 54, 2, 55, 2, 56, 2, 57, 2, 58, 2, 59, 2, 60, 2, 61, 2, 62, 2, 63, 2, 64, 2, 65, 2, 66, 2, 67, 2, 68, 2, 69, 2, 70, 2, 71, 2, 72, 2, 73, 2, 74, 0, 152, 0, 154, 0, 153, 0, 165, 0, 146, 0, 156, 0, 185, 2, 75, 2, 76, 2, 77, 2, 78, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 104, 2, 105, 2, 106, 2, 107, 2, 108, 2, 109, 2, 110, 2, 111, 2, 112, 2, 113, 2, 114, 2, 115, 2, 116, 2, 117, 2, 118, 2, 119, 0, 172, 2, 120, 2, 121, 2, 122, 2, 123, 2, 124, 2, 125, 2, 126, 2, 127, 2, 128, 2, 129, 2, 130, 2, 131, 2, 132, 2, 133, 2, 134, 2, 135, 2, 136, 2, 137, 2, 138, 2, 139, 2, 140, 2, 141, 2, 142, 2, 143, 2, 144, 2, 145, 2, 146, 2, 147, 2, 148, 2, 149, 2, 150, 2, 151, 2, 152, 2, 153, 2, 154, 2, 155, 2, 156, 2, 157, 2, 158, 2, 159, 2, 160, 2, 161, 2, 162, 2, 163, 2, 164, 2, 165, 2, 166, 2, 167, 2, 168, 2, 169, 2, 170, 2, 171, 2, 172, 2, 173, 2, 174, 2, 175, 2, 176, 2, 177, 2, 178, 2, 179, 2, 180, 2, 181, 2, 182, 2, 183, 2, 184, 2, 185, 2, 186, 2, 187, 2, 188, 2, 189, 2, 190, 2, 191, 2, 192, 2, 193, 2, 194, 2, 195, 2, 196, 2, 197, 2, 198, 2, 199, 2, 200, 2, 201, 2, 202, 2, 203, 2, 204, 2, 205, 2, 206, 2, 207, 2, 208, 2, 209, 2, 210, 2, 211, 2, 212, 2, 213, 2, 214, 2, 215, 2, 216, 2, 217, 2, 218, 2, 219, 2, 220, 2, 221, 2, 222, 2, 223, 2, 224, 2, 225, 2, 226, 2, 227, 2, 228, 2, 229, 2, 230, 2, 231, 2, 232, 2, 233, 2, 234, 2, 235, 2, 236, 2, 237, 2, 238, 2, 239, 2, 240, 2, 241, 2, 242, 2, 243, 2, 244, 2, 245, 2, 246, 2, 247, 2, 248, 2, 249, 2, 250, 2, 251, 2, 252, 2, 253, 2, 254, 2, 255, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, 3, 22, 3, 23, 3, 24, 3, 25, 3, 26, 3, 27, 3, 28, 3, 29, 3, 30, 3, 31, 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3, 39, 3, 40, 3, 41, 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 3, 53, 3, 54, 3, 55, 3, 56, 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, 3, 62, 3, 63, 3, 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 3, 75, 3, 76, 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88, 3, 89, 3, 90, 3, 91, 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 3, 100, 3, 101, 3, 102, 3, 103, 3, 104, 3, 105, 3, 106, 3, 107, 3, 108, 3, 109, 3, 110, 3, 111, 3, 112, 3, 113, 3, 114, 3, 115, 3, 116, 3, 117, 3, 118, 3, 119, 3, 120, 3, 121, 3, 122, 3, 123, 3, 124, 3, 125, 3, 126, 3, 127, 3, 128, 3, 129, 3, 130, 3, 131, 3, 132, 3, 133, 3, 134, 3, 135, 3, 136, 3, 137, 3, 138, 3, 139, 3, 140, 3, 141, 3, 142, 3, 143, 3, 144, 3, 145, 3, 146, 3, 147, 3, 148, 3, 149, 3, 150, 3, 151, 3, 152, 3, 153, 3, 154, 3, 155, 3, 156, 3, 157, 3, 158, 3, 159, 3, 160, 3, 161, 3, 162, 3, 163, 3, 164, 3, 165, 3, 166, 3, 167, 3, 168, 3, 169, 3, 170, 3, 171, 3, 172, 3, 173, 3, 174, 3, 175, 3, 176, 3, 177, 3, 178, 3, 179, 3, 180, 3, 181, 3, 182, 3, 183, 3, 184, 3, 185, 3, 186, 3, 187, 3, 188, 3, 189, 3, 190, 3, 191, 3, 192, 3, 193, 3, 194, 3, 195, 3, 196, 3, 197, 3, 198, 3, 199, 3, 200, 3, 201, 3, 202, 3, 203, 3, 204, 3, 205, 3, 206, 3, 207, 3, 208, 3, 209, 3, 210, 3, 211, 3, 212, 3, 213, 3, 214, 3, 215, 3, 216, 3, 217, 3, 218, 3, 219, 3, 220, 3, 221, 3, 222, 3, 223, 3, 224, 3, 225, 3, 226, 3, 227, 3, 228, 3, 229, 3, 230, 3, 231, 3, 232, 3, 233, 3, 234, 12, 107, 103, 114, 101, 101, 110, 108, 97, 110, 100, 105, 99, 5, 115, 99, 104, 119, 97, 4, 108, 105, 114, 97, 6, 112, 101, 115, 101, 116, 97, 6, 109, 105, 110, 117, 116, 101, 6, 115, 101, 99, 111, 110, 100, 6, 65, 98, 114, 101, 118, 101, 7, 65, 109, 97, 99, 114, 111, 110, 7, 65, 111, 103, 111, 110, 101, 107, 10, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 7, 65, 69, 97, 99, 117, 116, 101, 11, 67, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 68, 99, 97, 114, 111, 110, 6, 68, 99, 114, 111, 97, 116, 6, 69, 98, 114, 101, 118, 101, 6, 69, 99, 97, 114, 111, 110, 10, 69, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 69, 109, 97, 99, 114, 111, 110, 3, 69, 110, 103, 7, 69, 111, 103, 111, 110, 101, 107, 11, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 71, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 72, 98, 97, 114, 11, 72, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 73, 98, 114, 101, 118, 101, 7, 73, 109, 97, 99, 114, 111, 110, 7, 73, 111, 103, 111, 110, 101, 107, 6, 73, 116, 105, 108, 100, 101, 11, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 76, 97, 99, 117, 116, 101, 6, 76, 99, 97, 114, 111, 110, 12, 76, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 76, 100, 111, 116, 6, 78, 97, 99, 117, 116, 101, 6, 78, 99, 97, 114, 111, 110, 12, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 79, 98, 114, 101, 118, 101, 5, 79, 104, 111, 114, 110, 13, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 79, 109, 97, 99, 114, 111, 110, 11, 79, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 6, 82, 97, 99, 117, 116, 101, 6, 82, 99, 97, 114, 111, 110, 12, 82, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 83, 97, 99, 117, 116, 101, 11, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 84, 98, 97, 114, 6, 84, 99, 97, 114, 111, 110, 6, 85, 98, 114, 101, 118, 101, 5, 85, 104, 111, 114, 110, 13, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 85, 109, 97, 99, 114, 111, 110, 7, 85, 111, 103, 111, 110, 101, 107, 5, 85, 114, 105, 110, 103, 6, 85, 116, 105, 108, 100, 101, 6, 87, 97, 99, 117, 116, 101, 11, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 9, 87, 100, 105, 101, 114, 101, 115, 105, 115, 6, 87, 103, 114, 97, 118, 101, 11, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 89, 103, 114, 97, 118, 101, 6, 90, 97, 99, 117, 116, 101, 10, 90, 100, 111, 116, 97, 99, 99, 101, 110, 116, 6, 97, 98, 114, 101, 118, 101, 7, 97, 109, 97, 99, 114, 111, 110, 7, 97, 111, 103, 111, 110, 101, 107, 10, 97, 114, 105, 110, 103, 97, 99, 117, 116, 101, 7, 97, 101, 97, 99, 117, 116, 101, 11, 99, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 100, 99, 97, 114, 111, 110, 6, 101, 98, 114, 101, 118, 101, 6, 101, 99, 97, 114, 111, 110, 10, 101, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 101, 109, 97, 99, 114, 111, 110, 3, 101, 110, 103, 7, 101, 111, 103, 111, 110, 101, 107, 11, 103, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 103, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 104, 98, 97, 114, 11, 104, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 105, 98, 114, 101, 118, 101, 7, 105, 109, 97, 99, 114, 111, 110, 7, 105, 111, 103, 111, 110, 101, 107, 6, 105, 116, 105, 108, 100, 101, 11, 106, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 107, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 108, 97, 99, 117, 116, 101, 6, 108, 99, 97, 114, 111, 110, 12, 108, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 108, 100, 111, 116, 6, 110, 97, 99, 117, 116, 101, 6, 110, 99, 97, 114, 111, 110, 12, 110, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 111, 98, 114, 101, 118, 101, 5, 111, 104, 111, 114, 110, 13, 111, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 111, 109, 97, 99, 114, 111, 110, 11, 111, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 6, 114, 97, 99, 117, 116, 101, 6, 114, 99, 97, 114, 111, 110, 12, 114, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 115, 97, 99, 117, 116, 101, 11, 115, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 116, 98, 97, 114, 6, 116, 99, 97, 114, 111, 110, 6, 117, 98, 114, 101, 118, 101, 5, 117, 104, 111, 114, 110, 13, 117, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 117, 109, 97, 99, 114, 111, 110, 7, 117, 111, 103, 111, 110, 101, 107, 5, 117, 114, 105, 110, 103, 6, 117, 116, 105, 108, 100, 101, 6, 119, 97, 99, 117, 116, 101, 11, 119, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 9, 119, 100, 105, 101, 114, 101, 115, 105, 115, 6, 119, 103, 114, 97, 118, 101, 11, 121, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 121, 103, 114, 97, 118, 101, 6, 122, 97, 99, 117, 116, 101, 10, 122, 100, 111, 116, 97, 99, 99, 101, 110, 116, 8, 100, 111, 116, 98, 101, 108, 111, 119, 11, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 2, 73, 74, 2, 105, 106, 5, 108, 111, 110, 103, 115, 7, 117, 110, 105, 48, 50, 51, 55, 7, 117, 110, 105, 48, 50, 70, 51, 9, 103, 114, 97, 118, 101, 99, 111, 109, 98, 9, 97, 99, 117, 116, 101, 99, 111, 109, 98, 9, 116, 105, 108, 100, 101, 99, 111, 109, 98, 4, 104, 111, 111, 107, 7, 117, 110, 105, 48, 51, 48, 70, 5, 116, 111, 110, 111, 115, 13, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 9, 97, 110, 111, 116, 101, 108, 101, 105, 97, 5, 71, 97, 109, 109, 97, 5, 84, 104, 101, 116, 97, 6, 76, 97, 109, 98, 100, 97, 2, 88, 105, 2, 80, 105, 5, 83, 105, 103, 109, 97, 3, 80, 104, 105, 3, 80, 115, 105, 5, 97, 108, 112, 104, 97, 4, 98, 101, 116, 97, 5, 103, 97, 109, 109, 97, 5, 100, 101, 108, 116, 97, 7, 101, 112, 115, 105, 108, 111, 110, 4, 122, 101, 116, 97, 3, 101, 116, 97, 5, 116, 104, 101, 116, 97, 4, 105, 111, 116, 97, 6, 108, 97, 109, 98, 100, 97, 2, 120, 105, 3, 114, 104, 111, 6, 115, 105, 103, 109, 97, 49, 5, 115, 105, 103, 109, 97, 3, 116, 97, 117, 7, 117, 112, 115, 105, 108, 111, 110, 3, 112, 104, 105, 3, 112, 115, 105, 5, 111, 109, 101, 103, 97, 7, 117, 110, 105, 48, 51, 68, 49, 7, 117, 110, 105, 48, 51, 68, 50, 7, 117, 110, 105, 48, 51, 68, 54, 7, 117, 110, 105, 48, 52, 48, 50, 7, 117, 110, 105, 48, 52, 48, 52, 7, 117, 110, 105, 48, 52, 48, 57, 7, 117, 110, 105, 48, 52, 48, 65, 7, 117, 110, 105, 48, 52, 48, 66, 7, 117, 110, 105, 48, 52, 48, 70, 7, 117, 110, 105, 48, 52, 49, 49, 7, 117, 110, 105, 48, 52, 49, 52, 7, 117, 110, 105, 48, 52, 49, 54, 7, 117, 110, 105, 48, 52, 49, 55, 7, 117, 110, 105, 48, 52, 49, 56, 7, 117, 110, 105, 48, 52, 49, 66, 7, 117, 110, 105, 48, 52, 50, 51, 7, 117, 110, 105, 48, 52, 50, 54, 7, 117, 110, 105, 48, 52, 50, 55, 7, 117, 110, 105, 48, 52, 50, 56, 7, 117, 110, 105, 48, 52, 50, 57, 7, 117, 110, 105, 48, 52, 50, 65, 7, 117, 110, 105, 48, 52, 50, 66, 7, 117, 110, 105, 48, 52, 50, 67, 7, 117, 110, 105, 48, 52, 50, 68, 7, 117, 110, 105, 48, 52, 50, 69, 7, 117, 110, 105, 48, 52, 50, 70, 7, 117, 110, 105, 48, 52, 51, 49, 7, 117, 110, 105, 48, 52, 51, 50, 7, 117, 110, 105, 48, 52, 51, 51, 7, 117, 110, 105, 48, 52, 51, 52, 7, 117, 110, 105, 48, 52, 51, 54, 7, 117, 110, 105, 48, 52, 51, 55, 7, 117, 110, 105, 48, 52, 51, 56, 7, 117, 110, 105, 48, 52, 51, 65, 7, 117, 110, 105, 48, 52, 51, 66, 7, 117, 110, 105, 48, 52, 51, 67, 7, 117, 110, 105, 48, 52, 51, 68, 7, 117, 110, 105, 48, 52, 51, 70, 7, 117, 110, 105, 48, 52, 52, 50, 7, 117, 110, 105, 48, 52, 52, 52, 7, 117, 110, 105, 48, 52, 52, 54, 7, 117, 110, 105, 48, 52, 52, 55, 7, 117, 110, 105, 48, 52, 52, 56, 7, 117, 110, 105, 48, 52, 52, 57, 7, 117, 110, 105, 48, 52, 52, 65, 7, 117, 110, 105, 48, 52, 52, 66, 7, 117, 110, 105, 48, 52, 52, 67, 7, 117, 110, 105, 48, 52, 52, 68, 7, 117, 110, 105, 48, 52, 52, 69, 7, 117, 110, 105, 48, 52, 52, 70, 7, 117, 110, 105, 48, 52, 53, 50, 7, 117, 110, 105, 48, 52, 53, 52, 7, 117, 110, 105, 48, 52, 53, 57, 7, 117, 110, 105, 48, 52, 53, 65, 7, 117, 110, 105, 48, 52, 53, 66, 7, 117, 110, 105, 48, 52, 53, 70, 7, 117, 110, 105, 48, 52, 54, 48, 7, 117, 110, 105, 48, 52, 54, 49, 7, 117, 110, 105, 48, 52, 54, 51, 7, 117, 110, 105, 48, 52, 54, 52, 7, 117, 110, 105, 48, 52, 54, 53, 7, 117, 110, 105, 48, 52, 54, 54, 7, 117, 110, 105, 48, 52, 54, 55, 7, 117, 110, 105, 48, 52, 54, 56, 7, 117, 110, 105, 48, 52, 54, 57, 7, 117, 110, 105, 48, 52, 54, 65, 7, 117, 110, 105, 48, 52, 54, 66, 7, 117, 110, 105, 48, 52, 54, 67, 7, 117, 110, 105, 48, 52, 54, 68, 7, 117, 110, 105, 48, 52, 54, 69, 7, 117, 110, 105, 48, 52, 54, 70, 7, 117, 110, 105, 48, 52, 55, 50, 7, 117, 110, 105, 48, 52, 55, 51, 7, 117, 110, 105, 48, 52, 55, 52, 7, 117, 110, 105, 48, 52, 55, 53, 7, 117, 110, 105, 48, 52, 55, 56, 7, 117, 110, 105, 48, 52, 55, 57, 7, 117, 110, 105, 48, 52, 55, 65, 7, 117, 110, 105, 48, 52, 55, 66, 7, 117, 110, 105, 48, 52, 55, 67, 7, 117, 110, 105, 48, 52, 55, 68, 7, 117, 110, 105, 48, 52, 55, 69, 7, 117, 110, 105, 48, 52, 55, 70, 7, 117, 110, 105, 48, 52, 56, 48, 7, 117, 110, 105, 48, 52, 56, 49, 7, 117, 110, 105, 48, 52, 56, 50, 7, 117, 110, 105, 48, 52, 56, 51, 7, 117, 110, 105, 48, 52, 56, 52, 7, 117, 110, 105, 48, 52, 56, 53, 7, 117, 110, 105, 48, 52, 56, 54, 7, 117, 110, 105, 48, 52, 56, 56, 7, 117, 110, 105, 48, 52, 56, 57, 7, 117, 110, 105, 48, 52, 56, 69, 7, 117, 110, 105, 48, 52, 56, 70, 7, 117, 110, 105, 48, 52, 57, 48, 7, 117, 110, 105, 48, 52, 57, 49, 7, 117, 110, 105, 48, 52, 57, 52, 7, 117, 110, 105, 48, 52, 57, 53, 7, 117, 110, 105, 48, 52, 57, 67, 7, 117, 110, 105, 48, 52, 57, 68, 7, 117, 110, 105, 48, 52, 65, 48, 7, 117, 110, 105, 48, 52, 65, 49, 7, 117, 110, 105, 48, 52, 65, 52, 7, 117, 110, 105, 48, 52, 65, 53, 7, 117, 110, 105, 48, 52, 65, 54, 7, 117, 110, 105, 48, 52, 65, 55, 7, 117, 110, 105, 48, 52, 65, 56, 7, 117, 110, 105, 48, 52, 65, 57, 7, 117, 110, 105, 48, 52, 66, 52, 7, 117, 110, 105, 48, 52, 66, 53, 7, 117, 110, 105, 48, 52, 66, 56, 7, 117, 110, 105, 48, 52, 66, 57, 7, 117, 110, 105, 48, 52, 66, 65, 7, 117, 110, 105, 48, 52, 66, 67, 7, 117, 110, 105, 48, 52, 66, 68, 7, 117, 110, 105, 48, 52, 67, 51, 7, 117, 110, 105, 48, 52, 67, 52, 7, 117, 110, 105, 48, 52, 67, 55, 7, 117, 110, 105, 48, 52, 67, 56, 7, 117, 110, 105, 48, 52, 68, 56, 7, 117, 110, 105, 48, 52, 69, 48, 7, 117, 110, 105, 48, 52, 69, 49, 7, 117, 110, 105, 48, 52, 70, 65, 7, 117, 110, 105, 48, 52, 70, 66, 7, 117, 110, 105, 48, 53, 48, 48, 7, 117, 110, 105, 48, 53, 48, 50, 7, 117, 110, 105, 48, 53, 48, 51, 7, 117, 110, 105, 48, 53, 48, 52, 7, 117, 110, 105, 48, 53, 48, 53, 7, 117, 110, 105, 48, 53, 48, 54, 7, 117, 110, 105, 48, 53, 48, 55, 7, 117, 110, 105, 48, 53, 48, 56, 7, 117, 110, 105, 48, 53, 48, 57, 7, 117, 110, 105, 48, 53, 48, 65, 7, 117, 110, 105, 48, 53, 48, 66, 7, 117, 110, 105, 48, 53, 48, 67, 7, 117, 110, 105, 48, 53, 48, 68, 7, 117, 110, 105, 48, 53, 48, 69, 7, 117, 110, 105, 48, 53, 48, 70, 7, 117, 110, 105, 48, 53, 49, 48, 7, 117, 110, 105, 50, 48, 48, 48, 7, 117, 110, 105, 50, 48, 48, 49, 7, 117, 110, 105, 50, 48, 48, 50, 7, 117, 110, 105, 50, 48, 48, 51, 7, 117, 110, 105, 50, 48, 48, 52, 7, 117, 110, 105, 50, 48, 48, 53, 7, 117, 110, 105, 50, 48, 48, 54, 7, 117, 110, 105, 50, 48, 48, 55, 7, 117, 110, 105, 50, 48, 48, 56, 7, 117, 110, 105, 50, 48, 48, 57, 7, 117, 110, 105, 50, 48, 48, 65, 7, 117, 110, 105, 50, 48, 48, 66, 13, 117, 110, 100, 101, 114, 115, 99, 111, 114, 101, 100, 98, 108, 13, 113, 117, 111, 116, 101, 114, 101, 118, 101, 114, 115, 101, 100, 7, 117, 110, 105, 50, 48, 50, 53, 7, 117, 110, 105, 50, 48, 55, 52, 9, 110, 115, 117, 112, 101, 114, 105, 111, 114, 4, 69, 117, 114, 111, 7, 117, 110, 105, 50, 49, 48, 53, 7, 117, 110, 105, 50, 49, 49, 51, 7, 117, 110, 105, 50, 49, 49, 54, 9, 101, 115, 116, 105, 109, 97, 116, 101, 100, 9, 111, 110, 101, 101, 105, 103, 104, 116, 104, 12, 116, 104, 114, 101, 101, 101, 105, 103, 104, 116, 104, 115, 11, 102, 105, 118, 101, 101, 105, 103, 104, 116, 104, 115, 12, 115, 101, 118, 101, 110, 101, 105, 103, 104, 116, 104, 115, 7, 117, 110, 105, 70, 69, 70, 70, 7, 117, 110, 105, 70, 70, 70, 67, 7, 117, 110, 105, 70, 70, 70, 68, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 99, 111, 109, 98, 18, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104, 111, 111, 107, 99, 111, 109, 98, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 99, 111, 109, 98, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 97, 99, 117, 116, 101, 99, 111, 109, 98, 14, 98, 114, 101, 118, 101, 103, 114, 97, 118, 101, 99, 111, 109, 98, 17, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 114, 111, 116, 97, 116, 101, 6, 65, 46, 115, 109, 99, 112, 6, 66, 46, 115, 109, 99, 112, 6, 67, 46, 115, 109, 99, 112, 6, 68, 46, 115, 109, 99, 112, 6, 69, 46, 115, 109, 99, 112, 6, 70, 46, 115, 109, 99, 112, 6, 71, 46, 115, 109, 99, 112, 6, 72, 46, 115, 109, 99, 112, 6, 73, 46, 115, 109, 99, 112, 6, 74, 46, 115, 109, 99, 112, 6, 75, 46, 115, 109, 99, 112, 6, 76, 46, 115, 109, 99, 112, 6, 77, 46, 115, 109, 99, 112, 6, 78, 46, 115, 109, 99, 112, 6, 79, 46, 115, 109, 99, 112, 6, 81, 46, 115, 109, 99, 112, 6, 82, 46, 115, 109, 99, 112, 6, 83, 46, 115, 109, 99, 112, 6, 84, 46, 115, 109, 99, 112, 6, 85, 46, 115, 109, 99, 112, 6, 86, 46, 115, 109, 99, 112, 6, 87, 46, 115, 109, 99, 112, 6, 88, 46, 115, 109, 99, 112, 6, 89, 46, 115, 109, 99, 112, 6, 90, 46, 115, 109, 99, 112, 13, 98, 114, 101, 118, 101, 104, 111, 111, 107, 99, 111, 109, 98, 14, 98, 114, 101, 118, 101, 97, 99, 117, 116, 101, 99, 111, 109, 98, 8, 99, 114, 111, 115, 115, 98, 97, 114, 9, 114, 105, 110, 103, 97, 99, 117, 116, 101, 9, 100, 97, 115, 105, 97, 111, 120, 105, 97, 14, 98, 114, 101, 118, 101, 116, 105, 108, 100, 101, 99, 111, 109, 98, 11, 99, 121, 114, 105, 108, 108, 105, 99, 116, 105, 99, 12, 99, 121, 114, 105, 108, 108, 105, 99, 104, 111, 111, 107, 6, 80, 46, 115, 109, 99, 112, 5, 75, 46, 97, 108, 116, 15, 71, 101, 114, 109, 97, 110, 100, 98, 108, 115, 46, 115, 109, 99, 112, 7, 117, 110, 105, 48, 48, 65, 68, 7, 117, 110, 105, 48, 49, 48, 65, 7, 117, 110, 105, 48, 49, 48, 66, 7, 117, 110, 105, 48, 49, 50, 48, 7, 117, 110, 105, 48, 49, 50, 49, 11, 110, 97, 112, 111, 115, 116, 114, 111, 112, 104, 101, 7, 117, 110, 105, 48, 50, 49, 56, 7, 117, 110, 105, 48, 50, 49, 57, 7, 117, 110, 105, 48, 50, 49, 65, 7, 117, 110, 105, 48, 50, 49, 66, 7, 117, 110, 105, 48, 49, 54, 50, 12, 117, 110, 105, 48, 49, 54, 50, 46, 115, 109, 99, 112, 7, 117, 110, 105, 48, 49, 54, 51, 11, 68, 99, 114, 111, 97, 116, 46, 115, 109, 99, 112, 8, 69, 116, 104, 46, 115, 109, 99, 112, 9, 84, 98, 97, 114, 46, 115, 109, 99, 112, 11, 65, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 65, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 65, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 65, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 14, 65, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 10, 65, 114, 105, 110, 103, 46, 115, 109, 99, 112, 15, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 13, 67, 99, 101, 100, 105, 108, 108, 97, 46, 115, 109, 99, 112, 11, 69, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 69, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 69, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 69, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 73, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 73, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 73, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 73, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 78, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 11, 79, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 79, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 79, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 79, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 14, 79, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 85, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 85, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 85, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 85, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 89, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 12, 65, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 65, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 12, 65, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 11, 67, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 67, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 67, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 68, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 12, 69, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 69, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 15, 69, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 12, 69, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 11, 69, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 16, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 71, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 17, 71, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 16, 72, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 73, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 12, 73, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 73, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 12, 73, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 15, 73, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 16, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 17, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 76, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 76, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 76, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 9, 76, 100, 111, 116, 46, 115, 109, 99, 112, 11, 78, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 78, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 12, 79, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 79, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 18, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 46, 115, 109, 99, 112, 11, 82, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 82, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 82, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 83, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 13, 83, 99, 101, 100, 105, 108, 108, 97, 46, 115, 109, 99, 112, 11, 83, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 84, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 85, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 12, 85, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 85, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 10, 85, 114, 105, 110, 103, 46, 115, 109, 99, 112, 18, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 46, 115, 109, 99, 112, 12, 85, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 16, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 16, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 89, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 90, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 15, 90, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 90, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 10, 65, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 69, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 69, 116, 97, 116, 111, 110, 111, 115, 9, 73, 111, 116, 97, 116, 111, 110, 111, 115, 12, 79, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 85, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 10, 79, 109, 101, 103, 97, 116, 111, 110, 111, 115, 17, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 65, 108, 112, 104, 97, 4, 66, 101, 116, 97, 7, 69, 112, 115, 105, 108, 111, 110, 4, 90, 101, 116, 97, 3, 69, 116, 97, 4, 73, 111, 116, 97, 5, 75, 97, 112, 112, 97, 2, 77, 117, 2, 78, 117, 7, 79, 109, 105, 99, 114, 111, 110, 3, 82, 104, 111, 3, 84, 97, 117, 7, 85, 112, 115, 105, 108, 111, 110, 3, 67, 104, 105, 12, 73, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15, 85, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 10, 97, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 101, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 101, 116, 97, 116, 111, 110, 111, 115, 9, 105, 111, 116, 97, 116, 111, 110, 111, 115, 20, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 107, 97, 112, 112, 97, 7, 111, 109, 105, 99, 114, 111, 110, 7, 117, 110, 105, 48, 51, 66, 67, 2, 110, 117, 3, 99, 104, 105, 12, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 12, 111, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 117, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 10, 111, 109, 101, 103, 97, 116, 111, 110, 111, 115, 7, 117, 110, 105, 48, 52, 48, 49, 7, 117, 110, 105, 48, 52, 48, 51, 7, 117, 110, 105, 48, 52, 48, 53, 7, 117, 110, 105, 48, 52, 48, 54, 7, 117, 110, 105, 48, 52, 48, 55, 7, 117, 110, 105, 48, 52, 48, 56, 7, 117, 110, 105, 48, 52, 49, 65, 7, 117, 110, 105, 48, 52, 48, 67, 7, 117, 110, 105, 48, 52, 48, 69, 7, 117, 110, 105, 48, 52, 49, 48, 7, 117, 110, 105, 48, 52, 49, 50, 7, 117, 110, 105, 48, 52, 49, 51, 7, 117, 110, 105, 48, 52, 49, 53, 7, 117, 110, 105, 48, 52, 49, 57, 7, 117, 110, 105, 48, 52, 49, 67, 7, 117, 110, 105, 48, 52, 49, 68, 7, 117, 110, 105, 48, 52, 49, 69, 7, 117, 110, 105, 48, 52, 49, 70, 7, 117, 110, 105, 48, 52, 50, 48, 7, 117, 110, 105, 48, 52, 50, 49, 7, 117, 110, 105, 48, 52, 50, 50, 7, 117, 110, 105, 48, 52, 50, 52, 7, 117, 110, 105, 48, 52, 50, 53, 7, 117, 110, 105, 48, 52, 51, 48, 7, 117, 110, 105, 48, 52, 51, 53, 7, 117, 110, 105, 48, 52, 51, 57, 7, 117, 110, 105, 48, 52, 51, 69, 7, 117, 110, 105, 48, 52, 52, 48, 7, 117, 110, 105, 48, 52, 52, 49, 7, 117, 110, 105, 48, 52, 52, 51, 7, 117, 110, 105, 48, 52, 52, 53, 7, 117, 110, 105, 48, 52, 53, 49, 7, 117, 110, 105, 48, 52, 53, 51, 7, 117, 110, 105, 48, 52, 53, 53, 7, 117, 110, 105, 48, 52, 53, 54, 7, 117, 110, 105, 48, 52, 53, 55, 7, 117, 110, 105, 48, 52, 53, 56, 7, 117, 110, 105, 48, 52, 53, 67, 7, 117, 110, 105, 48, 52, 53, 69, 9, 101, 120, 99, 108, 97, 109, 100, 98, 108, 7, 117, 110, 105, 48, 49, 70, 48, 7, 117, 110, 105, 48, 50, 66, 67, 7, 117, 110, 105, 49, 69, 51, 69, 7, 117, 110, 105, 49, 69, 51, 70, 7, 117, 110, 105, 49, 69, 48, 48, 7, 117, 110, 105, 49, 69, 48, 49, 7, 117, 110, 105, 49, 70, 52, 68, 7, 117, 110, 105, 48, 52, 48, 48, 7, 117, 110, 105, 48, 52, 48, 68, 7, 117, 110, 105, 48, 52, 53, 48, 7, 117, 110, 105, 48, 52, 53, 68, 7, 117, 110, 105, 48, 52, 55, 48, 7, 117, 110, 105, 48, 52, 55, 49, 7, 117, 110, 105, 48, 52, 55, 54, 7, 117, 110, 105, 48, 52, 55, 55, 7, 117, 110, 105, 48, 52, 57, 56, 7, 117, 110, 105, 48, 52, 57, 57, 7, 117, 110, 105, 48, 52, 65, 65, 7, 117, 110, 105, 48, 52, 65, 66, 7, 117, 110, 105, 48, 52, 65, 69, 7, 117, 110, 105, 48, 52, 65, 70, 7, 117, 110, 105, 48, 52, 67, 48, 7, 117, 110, 105, 48, 52, 67, 49, 7, 117, 110, 105, 48, 52, 67, 50, 7, 117, 110, 105, 48, 52, 67, 70, 7, 117, 110, 105, 48, 52, 68, 48, 7, 117, 110, 105, 48, 52, 68, 49, 7, 117, 110, 105, 48, 52, 68, 50, 7, 117, 110, 105, 48, 52, 68, 51, 7, 117, 110, 105, 48, 52, 68, 52, 7, 117, 110, 105, 48, 52, 68, 53, 7, 117, 110, 105, 48, 52, 68, 54, 7, 117, 110, 105, 48, 52, 68, 55, 7, 117, 110, 105, 48, 52, 68, 65, 7, 117, 110, 105, 48, 52, 68, 57, 7, 117, 110, 105, 48, 52, 68, 66, 7, 117, 110, 105, 48, 52, 68, 67, 7, 117, 110, 105, 48, 52, 68, 68, 7, 117, 110, 105, 48, 52, 68, 69, 7, 117, 110, 105, 48, 52, 68, 70, 7, 117, 110, 105, 48, 52, 69, 50, 7, 117, 110, 105, 48, 52, 69, 51, 7, 117, 110, 105, 48, 52, 69, 52, 7, 117, 110, 105, 48, 52, 69, 53, 7, 117, 110, 105, 48, 52, 69, 54, 7, 117, 110, 105, 48, 52, 69, 55, 7, 117, 110, 105, 48, 52, 69, 56, 7, 117, 110, 105, 48, 52, 69, 57, 7, 117, 110, 105, 48, 52, 69, 65, 7, 117, 110, 105, 48, 52, 69, 66, 7, 117, 110, 105, 48, 52, 69, 67, 7, 117, 110, 105, 48, 52, 69, 68, 7, 117, 110, 105, 48, 52, 69, 69, 7, 117, 110, 105, 48, 52, 69, 70, 7, 117, 110, 105, 48, 52, 70, 48, 7, 117, 110, 105, 48, 52, 70, 49, 7, 117, 110, 105, 48, 52, 70, 50, 7, 117, 110, 105, 48, 52, 70, 51, 7, 117, 110, 105, 48, 52, 70, 52, 7, 117, 110, 105, 48, 52, 70, 53, 7, 117, 110, 105, 48, 52, 70, 56, 7, 117, 110, 105, 48, 52, 70, 57, 7, 117, 110, 105, 48, 52, 70, 67, 7, 117, 110, 105, 48, 52, 70, 68, 7, 117, 110, 105, 48, 53, 48, 49, 7, 117, 110, 105, 48, 53, 49, 50, 7, 117, 110, 105, 48, 53, 49, 51, 7, 117, 110, 105, 49, 69, 65, 48, 7, 117, 110, 105, 49, 69, 65, 49, 7, 117, 110, 105, 49, 69, 65, 50, 7, 117, 110, 105, 49, 69, 65, 51, 7, 117, 110, 105, 49, 69, 65, 52, 7, 117, 110, 105, 49, 69, 65, 53, 7, 117, 110, 105, 49, 69, 65, 54, 7, 117, 110, 105, 49, 69, 65, 55, 7, 117, 110, 105, 49, 69, 65, 56, 7, 117, 110, 105, 49, 69, 65, 57, 7, 117, 110, 105, 49, 69, 65, 65, 7, 117, 110, 105, 49, 69, 65, 66, 7, 117, 110, 105, 49, 69, 65, 67, 7, 117, 110, 105, 49, 69, 65, 68, 7, 117, 110, 105, 49, 69, 65, 69, 7, 117, 110, 105, 49, 69, 65, 70, 7, 117, 110, 105, 49, 69, 66, 48, 7, 117, 110, 105, 49, 69, 66, 49, 7, 117, 110, 105, 49, 69, 66, 50, 7, 117, 110, 105, 49, 69, 66, 51, 7, 117, 110, 105, 49, 69, 66, 52, 7, 117, 110, 105, 49, 69, 66, 53, 7, 117, 110, 105, 49, 69, 66, 54, 7, 117, 110, 105, 49, 69, 66, 55, 7, 117, 110, 105, 49, 69, 66, 56, 7, 117, 110, 105, 49, 69, 66, 57, 7, 117, 110, 105, 49, 69, 66, 65, 7, 117, 110, 105, 49, 69, 66, 66, 7, 117, 110, 105, 49, 69, 66, 67, 7, 117, 110, 105, 49, 69, 66, 68, 7, 117, 110, 105, 49, 69, 66, 69, 7, 117, 110, 105, 49, 69, 66, 70, 7, 117, 110, 105, 49, 69, 67, 48, 7, 117, 110, 105, 49, 69, 67, 49, 7, 117, 110, 105, 49, 69, 67, 50, 7, 117, 110, 105, 49, 69, 67, 51, 7, 117, 110, 105, 49, 69, 67, 52, 7, 117, 110, 105, 49, 69, 67, 53, 7, 117, 110, 105, 49, 69, 67, 54, 7, 117, 110, 105, 49, 69, 67, 55, 7, 117, 110, 105, 49, 69, 67, 56, 7, 117, 110, 105, 49, 69, 67, 57, 7, 117, 110, 105, 49, 69, 67, 65, 7, 117, 110, 105, 49, 69, 67, 66, 7, 117, 110, 105, 49, 69, 67, 67, 7, 117, 110, 105, 49, 69, 67, 68, 7, 117, 110, 105, 49, 69, 67, 69, 7, 117, 110, 105, 49, 69, 67, 70, 7, 117, 110, 105, 49, 69, 68, 48, 7, 117, 110, 105, 49, 69, 68, 49, 7, 117, 110, 105, 49, 69, 68, 50, 7, 117, 110, 105, 49, 69, 68, 51, 7, 117, 110, 105, 49, 69, 68, 52, 7, 117, 110, 105, 49, 69, 68, 53, 7, 117, 110, 105, 49, 69, 68, 54, 7, 117, 110, 105, 49, 69, 68, 55, 7, 117, 110, 105, 49, 69, 68, 56, 7, 117, 110, 105, 49, 69, 68, 57, 7, 117, 110, 105, 49, 69, 68, 65, 7, 117, 110, 105, 49, 69, 68, 66, 7, 117, 110, 105, 49, 69, 68, 67, 7, 117, 110, 105, 49, 69, 68, 68, 7, 117, 110, 105, 49, 69, 68, 69, 7, 117, 110, 105, 49, 69, 68, 70, 7, 117, 110, 105, 49, 69, 69, 48, 7, 117, 110, 105, 49, 69, 69, 49, 7, 117, 110, 105, 49, 69, 69, 50, 7, 117, 110, 105, 49, 69, 69, 51, 7, 117, 110, 105, 49, 69, 69, 52, 7, 117, 110, 105, 49, 69, 69, 53, 7, 117, 110, 105, 49, 69, 69, 54, 7, 117, 110, 105, 49, 69, 69, 55, 7, 117, 110, 105, 49, 69, 69, 56, 7, 117, 110, 105, 49, 69, 69, 57, 7, 117, 110, 105, 49, 69, 69, 65, 7, 117, 110, 105, 49, 69, 69, 66, 7, 117, 110, 105, 49, 69, 69, 67, 7, 117, 110, 105, 49, 69, 69, 68, 7, 117, 110, 105, 49, 69, 69, 69, 7, 117, 110, 105, 49, 69, 69, 70, 7, 117, 110, 105, 49, 69, 70, 48, 7, 117, 110, 105, 49, 69, 70, 49, 7, 117, 110, 105, 49, 69, 70, 52, 7, 117, 110, 105, 49, 69, 70, 53, 7, 117, 110, 105, 49, 69, 70, 54, 7, 117, 110, 105, 49, 69, 70, 55, 7, 117, 110, 105, 49, 69, 70, 56, 7, 117, 110, 105, 49, 69, 70, 57, 7, 117, 110, 105, 50, 48, 65, 66, 7, 117, 110, 105, 48, 52, 57, 65, 7, 117, 110, 105, 48, 52, 57, 66, 7, 117, 110, 105, 48, 52, 65, 50, 7, 117, 110, 105, 48, 52, 65, 51, 7, 117, 110, 105, 48, 52, 65, 67, 7, 117, 110, 105, 48, 52, 65, 68, 7, 117, 110, 105, 48, 52, 66, 50, 7, 117, 110, 105, 48, 52, 66, 51, 7, 117, 110, 105, 48, 52, 66, 54, 7, 117, 110, 105, 48, 52, 66, 55, 7, 117, 110, 105, 48, 52, 67, 66, 7, 117, 110, 105, 48, 52, 67, 67, 7, 117, 110, 105, 48, 52, 70, 54, 7, 117, 110, 105, 48, 52, 70, 55, 7, 117, 110, 105, 48, 52, 57, 54, 7, 117, 110, 105, 48, 52, 57, 55, 7, 117, 110, 105, 48, 52, 66, 69, 7, 117, 110, 105, 48, 52, 66, 70, 7, 117, 110, 105, 48, 52, 66, 66, 7, 117, 110, 105, 48, 52, 56, 68, 7, 117, 110, 105, 48, 52, 56, 67, 7, 117, 110, 105, 48, 52, 54, 50, 7, 117, 110, 105, 48, 52, 57, 50, 7, 117, 110, 105, 48, 52, 57, 51, 7, 117, 110, 105, 48, 52, 57, 69, 7, 117, 110, 105, 48, 52, 57, 70, 7, 117, 110, 105, 48, 52, 56, 65, 7, 117, 110, 105, 48, 52, 56, 66, 7, 117, 110, 105, 48, 52, 67, 57, 7, 117, 110, 105, 48, 52, 67, 65, 7, 117, 110, 105, 48, 52, 67, 68, 7, 117, 110, 105, 48, 52, 67, 69, 7, 117, 110, 105, 48, 52, 67, 53, 7, 117, 110, 105, 48, 52, 67, 54, 7, 117, 110, 105, 48, 52, 66, 48, 7, 117, 110, 105, 48, 52, 66, 49, 7, 117, 110, 105, 48, 52, 70, 69, 7, 117, 110, 105, 48, 52, 70, 70, 7, 117, 110, 105, 48, 53, 49, 49, 7, 117, 110, 105, 50, 48, 49, 53, 0, 1, 0, 1, 255, 255, 0, 15, 0, 1, 0, 0, 0, 10, 0, 48, 0, 62, 0, 4, 68, 70, 76, 84, 0, 26, 99, 121, 114, 108, 0, 26, 103, 114, 101, 107, 0, 26, 108, 97, 116, 110, 0, 26, 0, 4, 0, 0, 0, 0, 255, 255, 0, 1, 0, 0, 0, 1, 115, 109, 99, 112, 0, 8, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 1, 190, 0, 220, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 112, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 112, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 130, 2, 114, 2, 133, 2, 160, 2, 134, 2, 136, 2, 132, 2, 159, 2, 161, 2, 137, 2, 138, 2, 135, 2, 162, 2, 164, 2, 139, 2, 163, 2, 165, 2, 129, 2, 141, 2, 167, 2, 170, 2, 142, 2, 143, 2, 168, 2, 140, 2, 166, 2, 169, 2, 130, 2, 172, 2, 171, 2, 173, 2, 174, 2, 145, 2, 177, 2, 146, 2, 147, 2, 179, 2, 144, 2, 176, 2, 178, 2, 175, 2, 180, 2, 181, 2, 182, 2, 184, 2, 183, 2, 185, 2, 186, 2, 188, 2, 187, 2, 148, 2, 150, 2, 190, 2, 151, 2, 153, 2, 149, 2, 191, 2, 189, 2, 152, 2, 192, 2, 194, 2, 193, 2, 195, 2, 198, 2, 197, 2, 196, 2, 131, 2, 199, 2, 155, 2, 202, 2, 156, 2, 157, 2, 154, 2, 204, 2, 201, 2, 205, 2, 203, 2, 200, 2, 206, 2, 158, 2, 207, 2, 208, 2, 209, 2, 211, 2, 210, 2, 133, 2, 160, 2, 134, 2, 136, 2, 132, 2, 159, 2, 161, 2, 137, 2, 138, 2, 135, 2, 162, 2, 164, 2, 139, 2, 163, 2, 165, 2, 129, 2, 141, 2, 167, 2, 170, 2, 142, 2, 143, 2, 168, 2, 140, 2, 166, 2, 169, 2, 172, 2, 171, 2, 173, 2, 174, 2, 145, 2, 177, 2, 146, 2, 147, 2, 144, 2, 176, 2, 178, 2, 175, 2, 180, 2, 181, 2, 182, 2, 184, 2, 183, 2, 185, 2, 186, 2, 188, 2, 187, 2, 148, 2, 150, 2, 190, 2, 151, 2, 153, 2, 149, 2, 191, 2, 189, 2, 152, 2, 192, 2, 194, 2, 193, 2, 195, 2, 198, 2, 197, 2, 196, 2, 131, 2, 199, 2, 155, 2, 202, 2, 156, 2, 157, 2, 154, 2, 204, 2, 201, 2, 205, 2, 203, 2, 200, 2, 206, 2, 158, 2, 207, 2, 208, 2, 209, 2, 211, 2, 210, 2, 127, 2, 127, 0, 2, 0, 26, 0, 2, 0, 53, 0, 0, 0, 76, 0, 76, 0, 52, 0, 80, 0, 80, 0, 53, 0, 158, 0, 167, 0, 54, 0, 169, 0, 182, 0, 64, 0, 184, 0, 188, 0, 78, 0, 190, 0, 205, 0, 83, 0, 207, 0, 215, 0, 99, 0, 217, 0, 218, 0, 108, 0, 221, 0, 235, 0, 110, 0, 237, 0, 241, 0, 125, 0, 243, 0, 243, 0, 130, 0, 246, 0, 248, 0, 131, 0, 250, 1, 6, 0, 134, 1, 8, 1, 21, 0, 147, 1, 23, 1, 26, 0, 161, 1, 28, 1, 42, 0, 165, 1, 44, 1, 52, 0, 180, 1, 54, 1, 55, 0, 189, 1, 58, 1, 72, 0, 191, 1, 74, 1, 78, 0, 206, 1, 80, 1, 80, 0, 211, 1, 83, 1, 85, 0, 212, 1, 87, 1, 89, 0, 215, 2, 126, 2, 126, 0, 218, 2, 128, 2, 128, 0, 219, 0, 1, 0, 1, 0, 8, 0, 2, 0, 0, 0, 20, 0, 2, 0, 0, 0, 36, 0, 2, 119, 103, 104, 116, 1, 0, 0, 0, 105, 116, 97, 108, 1, 11, 0, 1, 0, 4, 0, 20, 0, 3, 0, 0, 0, 2, 1, 14, 1, 144, 0, 0, 2, 188, 0, 0, 0, 3, 0, 1, 0, 2, 1, 17, 0, 0, 0, 0, 0, 1, 0, 0) +font_name = "Roboto Mono" +style_name = "Regular" +font_style = 4 +msdf_pixel_range = 8 +fixed_size = 14 +cache/0/16/0/ascent = 15.0 +cache/0/16/0/descent = 4.0 +cache/0/16/0/underline_position = 1.375 +cache/0/16/0/underline_thickness = 0.6875 +cache/0/16/0/scale = 1.0 +cache/0/16/0/textures/0/offsets = PackedInt32Array(8, 0, 248, 4, 195, 4, 61, 15) +cache/0/16/0/textures/0/image = SubResource("Image_xbauv") +cache/0/16/0/glyphs/1/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/1/offset = Vector2(-1, -1) +cache/0/16/0/glyphs/1/size = Vector2(2, 2) +cache/0/16/0/glyphs/1/uv_rect = Rect2(1, 1, 2, 2) +cache/0/16/0/glyphs/1/texture_idx = 0 +cache/0/16/0/glyphs/34/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/34/offset = Vector2(-1, -9) +cache/0/16/0/glyphs/34/size = Vector2(10, 13) +cache/0/16/0/glyphs/34/uv_rect = Rect2(1, 5, 10, 13) +cache/0/16/0/glyphs/34/texture_idx = 0 +cache/0/16/0/glyphs/31/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/31/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/31/size = Vector2(10, 13) +cache/0/16/0/glyphs/31/uv_rect = Rect2(13, 5, 10, 13) +cache/0/16/0/glyphs/31/texture_idx = 0 +cache/0/16/0/glyphs/22/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/22/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/22/size = Vector2(10, 13) +cache/0/16/0/glyphs/22/uv_rect = Rect2(25, 5, 10, 13) +cache/0/16/0/glyphs/22/texture_idx = 0 +cache/0/16/0/glyphs/41/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/41/offset = Vector2(0, -9) +cache/0/16/0/glyphs/41/size = Vector2(9, 10) +cache/0/16/0/glyphs/41/uv_rect = Rect2(37, 5, 9, 10) +cache/0/16/0/glyphs/41/texture_idx = 0 +cache/0/16/0/glyphs/36/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/36/offset = Vector2(0, -12) +cache/0/16/0/glyphs/36/size = Vector2(9, 13) +cache/0/16/0/glyphs/36/uv_rect = Rect2(48, 5, 9, 13) +cache/0/16/0/glyphs/36/texture_idx = 0 +cache/0/16/0/glyphs/47/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/47/offset = Vector2(-1, -11) +cache/0/16/0/glyphs/47/size = Vector2(10, 12) +cache/0/16/0/glyphs/47/uv_rect = Rect2(59, 5, 10, 12) +cache/0/16/0/glyphs/47/texture_idx = 0 +cache/0/16/0/glyphs/58/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/58/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/58/size = Vector2(10, 13) +cache/0/16/0/glyphs/58/uv_rect = Rect2(71, 5, 10, 13) +cache/0/16/0/glyphs/58/texture_idx = 0 +cache/0/16/0/glyphs/96/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/96/offset = Vector2(2, -4) +cache/0/16/0/glyphs/96/size = Vector2(5, 5) +cache/0/16/0/glyphs/96/uv_rect = Rect2(83, 5, 5, 5) +cache/0/16/0/glyphs/96/texture_idx = 0 +cache/0/16/0/glyphs/57/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/57/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/57/size = Vector2(9, 13) +cache/0/16/0/glyphs/57/uv_rect = Rect2(90, 5, 9, 13) +cache/0/16/0/glyphs/57/texture_idx = 0 +cache/0/16/0/glyphs/54/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/54/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/54/size = Vector2(10, 13) +cache/0/16/0/glyphs/54/uv_rect = Rect2(101, 5, 10, 13) +cache/0/16/0/glyphs/54/texture_idx = 0 +cache/0/16/0/glyphs/268435487/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/268435487/offset = Vector2(0, -12) +cache/0/16/0/glyphs/268435487/size = Vector2(9, 13) +cache/0/16/0/glyphs/268435487/uv_rect = Rect2(113, 5, 9, 13) +cache/0/16/0/glyphs/268435487/texture_idx = 0 +cache/0/16/0/glyphs/402653206/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/402653206/offset = Vector2(0, -12) +cache/0/16/0/glyphs/402653206/size = Vector2(10, 13) +cache/0/16/0/glyphs/402653206/uv_rect = Rect2(124, 5, 10, 13) +cache/0/16/0/glyphs/402653206/texture_idx = 0 +cache/0/16/0/glyphs/134217769/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/134217769/offset = Vector2(0, -9) +cache/0/16/0/glyphs/134217769/size = Vector2(9, 10) +cache/0/16/0/glyphs/134217769/uv_rect = Rect2(136, 5, 9, 10) +cache/0/16/0/glyphs/134217769/texture_idx = 0 +cache/0/16/0/glyphs/402653220/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/402653220/offset = Vector2(1, -12) +cache/0/16/0/glyphs/402653220/size = Vector2(9, 13) +cache/0/16/0/glyphs/402653220/uv_rect = Rect2(147, 5, 9, 13) +cache/0/16/0/glyphs/402653220/texture_idx = 0 +cache/0/16/0/glyphs/268435514/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/268435514/offset = Vector2(0, -12) +cache/0/16/0/glyphs/268435514/size = Vector2(10, 13) +cache/0/16/0/glyphs/268435514/uv_rect = Rect2(158, 5, 10, 13) +cache/0/16/0/glyphs/268435514/texture_idx = 0 +cache/0/16/0/glyphs/402653185/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/402653185/offset = Vector2(-1, -1) +cache/0/16/0/glyphs/402653185/size = Vector2(2, 2) +cache/0/16/0/glyphs/402653185/uv_rect = Rect2(5, 1, 2, 2) +cache/0/16/0/glyphs/402653185/texture_idx = 0 +cache/0/16/0/glyphs/134217786/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/134217786/offset = Vector2(-1, -12) +cache/0/16/0/glyphs/134217786/size = Vector2(10, 13) +cache/0/16/0/glyphs/134217786/uv_rect = Rect2(170, 5, 10, 13) +cache/0/16/0/glyphs/134217786/texture_idx = 0 +cache/0/16/0/glyphs/402653280/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/402653280/offset = Vector2(3, -4) +cache/0/16/0/glyphs/402653280/size = Vector2(5, 5) +cache/0/16/0/glyphs/402653280/uv_rect = Rect2(182, 5, 5, 5) +cache/0/16/0/glyphs/402653280/texture_idx = 0 +cache/0/16/0/glyphs/268435552/advance = Vector2(8.40625, 18.4688) +cache/0/16/0/glyphs/268435552/offset = Vector2(2, -4) +cache/0/16/0/glyphs/268435552/size = Vector2(5, 5) +cache/0/16/0/glyphs/268435552/uv_rect = Rect2(189, 5, 5, 5) +cache/0/16/0/glyphs/268435552/texture_idx = 0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/14/0/ascent = 15.0 +cache/0/14/0/descent = 4.0 +cache/0/14/0/underline_position = 1.375 +cache/0/14/0/underline_thickness = 0.6875 +cache/0/14/0/scale = 1.0 +cache/0/14/0/textures/0/offsets = PackedInt32Array(8, 0, 248, 4, 195, 4, 61, 15) +cache/0/14/0/textures/0/image = SubResource("Image_pi2b6") +cache/0/14/0/glyphs/1/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/1/offset = Vector2(-1, -1) +cache/0/14/0/glyphs/1/size = Vector2(2, 2) +cache/0/14/0/glyphs/1/uv_rect = Rect2(1, 1, 2, 2) +cache/0/14/0/glyphs/1/texture_idx = 0 +cache/0/14/0/glyphs/34/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/34/offset = Vector2(-1, -9) +cache/0/14/0/glyphs/34/size = Vector2(10, 13) +cache/0/14/0/glyphs/34/uv_rect = Rect2(1, 5, 10, 13) +cache/0/14/0/glyphs/34/texture_idx = 0 +cache/0/14/0/glyphs/31/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/31/offset = Vector2(-1, -12) +cache/0/14/0/glyphs/31/size = Vector2(10, 13) +cache/0/14/0/glyphs/31/uv_rect = Rect2(13, 5, 10, 13) +cache/0/14/0/glyphs/31/texture_idx = 0 +cache/0/14/0/glyphs/22/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/22/offset = Vector2(-1, -12) +cache/0/14/0/glyphs/22/size = Vector2(10, 13) +cache/0/14/0/glyphs/22/uv_rect = Rect2(25, 5, 10, 13) +cache/0/14/0/glyphs/22/texture_idx = 0 +cache/0/14/0/glyphs/41/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/41/offset = Vector2(0, -9) +cache/0/14/0/glyphs/41/size = Vector2(9, 10) +cache/0/14/0/glyphs/41/uv_rect = Rect2(37, 5, 9, 10) +cache/0/14/0/glyphs/41/texture_idx = 0 +cache/0/14/0/glyphs/36/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/36/offset = Vector2(0, -12) +cache/0/14/0/glyphs/36/size = Vector2(9, 13) +cache/0/14/0/glyphs/36/uv_rect = Rect2(48, 5, 9, 13) +cache/0/14/0/glyphs/36/texture_idx = 0 +cache/0/14/0/glyphs/47/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/47/offset = Vector2(-1, -11) +cache/0/14/0/glyphs/47/size = Vector2(10, 12) +cache/0/14/0/glyphs/47/uv_rect = Rect2(59, 5, 10, 12) +cache/0/14/0/glyphs/47/texture_idx = 0 +cache/0/14/0/glyphs/58/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/58/offset = Vector2(-1, -12) +cache/0/14/0/glyphs/58/size = Vector2(10, 13) +cache/0/14/0/glyphs/58/uv_rect = Rect2(71, 5, 10, 13) +cache/0/14/0/glyphs/58/texture_idx = 0 +cache/0/14/0/glyphs/96/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/96/offset = Vector2(2, -4) +cache/0/14/0/glyphs/96/size = Vector2(5, 5) +cache/0/14/0/glyphs/96/uv_rect = Rect2(83, 5, 5, 5) +cache/0/14/0/glyphs/96/texture_idx = 0 +cache/0/14/0/glyphs/57/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/57/offset = Vector2(-1, -12) +cache/0/14/0/glyphs/57/size = Vector2(9, 13) +cache/0/14/0/glyphs/57/uv_rect = Rect2(90, 5, 9, 13) +cache/0/14/0/glyphs/57/texture_idx = 0 +cache/0/14/0/glyphs/54/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/54/offset = Vector2(-1, -12) +cache/0/14/0/glyphs/54/size = Vector2(10, 13) +cache/0/14/0/glyphs/54/uv_rect = Rect2(101, 5, 10, 13) +cache/0/14/0/glyphs/54/texture_idx = 0 +cache/0/14/0/glyphs/268435487/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/268435487/offset = Vector2(0, -12) +cache/0/14/0/glyphs/268435487/size = Vector2(9, 13) +cache/0/14/0/glyphs/268435487/uv_rect = Rect2(113, 5, 9, 13) +cache/0/14/0/glyphs/268435487/texture_idx = 0 +cache/0/14/0/glyphs/402653206/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/402653206/offset = Vector2(0, -12) +cache/0/14/0/glyphs/402653206/size = Vector2(10, 13) +cache/0/14/0/glyphs/402653206/uv_rect = Rect2(124, 5, 10, 13) +cache/0/14/0/glyphs/402653206/texture_idx = 0 +cache/0/14/0/glyphs/134217769/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/134217769/offset = Vector2(0, -9) +cache/0/14/0/glyphs/134217769/size = Vector2(9, 10) +cache/0/14/0/glyphs/134217769/uv_rect = Rect2(136, 5, 9, 10) +cache/0/14/0/glyphs/134217769/texture_idx = 0 +cache/0/14/0/glyphs/402653220/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/402653220/offset = Vector2(1, -12) +cache/0/14/0/glyphs/402653220/size = Vector2(9, 13) +cache/0/14/0/glyphs/402653220/uv_rect = Rect2(147, 5, 9, 13) +cache/0/14/0/glyphs/402653220/texture_idx = 0 +cache/0/14/0/glyphs/268435514/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/268435514/offset = Vector2(0, -12) +cache/0/14/0/glyphs/268435514/size = Vector2(10, 13) +cache/0/14/0/glyphs/268435514/uv_rect = Rect2(158, 5, 10, 13) +cache/0/14/0/glyphs/268435514/texture_idx = 0 +cache/0/14/0/glyphs/402653185/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/402653185/offset = Vector2(-1, -1) +cache/0/14/0/glyphs/402653185/size = Vector2(2, 2) +cache/0/14/0/glyphs/402653185/uv_rect = Rect2(5, 1, 2, 2) +cache/0/14/0/glyphs/402653185/texture_idx = 0 +cache/0/14/0/glyphs/134217786/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/134217786/offset = Vector2(-1, -12) +cache/0/14/0/glyphs/134217786/size = Vector2(10, 13) +cache/0/14/0/glyphs/134217786/uv_rect = Rect2(170, 5, 10, 13) +cache/0/14/0/glyphs/134217786/texture_idx = 0 +cache/0/14/0/glyphs/402653280/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/402653280/offset = Vector2(3, -4) +cache/0/14/0/glyphs/402653280/size = Vector2(5, 5) +cache/0/14/0/glyphs/402653280/uv_rect = Rect2(182, 5, 5, 5) +cache/0/14/0/glyphs/402653280/texture_idx = 0 +cache/0/14/0/glyphs/268435552/advance = Vector2(8.40625, 18.4688) +cache/0/14/0/glyphs/268435552/offset = Vector2(2, -4) +cache/0/14/0/glyphs/268435552/size = Vector2(5, 5) +cache/0/14/0/glyphs/268435552/uv_rect = Rect2(189, 5, 5, 5) +cache/0/14/0/glyphs/268435552/texture_idx = 0 +cache/0/14/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/14/0/kerning_overrides/14/0 = Vector2(0, 0) + +[sub_resource type="FontFile" id="FontFile_ia6yb"] +data = PackedByteArray(0, 1, 0, 0, 0, 14, 0, 128, 0, 3, 0, 96, 71, 83, 85, 66, 54, 189, 53, 203, 0, 1, 80, 244, 0, 0, 2, 168, 79, 83, 47, 50, 152, 227, 193, 84, 0, 1, 35, 212, 0, 0, 0, 96, 83, 84, 65, 84, 229, 220, 204, 44, 0, 1, 83, 156, 0, 0, 0, 68, 99, 109, 97, 112, 171, 156, 209, 185, 0, 1, 36, 52, 0, 0, 7, 96, 103, 97, 115, 112, 0, 0, 0, 16, 0, 1, 80, 236, 0, 0, 0, 8, 103, 108, 121, 102, 206, 236, 63, 58, 0, 0, 0, 236, 0, 1, 18, 204, 104, 101, 97, 100, 1, 54, 156, 14, 0, 1, 27, 168, 0, 0, 0, 54, 104, 104, 101, 97, 10, 177, 1, 42, 0, 1, 35, 176, 0, 0, 0, 36, 104, 109, 116, 120, 206, 14, 221, 24, 0, 1, 27, 224, 0, 0, 7, 208, 108, 111, 99, 97, 131, 49, 198, 248, 0, 1, 19, 216, 0, 0, 7, 208, 109, 97, 120, 112, 4, 6, 1, 58, 0, 1, 19, 184, 0, 0, 0, 32, 110, 97, 109, 101, 93, 25, 135, 121, 0, 1, 43, 156, 0, 0, 3, 148, 112, 111, 115, 116, 151, 185, 175, 6, 0, 1, 47, 48, 0, 0, 33, 188, 112, 114, 101, 112, 104, 6, 140, 133, 0, 1, 43, 148, 0, 0, 0, 7, 0, 2, 0, 28, 0, 0, 4, 204, 5, 176, 0, 7, 0, 10, 0, 0, 65, 19, 33, 1, 35, 1, 33, 19, 55, 19, 19, 3, 79, 85, 1, 40, 254, 44, 255, 254, 35, 1, 40, 86, 69, 153, 149, 1, 48, 254, 208, 5, 176, 250, 80, 1, 48, 239, 2, 24, 253, 232, 0, 3, 0, 129, 0, 0, 4, 154, 5, 176, 0, 27, 0, 42, 0, 57, 0, 0, 115, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 55, 52, 38, 39, 38, 38, 35, 33, 1, 33, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 17, 17, 51, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 129, 2, 19, 120, 192, 67, 67, 72, 29, 30, 29, 85, 72, 37, 61, 24, 44, 45, 1, 75, 69, 69, 195, 119, 254, 23, 1, 26, 1, 6, 59, 86, 27, 27, 25, 33, 32, 29, 87, 55, 250, 208, 68, 101, 30, 23, 23, 27, 25, 30, 98, 64, 54, 54, 54, 160, 105, 55, 103, 44, 41, 62, 20, 1, 14, 40, 24, 44, 117, 66, 102, 150, 49, 49, 48, 252, 210, 1, 30, 28, 27, 78, 49, 47, 76, 27, 24, 28, 2, 106, 1, 126, 1, 28, 31, 22, 66, 44, 42, 66, 23, 29, 29, 1, 0, 1, 0, 79, 255, 235, 4, 119, 5, 197, 0, 63, 0, 0, 65, 33, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 33, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 118, 254, 231, 4, 36, 31, 31, 88, 55, 41, 67, 27, 25, 39, 14, 20, 19, 12, 13, 17, 57, 41, 24, 57, 33, 62, 89, 30, 29, 31, 4, 1, 24, 10, 76, 66, 66, 187, 120, 81, 141, 59, 66, 104, 32, 28, 28, 31, 29, 30, 87, 56, 61, 153, 90, 114, 188, 68, 68, 81, 1, 200, 66, 94, 30, 30, 28, 19, 20, 18, 54, 35, 51, 137, 87, 198, 64, 111, 46, 59, 89, 24, 14, 14, 33, 32, 33, 98, 65, 114, 182, 63, 63, 68, 41, 38, 45, 130, 83, 68, 159, 88, 196, 94, 168, 70, 70, 116, 41, 44, 47, 67, 62, 62, 176, 0, 2, 0, 125, 0, 0, 4, 116, 5, 176, 0, 21, 0, 43, 0, 0, 115, 33, 50, 54, 55, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 33, 5, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 125, 1, 135, 97, 171, 71, 61, 102, 38, 40, 44, 47, 43, 37, 99, 63, 72, 176, 101, 254, 135, 1, 27, 94, 51, 87, 36, 47, 71, 22, 18, 19, 19, 18, 22, 61, 38, 37, 90, 52, 108, 48, 45, 38, 113, 67, 75, 180, 101, 120, 105, 186, 77, 63, 107, 37, 45, 49, 228, 23, 21, 28, 88, 56, 47, 113, 63, 122, 67, 115, 47, 54, 81, 26, 25, 26, 0, 1, 0, 147, 0, 0, 4, 104, 5, 176, 0, 11, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 33, 53, 33, 17, 4, 3, 253, 170, 2, 184, 252, 46, 3, 213, 253, 69, 2, 126, 222, 1, 111, 229, 250, 80, 227, 1, 155, 0, 0, 1, 0, 149, 0, 0, 4, 109, 5, 176, 0, 9, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 33, 17, 4, 31, 253, 144, 2, 190, 252, 40, 1, 26, 2, 91, 228, 1, 140, 229, 250, 80, 2, 91, 0, 1, 0, 87, 255, 236, 4, 108, 5, 196, 0, 67, 0, 0, 101, 3, 33, 21, 51, 3, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 33, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 108, 1, 253, 247, 241, 1, 11, 43, 28, 28, 64, 33, 54, 85, 32, 19, 31, 12, 19, 21, 15, 14, 18, 55, 34, 26, 60, 32, 59, 85, 28, 25, 29, 7, 1, 18, 11, 71, 63, 63, 183, 123, 80, 144, 61, 52, 87, 33, 35, 38, 39, 38, 33, 95, 58, 59, 141, 80, 92, 160, 65, 64, 94, 170, 2, 62, 210, 254, 248, 13, 23, 9, 9, 10, 1, 33, 32, 19, 49, 29, 50, 130, 79, 200, 63, 108, 44, 57, 84, 26, 19, 20, 31, 31, 28, 82, 53, 105, 168, 59, 58, 62, 44, 43, 38, 104, 65, 73, 179, 104, 198, 109, 186, 74, 67, 104, 36, 35, 37, 34, 28, 27, 68, 0, 1, 0, 123, 0, 0, 4, 68, 5, 176, 0, 11, 0, 0, 97, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 4, 68, 254, 234, 254, 100, 254, 233, 1, 23, 1, 156, 5, 176, 253, 171, 2, 85, 250, 80, 2, 119, 253, 137, 0, 1, 0, 193, 0, 0, 4, 11, 5, 176, 0, 11, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 33, 53, 193, 1, 21, 254, 235, 3, 74, 254, 228, 1, 28, 5, 176, 227, 252, 21, 226, 226, 3, 235, 227, 0, 0, 1, 0, 111, 255, 236, 4, 76, 5, 176, 0, 27, 0, 0, 65, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 3, 3, 50, 31, 28, 28, 80, 48, 60, 84, 26, 20, 20, 254, 230, 1, 72, 65, 64, 180, 110, 104, 181, 67, 67, 77, 1, 1, 5, 176, 252, 15, 51, 89, 32, 32, 37, 32, 33, 27, 78, 52, 113, 168, 55, 56, 56, 68, 62, 62, 171, 104, 3, 241, 0, 0, 1, 0, 129, 0, 0, 4, 235, 5, 176, 0, 12, 0, 0, 65, 1, 33, 1, 1, 33, 1, 7, 17, 33, 17, 33, 17, 2, 53, 1, 104, 1, 78, 254, 4, 1, 234, 254, 168, 254, 158, 132, 254, 230, 1, 26, 2, 86, 253, 170, 3, 44, 2, 132, 254, 23, 178, 2, 155, 250, 80, 1, 173, 0, 0, 1, 0, 150, 0, 0, 4, 90, 5, 176, 0, 5, 0, 0, 101, 17, 33, 17, 33, 53, 1, 176, 254, 230, 3, 196, 227, 4, 205, 250, 80, 227, 0, 1, 0, 127, 0, 0, 4, 96, 5, 176, 0, 14, 0, 0, 65, 33, 17, 33, 17, 3, 19, 51, 19, 3, 17, 33, 17, 33, 3, 1, 220, 254, 163, 1, 2, 12, 171, 139, 191, 12, 1, 2, 254, 163, 157, 5, 176, 250, 80, 1, 175, 2, 142, 253, 163, 2, 120, 253, 87, 254, 81, 5, 176, 253, 221, 0, 0, 1, 0, 123, 0, 0, 4, 67, 5, 176, 0, 9, 0, 0, 97, 17, 33, 3, 1, 33, 17, 33, 17, 1, 4, 67, 254, 230, 1, 254, 110, 254, 229, 1, 27, 1, 149, 5, 176, 252, 89, 3, 167, 250, 80, 3, 171, 252, 85, 0, 0, 2, 0, 80, 255, 236, 4, 123, 5, 196, 0, 37, 0, 75, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 1, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 4, 123, 37, 35, 32, 89, 59, 59, 147, 84, 83, 142, 57, 58, 89, 31, 32, 33, 29, 28, 31, 92, 58, 59, 144, 85, 80, 139, 58, 64, 100, 34, 32, 34, 254, 227, 11, 11, 14, 47, 34, 27, 70, 42, 44, 69, 27, 29, 43, 11, 10, 8, 9, 10, 13, 47, 34, 25, 63, 39, 41, 67, 27, 34, 50, 15, 12, 11, 2, 109, 212, 99, 176, 74, 65, 108, 38, 40, 43, 42, 39, 40, 112, 69, 73, 172, 96, 212, 90, 162, 69, 75, 119, 42, 40, 44, 39, 35, 40, 120, 72, 72, 169, 1, 52, 214, 54, 100, 42, 54, 85, 28, 23, 24, 26, 24, 27, 87, 53, 42, 98, 53, 214, 56, 102, 43, 56, 84, 28, 19, 20, 22, 20, 27, 85, 54, 43, 101, 0, 2, 0, 149, 0, 0, 4, 142, 5, 176, 0, 16, 0, 31, 0, 0, 65, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 17, 33, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 1, 174, 217, 119, 192, 68, 67, 73, 73, 67, 68, 192, 119, 254, 14, 1, 25, 217, 60, 88, 30, 29, 29, 29, 29, 30, 88, 60, 2, 22, 68, 61, 60, 166, 98, 105, 172, 62, 61, 69, 250, 80, 2, 250, 1, 210, 38, 33, 33, 88, 51, 44, 81, 31, 31, 36, 0, 2, 0, 85, 254, 255, 4, 193, 5, 196, 0, 40, 0, 78, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 1, 55, 39, 54, 54, 55, 54, 54, 1, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 4, 132, 22, 22, 30, 104, 69, 61, 150, 86, 86, 146, 59, 65, 94, 28, 24, 25, 26, 25, 28, 91, 61, 60, 148, 88, 39, 73, 35, 1, 21, 181, 241, 39, 61, 22, 28, 29, 254, 228, 10, 10, 14, 49, 35, 28, 70, 43, 42, 67, 25, 35, 46, 12, 8, 7, 6, 6, 10, 45, 38, 26, 68, 43, 45, 73, 28, 29, 46, 12, 14, 12, 2, 65, 252, 77, 141, 62, 88, 142, 49, 42, 46, 46, 42, 46, 131, 81, 65, 153, 83, 252, 72, 137, 61, 70, 122, 44, 43, 48, 10, 9, 255, 0, 161, 218, 37, 89, 49, 63, 142, 1, 73, 254, 40, 79, 37, 49, 86, 29, 21, 25, 24, 22, 29, 88, 54, 35, 76, 38, 254, 45, 83, 37, 64, 103, 33, 23, 24, 26, 23, 27, 77, 47, 45, 108, 0, 0, 2, 0, 131, 0, 0, 4, 176, 5, 176, 0, 20, 0, 35, 0, 0, 65, 1, 33, 53, 1, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 17, 33, 17, 53, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 2, 113, 1, 18, 1, 45, 254, 199, 60, 97, 35, 34, 37, 75, 69, 70, 196, 121, 254, 24, 1, 25, 207, 58, 90, 31, 35, 35, 27, 26, 31, 99, 65, 2, 32, 253, 224, 13, 2, 89, 27, 74, 50, 49, 125, 78, 108, 164, 55, 55, 57, 250, 80, 2, 32, 228, 1, 200, 28, 26, 29, 89, 58, 48, 78, 28, 35, 37, 0, 1, 0, 89, 255, 237, 4, 140, 5, 196, 0, 73, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 33, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 119, 32, 30, 30, 87, 56, 63, 105, 37, 38, 42, 2, 254, 236, 87, 75, 79, 213, 109, 111, 188, 68, 68, 77, 102, 86, 57, 136, 75, 70, 111, 39, 39, 41, 31, 30, 30, 87, 56, 61, 91, 31, 30, 31, 2, 1, 18, 76, 68, 68, 189, 114, 110, 188, 69, 69, 78, 59, 58, 58, 183, 121, 78, 105, 33, 32, 27, 1, 124, 39, 65, 23, 23, 26, 28, 30, 30, 94, 66, 113, 168, 62, 63, 65, 53, 52, 51, 149, 96, 111, 170, 64, 39, 60, 21, 19, 44, 27, 26, 66, 41, 39, 67, 25, 24, 27, 33, 29, 30, 82, 49, 98, 164, 60, 59, 66, 57, 53, 53, 150, 92, 80, 136, 56, 56, 94, 33, 21, 49, 29, 30, 68, 0, 0, 1, 0, 27, 0, 0, 4, 177, 5, 176, 0, 7, 0, 0, 65, 53, 33, 21, 33, 17, 33, 17, 4, 177, 251, 106, 1, 187, 1, 26, 4, 203, 229, 229, 251, 53, 4, 203, 0, 1, 0, 126, 255, 236, 4, 78, 5, 176, 0, 29, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 3, 33, 3, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 77, 254, 233, 1, 1, 28, 28, 26, 79, 51, 47, 72, 25, 27, 27, 1, 1, 254, 231, 1, 69, 63, 63, 177, 110, 117, 183, 64, 63, 67, 5, 176, 252, 59, 71, 108, 36, 35, 35, 33, 33, 36, 110, 73, 3, 197, 252, 59, 122, 191, 65, 65, 68, 68, 66, 65, 190, 122, 0, 0, 1, 0, 31, 0, 0, 4, 174, 5, 176, 0, 8, 0, 0, 97, 33, 1, 33, 3, 7, 39, 3, 33, 1, 215, 1, 30, 1, 185, 254, 202, 248, 27, 25, 247, 254, 202, 5, 176, 252, 74, 99, 98, 3, 183, 0, 0, 1, 0, 26, 0, 0, 4, 183, 5, 176, 0, 18, 0, 0, 115, 51, 19, 55, 23, 19, 51, 19, 33, 3, 7, 39, 3, 35, 3, 7, 39, 3, 33, 226, 254, 122, 11, 11, 127, 254, 202, 254, 254, 99, 7, 9, 122, 201, 115, 9, 7, 97, 254, 255, 3, 18, 74, 74, 252, 238, 5, 176, 252, 208, 61, 60, 3, 49, 252, 213, 60, 57, 3, 46, 0, 1, 0, 30, 0, 0, 4, 199, 5, 176, 0, 11, 0, 0, 65, 3, 33, 1, 1, 33, 1, 1, 33, 1, 1, 33, 2, 112, 255, 254, 184, 1, 153, 254, 92, 1, 76, 1, 10, 1, 11, 1, 72, 254, 92, 1, 154, 254, 182, 3, 166, 2, 10, 253, 46, 253, 34, 2, 18, 253, 238, 2, 222, 2, 210, 0, 0, 1, 0, 33, 0, 0, 4, 200, 5, 176, 0, 8, 0, 0, 65, 1, 33, 1, 19, 33, 19, 1, 33, 2, 116, 254, 225, 254, 204, 1, 195, 1, 1, 24, 1, 1, 202, 254, 203, 3, 17, 2, 159, 252, 84, 253, 252, 1, 248, 3, 184, 0, 0, 1, 0, 89, 0, 0, 4, 129, 5, 176, 0, 9, 0, 0, 101, 1, 39, 33, 21, 33, 1, 21, 33, 53, 1, 175, 2, 193, 1, 251, 236, 2, 192, 253, 62, 4, 40, 227, 4, 38, 167, 229, 251, 225, 172, 227, 0, 2, 0, 115, 255, 236, 4, 75, 4, 78, 0, 53, 0, 73, 0, 0, 97, 33, 53, 38, 38, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 33, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 39, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 21, 6, 6, 7, 6, 6, 3, 49, 1, 26, 21, 22, 70, 62, 62, 169, 98, 109, 169, 58, 59, 61, 1, 22, 17, 18, 20, 64, 44, 50, 75, 25, 24, 24, 155, 120, 185, 63, 70, 70, 56, 50, 50, 139, 83, 51, 88, 37, 36, 60, 23, 5, 14, 255, 39, 59, 20, 20, 21, 28, 29, 29, 92, 65, 142, 12, 42, 29, 29, 72, 17, 41, 114, 87, 1, 208, 94, 143, 47, 47, 48, 55, 47, 47, 124, 69, 29, 48, 17, 19, 21, 25, 23, 22, 61, 38, 64, 43, 41, 45, 139, 90, 70, 119, 43, 43, 48, 19, 17, 16, 44, 25, 29, 52, 175, 19, 16, 17, 49, 29, 37, 63, 23, 22, 25, 186, 21, 41, 16, 16, 20, 0, 0, 2, 0, 147, 255, 236, 4, 92, 6, 0, 0, 35, 0, 67, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 17, 33, 17, 51, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 37, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 4, 92, 35, 36, 23, 60, 37, 46, 117, 70, 51, 87, 37, 26, 46, 20, 254, 234, 250, 13, 17, 38, 22, 41, 103, 63, 69, 115, 46, 51, 75, 23, 21, 22, 254, 234, 7, 8, 10, 39, 31, 22, 60, 37, 43, 67, 25, 21, 31, 12, 9, 22, 13, 27, 76, 50, 37, 58, 23, 35, 35, 11, 9, 8, 2, 18, 21, 98, 172, 69, 43, 73, 26, 34, 36, 21, 21, 14, 39, 23, 2, 40, 250, 0, 115, 22, 37, 15, 30, 31, 35, 33, 35, 106, 65, 59, 139, 99, 21, 42, 78, 33, 45, 71, 22, 16, 18, 20, 19, 15, 41, 25, 1, 175, 19, 33, 13, 27, 28, 17, 17, 27, 65, 41, 35, 80, 0, 1, 0, 117, 255, 235, 4, 60, 4, 78, 0, 51, 0, 0, 101, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 33, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 39, 33, 22, 6, 7, 6, 6, 2, 108, 67, 87, 25, 26, 20, 21, 26, 25, 86, 66, 45, 76, 27, 27, 28, 2, 1, 6, 2, 68, 61, 62, 170, 100, 125, 189, 64, 64, 64, 65, 64, 63, 190, 126, 93, 167, 63, 63, 73, 2, 254, 250, 2, 31, 28, 28, 74, 202, 54, 45, 44, 117, 63, 30, 62, 116, 45, 45, 54, 31, 26, 26, 72, 40, 96, 155, 55, 54, 60, 86, 74, 74, 199, 114, 30, 114, 199, 74, 74, 85, 59, 52, 52, 144, 84, 38, 62, 22, 22, 24, 0, 2, 0, 112, 255, 236, 4, 56, 6, 0, 0, 23, 0, 43, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 23, 51, 17, 33, 17, 38, 38, 35, 34, 6, 7, 6, 6, 5, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 17, 6, 6, 35, 34, 38, 39, 38, 38, 112, 58, 55, 54, 157, 99, 91, 138, 51, 14, 251, 254, 233, 50, 129, 85, 101, 157, 55, 55, 57, 1, 22, 24, 26, 26, 83, 59, 71, 94, 28, 28, 95, 72, 59, 82, 26, 26, 23, 2, 37, 21, 118, 201, 73, 73, 83, 70, 63, 113, 6, 0, 253, 217, 56, 61, 80, 73, 73, 204, 144, 21, 68, 119, 45, 44, 51, 61, 55, 254, 74, 54, 62, 50, 44, 43, 117, 0, 0, 2, 0, 112, 255, 236, 4, 104, 4, 78, 0, 34, 0, 48, 0, 0, 69, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 39, 53, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 19, 50, 22, 23, 22, 22, 21, 21, 33, 54, 54, 55, 54, 54, 2, 154, 157, 230, 53, 139, 48, 154, 82, 58, 98, 38, 37, 44, 14, 2, 222, 66, 63, 64, 183, 117, 113, 192, 70, 70, 78, 79, 73, 73, 204, 92, 53, 81, 28, 28, 32, 254, 56, 10, 40, 30, 29, 78, 20, 122, 75, 150, 62, 62, 36, 33, 32, 79, 65, 3, 118, 119, 197, 70, 70, 77, 82, 74, 74, 205, 124, 40, 109, 191, 70, 71, 82, 3, 129, 33, 28, 29, 78, 44, 22, 53, 86, 31, 31, 33, 0, 0, 1, 0, 126, 0, 0, 4, 130, 6, 45, 0, 32, 0, 0, 97, 33, 17, 33, 53, 33, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 33, 21, 33, 1, 154, 1, 23, 1, 134, 254, 122, 25, 26, 29, 98, 70, 65, 96, 38, 18, 34, 63, 31, 31, 65, 35, 111, 180, 63, 63, 68, 254, 228, 1, 28, 3, 109, 205, 59, 48, 76, 26, 31, 32, 12, 8, 218, 6, 10, 4, 4, 5, 57, 56, 56, 164, 107, 59, 205, 0, 0, 2, 0, 113, 254, 86, 4, 71, 4, 78, 0, 53, 0, 79, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 35, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 5, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 113, 61, 57, 57, 161, 101, 51, 89, 37, 25, 44, 20, 31, 29, 32, 95, 61, 38, 71, 33, 34, 62, 27, 125, 35, 98, 55, 55, 112, 49, 114, 189, 68, 67, 75, 253, 11, 20, 48, 28, 37, 91, 55, 102, 162, 57, 57, 61, 1, 23, 28, 29, 28, 86, 59, 32, 55, 23, 27, 42, 15, 14, 38, 25, 24, 59, 36, 59, 86, 28, 28, 27, 2, 37, 21, 118, 201, 73, 73, 83, 22, 20, 14, 36, 22, 62, 55, 88, 30, 33, 34, 15, 15, 15, 47, 31, 169, 45, 65, 21, 21, 20, 61, 59, 59, 172, 110, 4, 23, 103, 25, 41, 15, 21, 21, 80, 73, 73, 204, 144, 21, 68, 119, 45, 44, 51, 12, 11, 13, 42, 28, 254, 54, 25, 40, 14, 13, 14, 50, 44, 43, 117, 0, 1, 0, 141, 0, 0, 4, 86, 6, 0, 0, 31, 0, 0, 65, 17, 33, 17, 33, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 33, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 163, 254, 234, 1, 22, 16, 39, 24, 26, 64, 37, 48, 76, 27, 27, 29, 1, 22, 57, 51, 51, 142, 85, 58, 104, 43, 28, 51, 3, 165, 2, 91, 250, 0, 3, 13, 21, 34, 12, 14, 14, 25, 26, 26, 84, 58, 253, 111, 2, 143, 119, 169, 54, 54, 51, 34, 31, 20, 53, 0, 2, 0, 215, 0, 0, 4, 73, 5, 227, 0, 9, 0, 27, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 1, 20, 22, 23, 22, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 6, 6, 215, 1, 52, 254, 204, 3, 114, 254, 219, 254, 211, 23, 21, 21, 59, 36, 74, 87, 87, 74, 36, 59, 21, 21, 23, 4, 58, 227, 253, 139, 226, 226, 3, 88, 1, 21, 32, 55, 19, 20, 22, 83, 65, 65, 83, 22, 19, 20, 55, 0, 0, 2, 0, 223, 254, 75, 3, 113, 5, 227, 0, 29, 0, 41, 0, 0, 65, 21, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 51, 1, 17, 30, 25, 26, 71, 40, 10, 41, 22, 23, 43, 12, 14, 18, 37, 19, 26, 53, 26, 109, 170, 59, 59, 62, 254, 212, 87, 72, 74, 87, 87, 74, 74, 85, 4, 58, 227, 252, 144, 52, 69, 21, 21, 18, 1, 2, 1, 5, 3, 226, 4, 6, 2, 3, 2, 48, 51, 50, 155, 108, 4, 83, 1, 21, 64, 84, 83, 65, 65, 83, 86, 0, 1, 0, 144, 0, 0, 4, 172, 6, 0, 0, 12, 0, 0, 65, 1, 33, 1, 1, 33, 1, 7, 17, 33, 17, 33, 17, 2, 36, 1, 51, 1, 85, 254, 47, 1, 152, 254, 178, 254, 213, 84, 254, 234, 1, 22, 1, 191, 254, 65, 2, 119, 1, 195, 254, 184, 96, 3, 110, 250, 0, 1, 74, 0, 0, 1, 0, 199, 0, 0, 4, 90, 6, 0, 0, 9, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 199, 1, 68, 254, 188, 3, 147, 254, 202, 6, 0, 227, 251, 197, 226, 226, 5, 30, 0, 1, 0, 75, 0, 0, 4, 120, 4, 78, 0, 58, 0, 0, 65, 35, 17, 51, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 52, 53, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 1, 58, 239, 253, 5, 12, 8, 11, 28, 18, 16, 28, 11, 10, 12, 245, 5, 14, 9, 11, 25, 16, 15, 29, 11, 11, 13, 253, 35, 31, 32, 85, 49, 39, 66, 26, 21, 35, 14, 9, 25, 17, 22, 60, 38, 78, 109, 31, 4, 58, 251, 198, 3, 42, 13, 22, 8, 11, 12, 9, 11, 11, 40, 31, 252, 250, 3, 30, 12, 14, 2, 11, 17, 7, 7, 8, 9, 11, 12, 40, 31, 252, 251, 3, 4, 90, 125, 40, 39, 36, 20, 18, 14, 39, 24, 25, 39, 14, 19, 18, 81, 70, 0, 0, 1, 0, 141, 0, 0, 4, 83, 4, 78, 0, 31, 0, 0, 115, 33, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 33, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 39, 35, 141, 1, 23, 14, 34, 21, 26, 67, 40, 48, 76, 27, 27, 29, 1, 22, 55, 49, 50, 136, 82, 64, 114, 48, 28, 50, 21, 17, 252, 3, 1, 22, 36, 13, 18, 18, 19, 24, 24, 83, 64, 253, 106, 2, 154, 118, 165, 53, 52, 48, 36, 34, 20, 50, 30, 150, 0, 2, 0, 103, 255, 235, 4, 100, 4, 78, 0, 25, 0, 51, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 5, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 103, 68, 66, 65, 191, 122, 121, 190, 65, 65, 68, 68, 65, 66, 190, 122, 122, 189, 65, 66, 68, 1, 22, 26, 28, 28, 88, 62, 63, 88, 28, 27, 26, 26, 27, 28, 88, 61, 63, 89, 28, 28, 26, 2, 39, 21, 119, 201, 74, 74, 83, 83, 74, 74, 201, 119, 21, 118, 201, 74, 74, 84, 84, 74, 74, 201, 139, 21, 66, 118, 45, 45, 52, 52, 45, 45, 118, 66, 21, 68, 119, 44, 45, 52, 52, 45, 44, 119, 0, 2, 0, 145, 254, 96, 4, 89, 4, 78, 0, 29, 0, 55, 0, 0, 83, 33, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 39, 33, 1, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 145, 1, 22, 19, 42, 23, 39, 91, 54, 102, 158, 54, 53, 55, 55, 54, 54, 158, 103, 50, 87, 36, 30, 52, 22, 10, 254, 255, 2, 178, 24, 26, 26, 83, 59, 37, 60, 23, 24, 37, 13, 14, 39, 26, 23, 56, 34, 59, 83, 27, 26, 25, 254, 96, 1, 254, 21, 34, 14, 22, 23, 84, 74, 73, 202, 118, 21, 123, 203, 73, 72, 79, 21, 19, 16, 43, 27, 106, 253, 238, 21, 67, 119, 45, 45, 52, 15, 14, 15, 42, 26, 1, 196, 28, 42, 14, 12, 13, 50, 43, 44, 119, 0, 2, 0, 113, 254, 96, 4, 57, 4, 78, 0, 29, 0, 55, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 17, 33, 17, 35, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 5, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 113, 57, 54, 54, 158, 102, 48, 83, 35, 27, 50, 21, 1, 23, 245, 17, 21, 48, 27, 38, 91, 54, 103, 159, 54, 55, 56, 1, 22, 25, 27, 26, 83, 59, 35, 59, 23, 24, 36, 14, 14, 36, 24, 24, 59, 36, 59, 83, 26, 26, 24, 2, 38, 21, 118, 201, 73, 74, 83, 19, 17, 14, 38, 24, 254, 4, 5, 218, 110, 26, 42, 16, 22, 24, 80, 72, 73, 204, 144, 21, 69, 119, 44, 44, 51, 14, 13, 14, 39, 25, 254, 52, 26, 41, 14, 13, 15, 52, 45, 44, 118, 0, 0, 1, 1, 31, 0, 0, 4, 97, 4, 78, 0, 21, 0, 0, 65, 34, 6, 7, 39, 39, 33, 17, 33, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 19, 38, 38, 3, 150, 109, 184, 66, 2, 11, 254, 253, 1, 22, 19, 58, 41, 34, 87, 54, 52, 115, 55, 41, 33, 107, 4, 78, 105, 92, 24, 153, 251, 198, 2, 138, 46, 68, 22, 19, 19, 13, 13, 1, 21, 10, 17, 0, 1, 0, 122, 255, 235, 4, 85, 4, 78, 0, 73, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 33, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 71, 25, 25, 26, 81, 54, 45, 85, 33, 33, 42, 3, 254, 247, 65, 63, 63, 187, 122, 111, 180, 64, 63, 69, 69, 61, 61, 168, 98, 68, 88, 25, 26, 20, 23, 22, 24, 76, 51, 60, 85, 25, 18, 18, 1, 22, 66, 62, 63, 180, 113, 108, 172, 60, 60, 64, 63, 56, 56, 157, 95, 75, 98, 30, 29, 23, 1, 41, 25, 42, 16, 16, 19, 18, 20, 19, 63, 44, 66, 131, 51, 52, 64, 49, 44, 44, 121, 72, 78, 113, 40, 39, 50, 16, 10, 27, 17, 16, 41, 24, 24, 43, 16, 18, 20, 30, 25, 19, 47, 27, 75, 128, 47, 46, 53, 54, 46, 46, 122, 67, 69, 106, 40, 41, 57, 19, 14, 28, 16, 17, 38, 0, 1, 0, 126, 255, 235, 4, 78, 5, 67, 0, 35, 0, 0, 65, 33, 17, 35, 21, 51, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 53, 33, 2, 139, 254, 234, 247, 247, 56, 52, 51, 145, 89, 46, 95, 44, 44, 78, 29, 27, 19, 53, 30, 31, 67, 32, 44, 71, 25, 25, 27, 1, 148, 254, 108, 5, 67, 254, 247, 205, 254, 20, 107, 153, 49, 50, 47, 9, 8, 8, 25, 17, 191, 5, 10, 4, 5, 6, 20, 24, 23, 79, 59, 1, 209, 205, 0, 1, 0, 150, 255, 235, 4, 75, 4, 58, 0, 28, 0, 0, 97, 51, 17, 33, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 3, 79, 252, 254, 233, 13, 36, 23, 27, 71, 44, 49, 68, 21, 21, 19, 254, 234, 55, 50, 50, 140, 84, 92, 155, 55, 4, 58, 253, 9, 26, 42, 15, 17, 18, 24, 28, 27, 90, 66, 2, 130, 253, 128, 123, 175, 56, 57, 52, 92, 81, 0, 1, 0, 72, 0, 0, 4, 133, 4, 58, 0, 8, 0, 0, 97, 33, 1, 33, 3, 7, 39, 3, 33, 1, 229, 1, 5, 1, 155, 254, 222, 237, 15, 15, 238, 254, 222, 4, 58, 253, 5, 76, 76, 2, 251, 0, 0, 1, 0, 27, 0, 0, 4, 158, 4, 58, 0, 18, 0, 0, 115, 51, 19, 55, 23, 19, 51, 19, 35, 3, 7, 39, 3, 35, 3, 7, 39, 3, 35, 221, 244, 115, 22, 23, 119, 244, 194, 255, 80, 14, 19, 117, 186, 117, 19, 13, 81, 254, 2, 66, 110, 110, 253, 190, 4, 58, 253, 130, 105, 103, 2, 128, 253, 125, 103, 103, 2, 131, 0, 1, 0, 89, 0, 0, 4, 162, 4, 58, 0, 11, 0, 0, 65, 3, 33, 1, 1, 33, 19, 19, 33, 1, 1, 33, 2, 124, 234, 254, 213, 1, 106, 254, 136, 1, 45, 247, 249, 1, 44, 254, 136, 1, 107, 254, 213, 2, 232, 1, 82, 253, 237, 253, 217, 1, 98, 254, 158, 2, 39, 2, 19, 0, 0, 1, 0, 52, 254, 75, 4, 205, 4, 58, 0, 27, 0, 0, 65, 50, 54, 55, 54, 54, 55, 1, 33, 3, 7, 39, 3, 33, 1, 7, 6, 6, 7, 6, 6, 35, 34, 38, 35, 7, 22, 22, 1, 56, 84, 123, 43, 43, 57, 18, 2, 37, 254, 205, 247, 41, 30, 248, 254, 208, 1, 202, 64, 12, 17, 18, 18, 51, 33, 16, 53, 17, 34, 36, 59, 254, 75, 56, 41, 41, 96, 41, 4, 220, 253, 132, 108, 110, 2, 122, 251, 244, 119, 22, 24, 24, 24, 41, 3, 212, 10, 10, 0, 1, 0, 118, 0, 0, 4, 111, 4, 58, 0, 9, 0, 0, 101, 1, 53, 33, 21, 33, 1, 21, 33, 53, 1, 242, 2, 100, 252, 46, 2, 80, 253, 162, 3, 249, 223, 2, 180, 167, 226, 253, 84, 172, 223, 0, 0, 3, 0, 141, 255, 235, 4, 65, 5, 197, 0, 25, 0, 42, 0, 59, 0, 0, 65, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 1, 52, 52, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 1, 20, 20, 21, 4, 65, 66, 61, 62, 176, 110, 109, 175, 61, 62, 66, 67, 62, 61, 176, 109, 110, 176, 61, 61, 65, 253, 100, 25, 26, 24, 71, 47, 42, 67, 23, 30, 31, 2, 25, 25, 24, 72, 47, 51, 74, 24, 21, 23, 2, 1, 132, 2, 42, 1, 92, 141, 215, 73, 72, 74, 74, 72, 73, 215, 141, 254, 164, 141, 215, 72, 73, 74, 74, 73, 72, 215, 1, 5, 31, 32, 48, 161, 81, 118, 37, 35, 35, 27, 28, 35, 117, 82, 254, 61, 81, 119, 38, 36, 35, 40, 41, 34, 102, 66, 1, 32, 29, 31, 33, 0, 1, 0, 173, 0, 0, 3, 54, 5, 176, 0, 6, 0, 0, 97, 17, 35, 5, 21, 37, 17, 3, 54, 15, 253, 134, 1, 112, 5, 176, 229, 242, 132, 251, 163, 0, 0, 1, 0, 70, 0, 0, 4, 69, 5, 196, 0, 42, 0, 0, 97, 53, 33, 1, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 33, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 1, 21, 4, 69, 253, 129, 1, 18, 71, 116, 42, 41, 45, 60, 57, 58, 171, 111, 116, 191, 67, 68, 74, 1, 23, 30, 29, 28, 85, 56, 43, 71, 26, 25, 28, 21, 23, 24, 76, 55, 254, 41, 223, 1, 34, 73, 133, 64, 64, 131, 72, 95, 157, 56, 56, 62, 75, 65, 65, 173, 97, 59, 92, 31, 30, 31, 28, 26, 27, 76, 49, 33, 70, 40, 41, 98, 60, 254, 6, 190, 0, 0, 1, 0, 96, 255, 236, 4, 72, 5, 196, 0, 76, 0, 0, 65, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 33, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 1, 165, 151, 57, 91, 33, 32, 34, 29, 28, 29, 86, 54, 48, 80, 29, 30, 32, 254, 234, 83, 69, 69, 177, 93, 108, 187, 68, 68, 78, 28, 29, 29, 89, 61, 52, 80, 27, 27, 28, 71, 64, 64, 180, 108, 100, 173, 64, 64, 73, 1, 22, 32, 28, 27, 73, 42, 51, 77, 25, 25, 25, 25, 25, 27, 87, 60, 3, 82, 216, 26, 27, 27, 84, 59, 47, 76, 26, 29, 30, 29, 26, 25, 71, 42, 106, 156, 51, 52, 51, 57, 55, 54, 160, 102, 58, 104, 44, 43, 68, 22, 25, 69, 41, 41, 91, 47, 102, 155, 53, 52, 53, 58, 52, 53, 146, 89, 40, 64, 23, 22, 24, 28, 25, 26, 71, 43, 44, 75, 26, 30, 33, 0, 0, 2, 0, 59, 0, 0, 4, 98, 5, 176, 0, 10, 0, 14, 0, 0, 65, 17, 33, 1, 23, 33, 17, 33, 17, 51, 53, 33, 1, 55, 17, 3, 185, 254, 230, 253, 156, 11, 2, 93, 1, 22, 169, 252, 234, 1, 60, 27, 2, 29, 3, 147, 252, 58, 174, 254, 196, 1, 60, 225, 1, 237, 48, 253, 227, 0, 0, 1, 0, 117, 255, 236, 4, 70, 5, 176, 0, 48, 0, 0, 83, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 33, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 19, 33, 53, 33, 155, 222, 16, 36, 23, 23, 60, 41, 61, 90, 30, 30, 29, 23, 24, 25, 79, 56, 91, 117, 10, 254, 238, 3, 85, 68, 68, 175, 94, 124, 182, 60, 60, 58, 60, 56, 57, 165, 105, 74, 114, 31, 35, 2, 67, 252, 216, 2, 205, 55, 16, 29, 11, 11, 14, 38, 35, 35, 97, 58, 59, 102, 37, 37, 42, 104, 95, 101, 157, 54, 54, 56, 78, 67, 67, 176, 98, 115, 182, 63, 63, 67, 38, 18, 1, 64, 236, 0, 2, 0, 105, 255, 236, 4, 74, 5, 188, 0, 39, 0, 64, 0, 0, 65, 35, 34, 4, 7, 6, 2, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 54, 54, 55, 54, 54, 51, 51, 1, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 54, 54, 55, 54, 54, 3, 111, 37, 181, 254, 236, 93, 93, 94, 71, 66, 65, 188, 117, 112, 180, 63, 63, 68, 51, 52, 52, 155, 104, 51, 88, 37, 38, 60, 23, 9, 69, 60, 59, 169, 110, 16, 254, 236, 52, 81, 28, 28, 30, 30, 28, 28, 80, 49, 48, 82, 30, 30, 33, 14, 41, 25, 29, 70, 5, 188, 121, 107, 108, 254, 217, 173, 107, 125, 211, 77, 77, 87, 77, 67, 67, 182, 106, 99, 179, 68, 67, 79, 24, 19, 20, 49, 25, 91, 148, 53, 53, 58, 254, 23, 41, 36, 37, 100, 59, 59, 99, 36, 36, 41, 40, 40, 39, 120, 80, 82, 30, 50, 19, 21, 23, 0, 0, 1, 0, 69, 0, 0, 4, 68, 5, 176, 0, 6, 0, 0, 65, 53, 33, 21, 33, 1, 33, 4, 68, 252, 1, 2, 219, 253, 200, 1, 37, 5, 21, 155, 227, 251, 51, 0, 0, 3, 0, 109, 255, 236, 4, 62, 5, 196, 0, 47, 0, 71, 0, 95, 0, 0, 65, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 31, 69, 61, 62, 168, 99, 99, 167, 60, 61, 68, 29, 27, 25, 73, 45, 53, 85, 30, 30, 33, 75, 66, 66, 179, 104, 103, 178, 66, 65, 75, 54, 48, 26, 66, 37, 41, 67, 25, 32, 35, 248, 31, 27, 28, 76, 46, 47, 76, 27, 29, 32, 30, 27, 27, 77, 48, 48, 77, 28, 27, 30, 29, 25, 23, 23, 66, 42, 42, 67, 23, 24, 24, 23, 23, 22, 66, 43, 42, 67, 24, 23, 26, 4, 45, 99, 151, 52, 52, 53, 53, 52, 52, 151, 99, 54, 98, 41, 39, 64, 23, 25, 71, 44, 45, 107, 60, 103, 156, 52, 53, 54, 54, 53, 52, 156, 103, 78, 132, 50, 28, 45, 18, 21, 57, 33, 44, 105, 253, 176, 50, 79, 28, 28, 29, 27, 26, 27, 82, 52, 50, 80, 29, 28, 30, 30, 28, 29, 80, 2, 77, 44, 73, 26, 26, 29, 29, 26, 26, 73, 45, 44, 73, 25, 25, 27, 28, 25, 26, 72, 0, 0, 2, 0, 97, 255, 244, 4, 47, 5, 196, 0, 40, 0, 65, 0, 0, 101, 35, 21, 51, 50, 36, 55, 54, 18, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 21, 6, 6, 7, 6, 6, 19, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 6, 6, 7, 6, 6, 1, 76, 19, 21, 193, 1, 22, 90, 90, 86, 67, 63, 64, 182, 114, 112, 179, 63, 63, 67, 55, 54, 53, 158, 104, 49, 82, 33, 31, 52, 21, 10, 61, 54, 56, 164, 143, 54, 80, 26, 27, 26, 28, 26, 26, 77, 49, 45, 78, 29, 29, 33, 12, 39, 26, 27, 65, 221, 233, 119, 107, 106, 1, 36, 174, 96, 130, 218, 79, 79, 88, 81, 70, 70, 187, 106, 103, 179, 66, 66, 76, 17, 15, 13, 36, 21, 6, 80, 129, 44, 46, 48, 1, 210, 45, 38, 38, 102, 56, 56, 103, 40, 39, 47, 40, 40, 40, 120, 80, 99, 31, 53, 19, 20, 22, 0, 0, 1, 1, 138, 2, 147, 3, 16, 5, 165, 0, 6, 0, 0, 65, 17, 35, 5, 21, 55, 17, 3, 16, 19, 254, 141, 191, 2, 147, 3, 18, 120, 156, 43, 253, 215, 0, 1, 1, 42, 2, 155, 3, 166, 5, 187, 0, 42, 0, 0, 65, 53, 33, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 1, 21, 3, 166, 254, 157, 117, 54, 80, 27, 27, 27, 32, 31, 39, 124, 82, 71, 112, 40, 40, 42, 201, 13, 14, 14, 43, 29, 24, 37, 12, 12, 12, 15, 17, 13, 36, 25, 254, 225, 2, 155, 159, 93, 43, 72, 35, 35, 72, 44, 52, 85, 30, 39, 41, 43, 37, 38, 99, 56, 22, 40, 15, 16, 19, 13, 11, 11, 33, 19, 14, 40, 24, 18, 41, 22, 254, 253, 134, 0, 1, 1, 37, 2, 143, 3, 166, 5, 186, 0, 76, 0, 0, 65, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 2, 3, 88, 30, 49, 16, 17, 17, 12, 12, 14, 45, 32, 30, 47, 16, 14, 15, 202, 56, 45, 44, 111, 56, 70, 120, 45, 44, 50, 23, 21, 19, 54, 33, 27, 44, 17, 23, 24, 46, 41, 41, 116, 70, 60, 108, 41, 41, 49, 201, 17, 15, 14, 37, 21, 30, 41, 13, 12, 12, 16, 18, 14, 41, 27, 4, 111, 135, 10, 11, 11, 36, 27, 17, 32, 12, 13, 16, 15, 13, 11, 30, 16, 67, 93, 29, 30, 26, 31, 30, 29, 86, 56, 41, 63, 22, 20, 28, 9, 10, 27, 17, 22, 59, 35, 55, 85, 29, 28, 29, 29, 28, 29, 84, 55, 16, 24, 8, 8, 8, 14, 11, 12, 28, 15, 22, 36, 12, 10, 10, 0, 0, 2, 1, 17, 2, 179, 3, 174, 5, 196, 0, 52, 0, 72, 0, 0, 65, 51, 38, 38, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 39, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 21, 6, 6, 7, 6, 6, 2, 253, 177, 14, 12, 42, 38, 39, 107, 65, 71, 114, 41, 41, 44, 173, 13, 13, 17, 57, 38, 30, 44, 14, 14, 14, 137, 79, 122, 42, 43, 45, 33, 32, 31, 93, 60, 42, 70, 28, 27, 41, 14, 3, 11, 193, 32, 46, 14, 13, 12, 20, 20, 20, 58, 39, 136, 8, 37, 24, 25, 56, 2, 193, 44, 88, 49, 1, 58, 69, 103, 35, 34, 35, 35, 31, 31, 85, 51, 14, 20, 33, 12, 17, 17, 17, 16, 16, 47, 31, 51, 29, 27, 29, 89, 57, 52, 84, 30, 30, 32, 18, 15, 15, 39, 21, 25, 47, 108, 13, 13, 11, 31, 20, 22, 40, 15, 15, 18, 103, 17, 34, 13, 14, 17, 0, 2, 1, 10, 2, 178, 3, 191, 5, 196, 0, 25, 0, 51, 0, 0, 65, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 10, 49, 45, 45, 129, 80, 80, 128, 45, 44, 48, 48, 45, 45, 128, 80, 81, 128, 45, 45, 48, 175, 21, 22, 21, 64, 43, 43, 65, 22, 21, 21, 21, 21, 21, 64, 43, 44, 65, 21, 22, 21, 4, 117, 117, 73, 123, 44, 44, 50, 50, 44, 44, 123, 73, 117, 73, 123, 45, 44, 50, 50, 44, 45, 123, 190, 117, 40, 68, 25, 25, 29, 29, 25, 25, 68, 40, 117, 41, 68, 25, 26, 28, 28, 26, 25, 68, 0, 3, 0, 24, 0, 0, 4, 183, 5, 179, 0, 6, 0, 49, 0, 53, 0, 0, 65, 17, 35, 5, 21, 55, 17, 1, 53, 33, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 5, 21, 37, 1, 39, 1, 1, 119, 17, 254, 178, 172, 3, 243, 254, 192, 106, 48, 72, 24, 25, 24, 33, 32, 35, 108, 69, 64, 101, 36, 36, 38, 181, 10, 11, 13, 40, 28, 24, 35, 11, 8, 9, 13, 15, 11, 34, 22, 254, 254, 254, 217, 1, 255, 131, 254, 1, 2, 240, 2, 195, 108, 140, 39, 254, 14, 253, 16, 143, 84, 39, 64, 32, 31, 65, 40, 50, 80, 28, 32, 32, 39, 33, 34, 89, 51, 18, 35, 13, 16, 19, 13, 13, 10, 27, 15, 13, 35, 21, 18, 36, 20, 233, 121, 235, 3, 170, 67, 252, 86, 0, 4, 0, 65, 0, 0, 4, 146, 5, 178, 0, 6, 0, 17, 0, 21, 0, 25, 0, 0, 65, 17, 35, 5, 21, 55, 17, 1, 17, 35, 1, 23, 33, 21, 51, 53, 51, 53, 33, 55, 55, 21, 5, 1, 39, 1, 1, 160, 17, 254, 178, 172, 3, 83, 181, 254, 190, 10, 1, 55, 182, 82, 254, 100, 137, 11, 254, 31, 1, 255, 131, 254, 1, 2, 239, 2, 195, 108, 140, 39, 254, 14, 254, 52, 1, 163, 254, 64, 118, 144, 144, 147, 176, 17, 193, 56, 3, 170, 67, 252, 86, 0, 0, 4, 0, 33, 0, 0, 4, 194, 5, 184, 0, 10, 0, 14, 0, 91, 0, 95, 0, 0, 65, 17, 35, 1, 23, 33, 21, 51, 53, 51, 53, 33, 55, 55, 21, 1, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 19, 1, 39, 1, 4, 112, 181, 254, 190, 10, 1, 55, 182, 82, 254, 100, 137, 11, 253, 47, 79, 34, 51, 14, 8, 9, 10, 12, 13, 39, 29, 27, 42, 14, 13, 14, 182, 51, 40, 40, 100, 50, 63, 108, 41, 39, 45, 24, 23, 17, 44, 27, 23, 37, 16, 21, 25, 42, 37, 37, 104, 63, 54, 97, 37, 37, 44, 181, 12, 12, 13, 36, 20, 27, 37, 12, 11, 11, 13, 13, 13, 40, 26, 197, 1, 255, 131, 254, 1, 1, 35, 1, 163, 254, 64, 118, 144, 144, 147, 176, 17, 193, 3, 107, 121, 15, 16, 10, 27, 18, 15, 29, 11, 11, 15, 14, 10, 11, 27, 15, 61, 83, 26, 27, 24, 28, 27, 26, 78, 50, 40, 60, 21, 15, 21, 8, 8, 22, 14, 21, 54, 34, 49, 77, 26, 25, 26, 26, 25, 26, 76, 49, 12, 21, 7, 8, 9, 12, 10, 11, 25, 14, 19, 30, 11, 10, 11, 252, 93, 3, 170, 67, 252, 86, 0, 2, 0, 48, 0, 0, 4, 153, 5, 176, 0, 15, 0, 18, 0, 0, 97, 53, 33, 17, 51, 53, 35, 17, 51, 53, 33, 1, 33, 19, 51, 17, 3, 19, 17, 4, 153, 254, 243, 217, 217, 248, 253, 139, 254, 33, 1, 26, 94, 217, 150, 150, 226, 1, 153, 227, 1, 110, 228, 250, 80, 1, 78, 254, 178, 2, 62, 2, 20, 253, 236, 0, 0, 3, 0, 46, 255, 236, 4, 170, 4, 79, 0, 87, 0, 112, 0, 130, 0, 0, 69, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 33, 53, 52, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 5, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 37, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 20, 20, 21, 20, 20, 21, 6, 6, 7, 6, 6, 1, 35, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 3, 100, 50, 90, 39, 38, 61, 20, 55, 21, 40, 22, 23, 54, 34, 32, 51, 19, 21, 28, 9, 7, 7, 1, 195, 47, 42, 43, 121, 74, 42, 74, 31, 23, 40, 17, 17, 37, 21, 33, 79, 45, 79, 125, 44, 44, 47, 1, 5, 8, 9, 11, 38, 26, 17, 25, 10, 13, 13, 3, 126, 184, 56, 42, 43, 42, 41, 40, 118, 77, 41, 69, 30, 29, 47, 18, 18, 44, 25, 38, 91, 254, 132, 29, 43, 13, 13, 13, 23, 23, 22, 65, 43, 1, 4, 12, 7, 10, 23, 1, 238, 195, 2, 3, 4, 18, 16, 11, 30, 20, 24, 34, 11, 11, 11, 20, 13, 11, 11, 29, 16, 192, 9, 18, 6, 7, 9, 10, 10, 11, 31, 19, 17, 40, 22, 91, 245, 93, 150, 52, 52, 56, 1, 14, 13, 9, 25, 15, 15, 23, 9, 14, 14, 45, 41, 41, 118, 72, 9, 24, 35, 12, 16, 14, 9, 10, 13, 46, 32, 119, 59, 57, 43, 119, 73, 72, 118, 41, 41, 45, 19, 16, 16, 44, 24, 23, 38, 14, 22, 22, 205, 16, 15, 14, 39, 24, 34, 62, 24, 23, 28, 35, 50, 27, 36, 54, 48, 5, 10, 3, 5, 6, 1, 202, 61, 21, 39, 17, 26, 41, 12, 8, 9, 16, 15, 16, 46, 29, 0, 0, 2, 0, 71, 255, 235, 4, 166, 5, 197, 0, 29, 0, 49, 0, 0, 97, 53, 33, 17, 33, 53, 33, 17, 33, 53, 33, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 37, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 17, 6, 6, 4, 166, 254, 154, 1, 40, 254, 216, 1, 91, 254, 102, 63, 136, 71, 93, 157, 57, 57, 64, 64, 58, 57, 158, 93, 71, 134, 63, 254, 244, 44, 70, 24, 25, 26, 26, 24, 24, 69, 44, 23, 47, 23, 22, 46, 232, 1, 160, 217, 1, 118, 217, 8, 13, 62, 64, 64, 195, 132, 254, 48, 132, 195, 64, 64, 62, 13, 8, 211, 26, 32, 32, 111, 84, 1, 210, 88, 115, 34, 34, 27, 2, 2, 251, 238, 1, 2, 0, 0, 3, 0, 38, 255, 236, 4, 161, 4, 79, 0, 67, 0, 99, 0, 117, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 33, 53, 52, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 50, 22, 23, 22, 22, 21, 21, 35, 53, 52, 54, 55, 54, 54, 55, 54, 54, 38, 49, 47, 46, 136, 88, 47, 81, 34, 21, 37, 17, 17, 39, 21, 40, 94, 54, 43, 75, 31, 26, 43, 17, 60, 17, 31, 17, 17, 40, 26, 39, 60, 20, 13, 19, 6, 6, 5, 1, 164, 45, 43, 44, 126, 80, 41, 73, 31, 20, 35, 16, 15, 32, 18, 35, 82, 47, 87, 136, 46, 47, 48, 1, 5, 10, 12, 12, 39, 30, 31, 41, 12, 5, 7, 3, 4, 3, 3, 4, 3, 11, 7, 12, 38, 26, 27, 37, 12, 16, 13, 2, 36, 20, 30, 10, 11, 10, 163, 2, 3, 4, 11, 9, 8, 27, 2, 128, 200, 109, 171, 59, 59, 62, 19, 18, 11, 29, 18, 16, 27, 11, 20, 21, 15, 13, 11, 29, 16, 180, 9, 15, 5, 6, 6, 23, 22, 14, 38, 23, 21, 48, 28, 34, 218, 97, 159, 56, 56, 62, 1, 17, 17, 10, 27, 17, 14, 24, 10, 19, 20, 64, 59, 60, 171, 254, 204, 201, 56, 88, 30, 30, 32, 32, 30, 12, 30, 17, 24, 58, 33, 201, 34, 58, 24, 24, 38, 14, 22, 23, 23, 22, 29, 97, 1, 247, 17, 16, 19, 57, 36, 85, 26, 31, 53, 22, 29, 32, 12, 12, 13, 0, 0, 2, 0, 38, 255, 235, 4, 77, 5, 235, 0, 43, 0, 71, 0, 0, 65, 55, 39, 7, 38, 38, 39, 7, 22, 22, 23, 7, 23, 55, 22, 22, 23, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 53, 52, 2, 1, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 20, 20, 21, 21, 20, 6, 7, 6, 6, 7, 6, 6, 3, 131, 177, 78, 199, 65, 148, 84, 88, 35, 70, 33, 211, 78, 242, 44, 68, 21, 54, 135, 75, 114, 182, 63, 64, 69, 75, 69, 68, 192, 116, 73, 135, 58, 72, 114, 36, 26, 29, 107, 254, 80, 59, 91, 31, 32, 33, 31, 30, 29, 84, 54, 107, 139, 32, 13, 13, 15, 52, 33, 28, 68, 4, 240, 98, 113, 110, 54, 75, 21, 217, 13, 34, 22, 117, 112, 133, 49, 126, 79, 42, 46, 72, 65, 66, 184, 112, 102, 178, 66, 67, 76, 35, 34, 40, 128, 83, 60, 142, 78, 68, 192, 1, 54, 252, 77, 43, 37, 36, 96, 54, 56, 104, 40, 39, 48, 56, 38, 20, 15, 7, 65, 47, 85, 36, 46, 71, 25, 20, 22, 0, 2, 0, 136, 0, 0, 4, 150, 5, 176, 0, 18, 0, 33, 0, 0, 65, 33, 17, 33, 17, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 159, 254, 233, 1, 23, 227, 129, 198, 68, 67, 70, 70, 67, 68, 198, 129, 227, 227, 68, 96, 31, 30, 28, 28, 30, 31, 96, 68, 227, 5, 176, 250, 80, 1, 33, 67, 60, 59, 165, 98, 97, 165, 59, 59, 67, 224, 38, 31, 31, 82, 43, 43, 81, 31, 31, 37, 0, 0, 2, 0, 145, 254, 96, 4, 89, 6, 7, 0, 29, 0, 55, 0, 0, 65, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 17, 33, 17, 33, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 89, 55, 53, 54, 158, 103, 48, 82, 35, 29, 51, 22, 254, 234, 1, 22, 17, 37, 20, 40, 97, 58, 102, 157, 54, 53, 55, 254, 234, 23, 26, 26, 83, 59, 37, 61, 24, 24, 36, 13, 15, 43, 29, 21, 54, 31, 58, 84, 26, 26, 25, 2, 19, 21, 123, 203, 73, 72, 79, 18, 18, 14, 40, 25, 2, 44, 248, 89, 1, 255, 19, 32, 13, 25, 26, 84, 74, 73, 202, 139, 21, 67, 119, 45, 45, 52, 16, 14, 15, 42, 26, 1, 194, 30, 45, 14, 10, 11, 50, 43, 44, 119, 0, 0, 1, 0, 159, 0, 0, 4, 183, 4, 58, 0, 12, 0, 0, 65, 19, 33, 1, 1, 33, 1, 7, 17, 33, 17, 33, 17, 2, 92, 247, 1, 100, 254, 107, 1, 130, 254, 163, 254, 217, 107, 254, 234, 1, 22, 1, 171, 254, 85, 2, 122, 1, 192, 254, 165, 127, 1, 218, 251, 198, 1, 30, 0, 1, 0, 162, 255, 235, 4, 157, 6, 26, 0, 81, 0, 0, 97, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 1, 183, 27, 23, 23, 63, 35, 25, 50, 20, 20, 25, 28, 19, 25, 42, 40, 30, 29, 69, 30, 29, 40, 19, 18, 17, 46, 29, 35, 66, 28, 29, 46, 16, 54, 21, 64, 38, 38, 82, 39, 95, 149, 51, 51, 53, 40, 29, 30, 69, 29, 30, 40, 33, 21, 19, 37, 65, 54, 55, 144, 79, 102, 171, 61, 62, 69, 4, 48, 70, 101, 33, 32, 31, 22, 20, 21, 59, 37, 51, 73, 31, 40, 95, 69, 65, 98, 39, 39, 65, 31, 32, 67, 41, 34, 55, 18, 17, 18, 11, 8, 8, 20, 9, 221, 14, 21, 7, 8, 8, 49, 47, 47, 139, 89, 63, 101, 42, 41, 71, 33, 32, 64, 35, 57, 73, 33, 33, 90, 78, 92, 137, 46, 46, 45, 63, 61, 62, 182, 118, 251, 204, 0, 2, 0, 156, 255, 236, 4, 115, 4, 79, 0, 42, 0, 56, 0, 0, 65, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 20, 20, 21, 33, 21, 20, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 3, 34, 38, 39, 38, 38, 53, 53, 33, 6, 6, 7, 6, 6, 2, 96, 75, 130, 54, 54, 84, 30, 79, 31, 66, 38, 38, 91, 57, 63, 97, 35, 32, 40, 9, 253, 67, 62, 61, 60, 179, 117, 114, 186, 66, 66, 72, 74, 68, 69, 197, 96, 54, 78, 25, 25, 24, 1, 168, 9, 35, 27, 27, 74, 4, 79, 22, 17, 18, 45, 24, 180, 17, 30, 11, 11, 13, 39, 34, 33, 89, 51, 3, 2, 1, 158, 111, 180, 63, 64, 70, 1, 83, 74, 73, 202, 119, 40, 113, 194, 72, 71, 82, 252, 125, 31, 27, 27, 75, 45, 25, 50, 84, 30, 31, 35, 0, 0, 1, 0, 127, 255, 43, 4, 116, 6, 152, 0, 79, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 20, 22, 23, 22, 22, 23, 21, 51, 53, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 39, 53, 35, 21, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 95, 25, 24, 27, 84, 57, 45, 86, 33, 34, 42, 254, 233, 74, 62, 61, 160, 85, 159, 94, 152, 54, 54, 58, 63, 58, 59, 164, 101, 67, 90, 27, 28, 23, 23, 24, 24, 75, 51, 44, 73, 26, 29, 32, 1, 22, 55, 50, 51, 144, 90, 160, 92, 150, 53, 53, 58, 64, 59, 58, 166, 101, 63, 89, 28, 27, 25, 1, 126, 37, 64, 23, 26, 29, 24, 29, 28, 97, 72, 120, 171, 56, 56, 59, 8, 196, 196, 9, 61, 51, 51, 141, 88, 96, 141, 54, 53, 81, 38, 24, 47, 26, 26, 61, 39, 39, 66, 25, 24, 27, 28, 27, 31, 96, 64, 100, 161, 60, 59, 74, 12, 217, 215, 9, 64, 52, 52, 141, 85, 97, 141, 53, 53, 80, 36, 22, 45, 27, 27, 65, 0, 0, 1, 0, 142, 255, 11, 4, 85, 5, 38, 0, 57, 0, 0, 101, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 33, 54, 38, 39, 38, 38, 39, 53, 35, 21, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 21, 51, 53, 54, 54, 55, 54, 54, 39, 33, 22, 6, 7, 6, 6, 2, 133, 67, 87, 25, 26, 20, 21, 26, 25, 86, 66, 45, 76, 27, 27, 28, 2, 1, 6, 2, 53, 48, 49, 136, 81, 200, 99, 150, 50, 50, 51, 51, 50, 50, 150, 99, 200, 77, 135, 50, 49, 56, 2, 254, 250, 2, 31, 28, 28, 74, 202, 54, 45, 44, 117, 63, 30, 62, 116, 45, 45, 54, 31, 26, 26, 72, 40, 84, 140, 54, 53, 69, 13, 223, 225, 18, 97, 71, 71, 180, 101, 30, 101, 180, 71, 71, 96, 18, 233, 232, 13, 67, 51, 50, 128, 74, 38, 62, 22, 22, 24, 0, 1, 0, 115, 0, 0, 4, 149, 5, 196, 0, 51, 0, 0, 65, 33, 53, 33, 39, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 35, 21, 51, 23, 20, 6, 7, 6, 6, 7, 35, 21, 33, 53, 33, 54, 54, 55, 54, 54, 53, 2, 48, 1, 46, 254, 202, 9, 26, 23, 22, 62, 36, 36, 65, 25, 25, 29, 1, 13, 59, 56, 57, 166, 107, 100, 167, 60, 60, 66, 7, 155, 162, 5, 5, 8, 9, 29, 24, 89, 4, 31, 253, 98, 14, 21, 7, 11, 10, 2, 73, 221, 234, 51, 79, 26, 26, 27, 19, 22, 22, 71, 51, 93, 152, 54, 54, 59, 59, 55, 56, 163, 103, 234, 221, 167, 30, 63, 27, 27, 39, 6, 226, 226, 17, 36, 20, 29, 66, 37, 0, 0, 1, 0, 21, 0, 0, 4, 200, 5, 176, 0, 25, 0, 0, 97, 33, 17, 33, 53, 33, 53, 33, 53, 35, 1, 33, 1, 7, 35, 39, 1, 33, 1, 33, 21, 33, 21, 33, 21, 33, 1, 223, 1, 25, 1, 75, 254, 181, 1, 75, 250, 1, 127, 254, 203, 254, 246, 25, 2, 25, 254, 246, 254, 202, 1, 128, 254, 243, 1, 87, 254, 169, 1, 87, 1, 31, 165, 124, 166, 2, 202, 253, 206, 57, 56, 2, 51, 253, 54, 166, 124, 165, 0, 1, 0, 148, 254, 75, 4, 106, 6, 45, 0, 47, 0, 0, 65, 53, 35, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 35, 21, 51, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 3, 177, 206, 25, 26, 28, 89, 60, 44, 67, 28, 24, 51, 95, 51, 111, 175, 61, 61, 65, 161, 161, 24, 26, 18, 52, 34, 24, 99, 20, 15, 48, 94, 48, 94, 149, 52, 51, 55, 3, 109, 205, 79, 45, 70, 24, 27, 27, 16, 14, 216, 17, 24, 55, 53, 53, 157, 102, 79, 205, 252, 134, 56, 84, 24, 17, 18, 17, 16, 221, 21, 16, 55, 54, 54, 158, 103, 3, 122, 0, 255, 255, 0, 0, 0, 0, 4, 109, 5, 176, 6, 38, 0, 7, 0, 0, 0, 7, 2, 106, 254, 211, 254, 86, 0, 1, 0, 111, 0, 0, 4, 143, 5, 196, 0, 59, 0, 0, 65, 53, 33, 39, 33, 53, 33, 39, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 35, 21, 51, 23, 35, 21, 51, 23, 20, 6, 7, 6, 6, 7, 35, 21, 33, 53, 33, 54, 54, 55, 54, 54, 39, 39, 3, 76, 254, 221, 5, 1, 40, 254, 210, 5, 25, 23, 22, 62, 36, 36, 66, 25, 25, 29, 1, 13, 59, 56, 57, 166, 107, 100, 167, 60, 60, 66, 4, 150, 155, 3, 158, 163, 2, 5, 8, 9, 29, 24, 89, 4, 31, 253, 98, 15, 23, 7, 11, 9, 2, 2, 1, 213, 153, 114, 153, 151, 51, 79, 26, 26, 27, 19, 22, 22, 71, 51, 93, 152, 54, 54, 59, 59, 55, 56, 163, 103, 151, 153, 114, 153, 51, 30, 63, 27, 27, 39, 6, 226, 226, 18, 39, 21, 28, 64, 35, 38, 0, 2, 0, 123, 255, 235, 4, 180, 5, 176, 0, 45, 0, 60, 0, 0, 65, 53, 35, 17, 35, 17, 35, 38, 38, 39, 38, 38, 35, 35, 17, 51, 17, 51, 50, 54, 55, 54, 54, 55, 51, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 5, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 4, 160, 174, 200, 84, 8, 53, 44, 44, 122, 77, 255, 200, 55, 76, 121, 45, 44, 53, 9, 84, 37, 33, 33, 89, 51, 43, 86, 22, 27, 11, 42, 20, 19, 34, 13, 13, 15, 253, 81, 55, 41, 58, 18, 18, 17, 17, 18, 18, 58, 41, 3, 164, 150, 1, 4, 254, 252, 82, 138, 50, 49, 55, 250, 80, 2, 50, 54, 49, 49, 136, 82, 253, 136, 87, 122, 38, 39, 35, 23, 20, 139, 4, 10, 14, 17, 17, 59, 45, 2, 121, 210, 2, 62, 49, 40, 41, 104, 55, 54, 103, 39, 40, 49, 0, 0, 2, 0, 83, 255, 229, 4, 125, 4, 41, 0, 35, 0, 59, 0, 0, 101, 23, 55, 39, 54, 54, 53, 52, 38, 39, 55, 39, 7, 38, 38, 35, 34, 6, 7, 39, 7, 23, 6, 6, 21, 20, 22, 23, 7, 23, 55, 22, 22, 51, 50, 54, 1, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 3, 136, 103, 142, 112, 34, 37, 41, 38, 120, 142, 116, 60, 140, 77, 77, 139, 60, 114, 141, 116, 38, 43, 38, 35, 108, 141, 100, 62, 147, 81, 81, 148, 253, 229, 48, 42, 42, 113, 65, 64, 113, 42, 42, 48, 48, 42, 42, 113, 64, 65, 113, 42, 42, 48, 78, 105, 145, 113, 60, 139, 78, 81, 146, 62, 123, 145, 119, 42, 46, 45, 42, 117, 144, 119, 62, 148, 83, 78, 142, 60, 110, 144, 102, 46, 50, 50, 1, 222, 72, 123, 45, 45, 52, 52, 45, 45, 123, 72, 72, 124, 45, 46, 53, 53, 46, 45, 124, 0, 2, 1, 196, 255, 241, 3, 8, 5, 176, 0, 3, 0, 15, 0, 0, 65, 19, 33, 19, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, 229, 16, 254, 227, 16, 36, 86, 76, 74, 88, 88, 74, 76, 86, 1, 253, 3, 179, 252, 77, 254, 139, 64, 87, 87, 64, 66, 88, 88, 0, 2, 1, 226, 254, 132, 3, 39, 4, 79, 0, 3, 0, 15, 0, 0, 65, 3, 33, 3, 19, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 2, 2, 17, 1, 30, 16, 40, 90, 73, 76, 86, 86, 76, 73, 90, 2, 53, 252, 79, 3, 177, 1, 126, 67, 89, 90, 66, 64, 87, 86, 0, 2, 0, 160, 255, 244, 4, 78, 5, 197, 0, 49, 0, 61, 0, 0, 65, 51, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 33, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 243, 250, 4, 8, 7, 34, 30, 49, 97, 38, 38, 48, 64, 60, 61, 176, 111, 99, 170, 63, 63, 74, 1, 1, 23, 1, 33, 27, 26, 68, 36, 46, 71, 25, 24, 26, 34, 27, 28, 68, 34, 47, 52, 13, 13, 7, 41, 86, 76, 74, 89, 89, 74, 76, 86, 1, 186, 40, 57, 24, 24, 46, 30, 43, 91, 51, 50, 117, 71, 96, 146, 50, 49, 50, 49, 50, 50, 151, 102, 46, 66, 21, 21, 19, 20, 20, 22, 67, 46, 38, 76, 36, 37, 69, 31, 37, 65, 38, 39, 96, 254, 140, 64, 87, 87, 64, 66, 89, 89, 0, 2, 0, 202, 254, 119, 4, 73, 4, 52, 0, 49, 0, 61, 0, 0, 65, 35, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 33, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, 23, 249, 1, 1, 7, 7, 31, 31, 47, 94, 37, 38, 46, 61, 57, 57, 165, 105, 94, 164, 60, 60, 70, 2, 254, 233, 1, 29, 24, 24, 63, 35, 38, 62, 20, 20, 21, 33, 26, 26, 65, 32, 48, 51, 12, 12, 5, 253, 56, 76, 75, 60, 60, 75, 76, 56, 2, 127, 40, 55, 23, 23, 44, 29, 44, 92, 51, 52, 118, 70, 95, 146, 49, 50, 51, 48, 49, 49, 149, 101, 45, 64, 20, 20, 19, 21, 21, 21, 61, 40, 42, 79, 38, 37, 71, 33, 36, 64, 38, 37, 97, 1, 115, 52, 73, 72, 53, 57, 77, 78, 0, 0, 1, 1, 104, 254, 106, 2, 199, 0, 243, 0, 9, 0, 0, 101, 55, 33, 21, 20, 6, 7, 23, 54, 54, 2, 198, 1, 254, 251, 52, 38, 147, 90, 113, 22, 221, 234, 110, 157, 72, 76, 80, 234, 0, 0, 1, 1, 166, 255, 236, 3, 40, 1, 89, 0, 11, 0, 0, 101, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 166, 104, 89, 88, 105, 103, 90, 91, 102, 161, 77, 104, 103, 78, 78, 106, 107, 255, 255, 1, 180, 255, 236, 3, 54, 4, 147, 4, 38, 0, 96, 14, 0, 0, 7, 0, 96, 0, 14, 3, 58, 255, 255, 1, 180, 254, 106, 3, 93, 4, 147, 4, 39, 0, 96, 0, 53, 3, 58, 0, 6, 0, 95, 76, 0, 255, 255, 0, 101, 255, 235, 5, 1, 1, 88, 4, 39, 0, 96, 254, 191, 255, 255, 0, 38, 0, 96, 76, 255, 0, 7, 0, 96, 1, 217, 255, 255, 0, 1, 1, 238, 2, 40, 3, 42, 3, 83, 0, 11, 0, 0, 65, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 238, 85, 73, 71, 87, 87, 71, 73, 85, 2, 189, 63, 86, 84, 65, 65, 85, 87, 0, 0, 1, 1, 148, 1, 248, 3, 104, 3, 245, 0, 25, 0, 0, 65, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 148, 33, 30, 30, 87, 54, 54, 87, 31, 30, 32, 32, 30, 31, 87, 54, 55, 86, 30, 30, 33, 3, 18, 58, 49, 82, 30, 30, 33, 33, 30, 30, 82, 49, 58, 49, 84, 30, 30, 34, 34, 30, 30, 84, 0, 0, 1, 0, 148, 255, 39, 4, 36, 0, 0, 0, 3, 0, 0, 69, 53, 33, 21, 4, 36, 252, 112, 217, 217, 217, 0, 0, 1, 1, 26, 2, 18, 4, 91, 2, 243, 0, 3, 0, 0, 65, 53, 33, 21, 4, 91, 252, 191, 2, 18, 225, 225, 0, 1, 0, 61, 2, 89, 4, 155, 3, 60, 0, 3, 0, 0, 65, 53, 33, 21, 4, 155, 251, 162, 2, 89, 227, 227, 0, 1, 0, 57, 2, 89, 4, 151, 3, 60, 0, 3, 0, 0, 65, 53, 33, 21, 4, 151, 251, 162, 2, 89, 227, 227, 0, 1, 1, 201, 3, 225, 2, 159, 6, 0, 0, 5, 0, 0, 65, 53, 35, 21, 17, 51, 2, 159, 214, 186, 5, 114, 142, 141, 254, 110, 0, 2, 1, 25, 3, 240, 3, 130, 6, 0, 0, 5, 0, 11, 0, 0, 65, 53, 35, 21, 17, 51, 1, 53, 35, 21, 17, 51, 1, 231, 206, 177, 1, 184, 205, 177, 5, 148, 108, 113, 254, 97, 1, 164, 108, 110, 254, 94, 0, 1, 1, 235, 3, 244, 3, 34, 6, 43, 0, 12, 0, 0, 65, 21, 51, 53, 52, 54, 55, 39, 6, 6, 7, 6, 6, 1, 235, 223, 50, 38, 128, 39, 66, 25, 25, 28, 4, 164, 176, 177, 97, 149, 65, 79, 35, 92, 52, 52, 109, 0, 0, 1, 1, 210, 3, 228, 3, 8, 6, 24, 0, 12, 0, 0, 65, 53, 35, 21, 20, 6, 7, 23, 54, 54, 55, 54, 54, 3, 8, 223, 49, 38, 127, 39, 66, 25, 25, 28, 5, 107, 173, 173, 97, 150, 65, 79, 35, 93, 52, 51, 109, 0, 0, 1, 1, 208, 254, 187, 3, 12, 1, 13, 0, 12, 0, 0, 101, 53, 35, 21, 20, 6, 7, 23, 54, 54, 55, 54, 54, 3, 12, 233, 45, 38, 133, 38, 67, 25, 24, 29, 65, 204, 205, 97, 147, 66, 79, 35, 92, 52, 52, 108, 255, 255, 1, 70, 3, 244, 3, 210, 6, 43, 4, 39, 0, 108, 255, 91, 0, 0, 0, 7, 0, 108, 0, 176, 0, 0, 255, 255, 1, 44, 3, 228, 3, 201, 6, 24, 4, 39, 0, 109, 255, 90, 0, 0, 0, 7, 0, 109, 0, 193, 0, 0, 0, 2, 1, 65, 254, 185, 3, 197, 0, 235, 0, 12, 0, 25, 0, 0, 101, 53, 35, 21, 20, 6, 7, 23, 54, 54, 55, 54, 54, 37, 55, 35, 21, 20, 6, 7, 23, 54, 54, 55, 54, 54, 2, 124, 232, 45, 38, 139, 39, 64, 24, 23, 26, 1, 72, 1, 233, 51, 38, 139, 39, 66, 25, 24, 28, 63, 172, 173, 97, 148, 65, 79, 34, 93, 52, 52, 108, 51, 172, 173, 97, 148, 65, 79, 34, 93, 52, 52, 108, 0, 255, 255, 1, 201, 3, 225, 2, 159, 6, 0, 6, 6, 0, 106, 0, 0, 255, 255, 1, 25, 3, 240, 3, 130, 6, 0, 6, 6, 0, 107, 0, 0, 0, 1, 1, 89, 254, 55, 3, 129, 6, 83, 0, 39, 0, 0, 65, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 7, 6, 6, 1, 89, 43, 37, 37, 99, 55, 55, 117, 55, 54, 39, 80, 36, 34, 59, 22, 16, 27, 28, 23, 26, 69, 40, 31, 64, 32, 54, 55, 117, 55, 55, 99, 37, 37, 43, 2, 80, 22, 142, 248, 105, 106, 174, 66, 67, 94, 25, 150, 30, 90, 61, 56, 150, 88, 63, 212, 125, 26, 127, 216, 89, 92, 156, 57, 44, 68, 24, 152, 25, 93, 67, 67, 174, 105, 106, 249, 0, 0, 1, 1, 60, 254, 55, 3, 113, 6, 83, 0, 39, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 54, 3, 113, 44, 38, 38, 101, 57, 57, 120, 57, 53, 30, 61, 29, 43, 77, 27, 21, 25, 25, 21, 25, 65, 39, 33, 70, 35, 53, 57, 120, 57, 57, 101, 38, 38, 44, 2, 58, 22, 137, 245, 106, 106, 175, 69, 68, 96, 25, 149, 23, 65, 41, 62, 170, 107, 86, 204, 118, 26, 121, 208, 86, 94, 152, 60, 51, 77, 26, 150, 25, 96, 69, 68, 175, 106, 106, 245, 0, 0, 1, 1, 144, 254, 177, 3, 79, 6, 154, 0, 7, 0, 0, 65, 53, 33, 17, 33, 53, 35, 17, 3, 79, 254, 65, 1, 191, 170, 5, 195, 215, 248, 23, 215, 6, 59, 0, 0, 1, 1, 144, 254, 177, 3, 80, 6, 154, 0, 7, 0, 0, 65, 21, 51, 17, 35, 21, 33, 17, 1, 144, 171, 171, 1, 192, 6, 154, 215, 249, 197, 215, 7, 233, 0, 1, 1, 53, 254, 152, 3, 206, 6, 61, 0, 42, 0, 0, 65, 55, 6, 38, 39, 38, 38, 53, 53, 52, 38, 39, 54, 54, 53, 53, 52, 54, 55, 54, 54, 23, 39, 34, 6, 7, 6, 6, 21, 21, 20, 6, 35, 21, 50, 22, 21, 21, 20, 22, 23, 22, 22, 3, 172, 34, 50, 63, 18, 18, 13, 116, 124, 123, 117, 5, 15, 15, 66, 61, 34, 97, 140, 43, 52, 48, 124, 127, 127, 124, 43, 48, 45, 145, 254, 152, 158, 2, 55, 45, 45, 111, 54, 163, 119, 182, 48, 48, 184, 119, 163, 54, 111, 45, 45, 55, 2, 157, 74, 58, 67, 181, 85, 163, 135, 116, 200, 116, 133, 163, 79, 165, 69, 66, 87, 0, 0, 1, 1, 76, 254, 152, 3, 229, 6, 61, 0, 54, 0, 0, 69, 23, 50, 54, 55, 54, 54, 53, 53, 52, 54, 55, 54, 54, 51, 53, 34, 38, 39, 38, 38, 53, 53, 52, 38, 39, 38, 38, 35, 7, 54, 22, 23, 22, 22, 21, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 21, 20, 6, 7, 6, 6, 1, 76, 34, 99, 145, 45, 45, 46, 15, 15, 28, 110, 83, 74, 105, 29, 22, 21, 37, 44, 46, 146, 107, 34, 61, 66, 15, 15, 5, 38, 40, 27, 74, 48, 59, 85, 28, 28, 27, 14, 18, 18, 63, 202, 158, 85, 69, 66, 168, 78, 163, 47, 75, 28, 52, 47, 200, 38, 41, 30, 86, 56, 163, 76, 163, 66, 73, 87, 157, 2, 55, 45, 45, 111, 54, 163, 69, 123, 50, 34, 56, 20, 25, 71, 45, 45, 104, 58, 163, 54, 111, 45, 45, 55, 0, 0, 1, 1, 136, 0, 128, 3, 87, 3, 159, 0, 6, 0, 0, 65, 19, 35, 1, 21, 1, 51, 2, 101, 242, 181, 254, 230, 1, 26, 181, 2, 15, 1, 144, 254, 122, 19, 254, 122, 0, 0, 1, 1, 129, 0, 127, 3, 81, 3, 158, 0, 6, 0, 0, 65, 35, 19, 3, 51, 1, 53, 2, 54, 181, 241, 241, 181, 1, 27, 3, 158, 254, 112, 254, 113, 1, 134, 19, 0, 1, 0, 99, 0, 146, 4, 73, 4, 182, 0, 11, 0, 0, 65, 17, 33, 17, 33, 21, 33, 17, 33, 17, 33, 53, 2, 219, 254, 247, 254, 145, 1, 111, 1, 9, 1, 110, 3, 44, 1, 138, 254, 118, 254, 254, 100, 1, 156, 254, 0, 1, 0, 149, 2, 89, 3, 241, 3, 60, 0, 3, 0, 0, 65, 53, 33, 21, 3, 241, 252, 164, 2, 89, 227, 227, 0, 2, 0, 147, 0, 0, 4, 39, 5, 4, 0, 11, 0, 15, 0, 0, 65, 17, 35, 17, 33, 21, 33, 17, 51, 17, 33, 53, 3, 53, 33, 21, 2, 220, 245, 254, 172, 1, 84, 245, 1, 75, 32, 252, 164, 3, 165, 1, 95, 254, 161, 232, 254, 142, 1, 114, 232, 252, 91, 227, 227, 0, 0, 1, 0, 157, 0, 207, 4, 77, 4, 141, 0, 11, 0, 0, 83, 23, 1, 1, 55, 1, 1, 39, 1, 1, 7, 1, 157, 165, 1, 51, 1, 51, 165, 254, 203, 1, 53, 165, 254, 205, 254, 205, 165, 1, 53, 1, 115, 164, 1, 57, 254, 199, 164, 1, 59, 1, 59, 164, 254, 199, 1, 57, 164, 254, 197, 0, 0, 3, 0, 108, 0, 137, 4, 108, 4, 206, 0, 3, 0, 15, 0, 27, 0, 0, 65, 53, 33, 21, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 4, 108, 252, 0, 1, 101, 82, 70, 71, 82, 82, 71, 70, 82, 2, 82, 70, 71, 82, 82, 71, 70, 82, 2, 61, 227, 227, 2, 4, 61, 80, 80, 61, 61, 80, 80, 252, 152, 61, 80, 80, 61, 61, 81, 82, 0, 0, 2, 0, 158, 1, 30, 4, 80, 3, 177, 0, 3, 0, 7, 0, 0, 65, 53, 33, 21, 1, 53, 33, 21, 4, 80, 252, 78, 3, 178, 252, 78, 2, 205, 228, 228, 254, 81, 227, 227, 0, 1, 0, 152, 0, 129, 4, 74, 4, 81, 0, 19, 0, 0, 65, 53, 33, 55, 33, 53, 35, 55, 39, 7, 33, 21, 33, 7, 33, 21, 51, 7, 23, 55, 4, 74, 254, 71, 109, 1, 76, 210, 52, 122, 86, 253, 188, 1, 202, 109, 254, 163, 228, 50, 123, 83, 1, 30, 227, 204, 228, 97, 63, 160, 228, 204, 227, 94, 63, 157, 0, 2, 0, 142, 0, 241, 4, 80, 4, 8, 0, 25, 0, 51, 0, 0, 83, 23, 54, 54, 51, 54, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 7, 34, 6, 3, 23, 54, 54, 51, 54, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 7, 34, 6, 152, 10, 48, 127, 66, 79, 103, 65, 60, 97, 74, 67, 109, 47, 10, 47, 116, 67, 75, 96, 59, 65, 102, 79, 67, 122, 57, 10, 48, 121, 67, 79, 102, 65, 59, 96, 75, 66, 117, 47, 10, 49, 121, 66, 74, 97, 60, 65, 102, 79, 66, 114, 3, 114, 211, 70, 76, 2, 42, 33, 30, 39, 76, 70, 211, 69, 77, 39, 30, 33, 42, 2, 79, 254, 15, 211, 67, 79, 2, 42, 33, 30, 39, 78, 68, 211, 68, 78, 39, 30, 33, 42, 2, 78, 0, 1, 0, 156, 0, 144, 4, 17, 4, 79, 0, 8, 0, 0, 101, 17, 37, 39, 55, 37, 17, 1, 21, 4, 17, 253, 220, 68, 68, 2, 36, 252, 139, 144, 1, 15, 183, 24, 25, 186, 1, 14, 254, 145, 225, 0, 0, 1, 0, 161, 0, 143, 4, 37, 4, 79, 0, 8, 0, 0, 119, 1, 53, 1, 17, 5, 23, 7, 5, 161, 3, 132, 252, 124, 2, 62, 60, 61, 253, 195, 143, 1, 111, 227, 1, 110, 254, 243, 189, 20, 20, 192, 0, 2, 0, 170, 0, 35, 4, 31, 4, 231, 0, 8, 0, 12, 0, 0, 65, 53, 37, 39, 55, 37, 53, 1, 21, 1, 53, 33, 21, 4, 31, 253, 220, 68, 68, 2, 36, 252, 139, 3, 103, 252, 164, 1, 136, 244, 164, 22, 22, 168, 243, 254, 181, 202, 253, 81, 227, 227, 0, 2, 0, 171, 0, 34, 4, 47, 4, 239, 0, 8, 0, 12, 0, 0, 83, 1, 53, 1, 21, 5, 23, 7, 5, 1, 53, 33, 21, 171, 3, 132, 252, 124, 2, 62, 60, 61, 253, 195, 3, 96, 252, 164, 1, 143, 1, 74, 204, 1, 74, 242, 170, 18, 18, 173, 253, 160, 227, 227, 0, 1, 0, 185, 1, 118, 3, 252, 3, 37, 0, 5, 0, 0, 65, 17, 33, 21, 33, 17, 3, 252, 252, 189, 2, 123, 1, 118, 1, 175, 171, 254, 252, 0, 0, 1, 0, 220, 255, 131, 4, 0, 5, 176, 0, 3, 0, 0, 69, 1, 33, 1, 1, 223, 2, 33, 254, 253, 253, 223, 125, 6, 45, 249, 211, 0, 0, 1, 0, 240, 255, 131, 4, 21, 5, 176, 0, 3, 0, 0, 83, 1, 33, 1, 240, 2, 33, 1, 4, 253, 223, 5, 176, 249, 211, 6, 45, 0, 0, 1, 1, 24, 0, 227, 3, 154, 4, 208, 0, 3, 0, 0, 101, 1, 39, 1, 1, 155, 1, 255, 131, 254, 1, 227, 3, 170, 67, 252, 86, 0, 0, 5, 0, 35, 255, 236, 4, 169, 5, 197, 0, 25, 0, 51, 0, 77, 0, 103, 0, 107, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 5, 1, 39, 1, 35, 36, 36, 35, 107, 72, 72, 106, 35, 35, 35, 35, 35, 35, 107, 73, 71, 107, 35, 36, 35, 188, 10, 12, 11, 36, 27, 28, 37, 12, 11, 10, 10, 11, 11, 37, 27, 27, 38, 11, 12, 10, 1, 144, 36, 36, 35, 108, 72, 72, 106, 36, 35, 34, 35, 35, 35, 107, 73, 71, 107, 35, 36, 36, 188, 10, 11, 11, 38, 27, 27, 37, 12, 11, 10, 6, 10, 10, 38, 31, 25, 37, 12, 13, 12, 254, 116, 2, 49, 136, 253, 207, 4, 172, 77, 57, 101, 38, 39, 44, 44, 39, 38, 101, 57, 77, 58, 102, 38, 38, 45, 45, 38, 38, 102, 135, 77, 23, 43, 17, 16, 19, 19, 16, 17, 43, 23, 77, 23, 43, 16, 17, 19, 19, 17, 16, 43, 253, 9, 78, 57, 102, 38, 38, 44, 44, 38, 38, 102, 57, 78, 57, 102, 39, 38, 44, 44, 38, 39, 102, 135, 78, 23, 42, 17, 16, 19, 19, 16, 17, 42, 23, 78, 24, 42, 16, 17, 19, 19, 17, 16, 43, 38, 4, 4, 65, 251, 252, 0, 6, 0, 75, 255, 236, 4, 181, 5, 196, 0, 49, 0, 75, 0, 101, 0, 127, 0, 153, 0, 157, 0, 0, 65, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 3, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 37, 1, 39, 1, 1, 63, 35, 34, 33, 99, 65, 33, 59, 24, 18, 31, 13, 12, 29, 17, 25, 62, 35, 64, 98, 33, 33, 34, 34, 33, 34, 99, 64, 37, 64, 27, 14, 26, 11, 13, 32, 18, 24, 58, 34, 64, 98, 33, 34, 35, 244, 33, 33, 32, 94, 61, 63, 98, 34, 33, 35, 34, 34, 34, 99, 64, 61, 93, 32, 32, 33, 1, 175, 7, 9, 9, 30, 22, 21, 30, 9, 9, 8, 4, 8, 8, 30, 25, 20, 30, 9, 10, 10, 254, 255, 7, 9, 9, 30, 22, 21, 30, 10, 9, 8, 8, 9, 9, 29, 21, 22, 30, 9, 10, 8, 2, 103, 7, 9, 9, 30, 22, 21, 30, 9, 9, 8, 4, 7, 8, 30, 26, 20, 30, 9, 10, 10, 253, 105, 3, 53, 97, 252, 203, 1, 41, 38, 57, 102, 38, 38, 44, 12, 12, 8, 22, 13, 12, 21, 8, 13, 13, 44, 38, 38, 102, 57, 38, 57, 102, 39, 38, 44, 15, 15, 7, 20, 11, 13, 23, 8, 12, 12, 44, 38, 39, 102, 3, 73, 36, 57, 101, 38, 39, 44, 44, 39, 38, 101, 57, 36, 58, 102, 38, 38, 45, 45, 38, 38, 102, 252, 30, 38, 23, 42, 17, 16, 19, 19, 16, 17, 42, 23, 38, 24, 42, 16, 17, 19, 19, 17, 16, 43, 3, 155, 36, 23, 43, 17, 16, 20, 20, 16, 17, 43, 23, 36, 23, 43, 16, 17, 19, 19, 17, 16, 43, 252, 147, 38, 23, 42, 17, 16, 19, 19, 16, 17, 42, 23, 38, 24, 42, 16, 17, 19, 19, 17, 16, 43, 239, 2, 86, 94, 253, 170, 0, 0, 1, 2, 21, 254, 102, 2, 195, 5, 176, 0, 3, 0, 0, 65, 17, 35, 17, 2, 195, 174, 254, 102, 7, 74, 248, 182, 0, 0, 2, 1, 232, 254, 242, 2, 229, 5, 176, 0, 3, 0, 7, 0, 0, 65, 51, 17, 35, 55, 17, 35, 17, 1, 232, 253, 253, 253, 253, 254, 242, 3, 27, 173, 2, 246, 253, 10, 0, 0, 1, 0, 106, 0, 0, 4, 72, 5, 176, 0, 11, 0, 0, 65, 53, 33, 17, 33, 17, 33, 21, 33, 17, 33, 17, 4, 72, 254, 154, 254, 233, 254, 159, 1, 97, 1, 23, 3, 82, 232, 1, 118, 254, 138, 232, 252, 174, 3, 82, 0, 1, 0, 128, 254, 96, 4, 93, 5, 176, 0, 19, 0, 0, 97, 53, 33, 17, 33, 53, 33, 17, 33, 17, 33, 21, 33, 17, 33, 21, 33, 17, 33, 17, 4, 93, 254, 154, 1, 102, 254, 154, 254, 233, 254, 160, 1, 96, 254, 160, 1, 96, 1, 23, 223, 2, 121, 226, 1, 118, 254, 138, 226, 253, 135, 223, 254, 96, 1, 160, 0, 3, 0, 89, 255, 236, 4, 130, 4, 78, 0, 51, 0, 75, 0, 99, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 3, 94, 117, 14, 13, 17, 53, 37, 36, 54, 18, 19, 18, 18, 19, 18, 54, 36, 34, 52, 17, 16, 16, 117, 30, 28, 33, 98, 63, 60, 97, 34, 34, 36, 36, 34, 34, 97, 60, 63, 98, 33, 27, 30, 253, 86, 69, 60, 60, 161, 92, 91, 160, 60, 60, 69, 69, 60, 60, 160, 91, 92, 161, 60, 60, 69, 91, 84, 73, 72, 194, 110, 110, 194, 72, 72, 84, 84, 72, 72, 194, 110, 110, 194, 72, 73, 84, 1, 186, 33, 49, 16, 19, 17, 28, 25, 24, 69, 42, 91, 41, 69, 25, 25, 28, 16, 17, 16, 51, 35, 55, 85, 29, 34, 34, 43, 38, 39, 107, 64, 90, 65, 106, 38, 38, 42, 33, 34, 29, 84, 155, 99, 170, 63, 63, 71, 71, 63, 63, 170, 99, 99, 172, 63, 64, 72, 72, 64, 63, 172, 99, 119, 205, 76, 76, 86, 86, 76, 76, 205, 119, 118, 205, 76, 75, 86, 86, 75, 76, 205, 0, 4, 0, 88, 255, 235, 4, 128, 4, 78, 0, 23, 0, 47, 0, 61, 0, 73, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 37, 51, 23, 51, 3, 54, 54, 53, 52, 38, 35, 35, 17, 51, 17, 53, 51, 50, 22, 21, 20, 6, 7, 6, 6, 35, 88, 84, 72, 72, 194, 110, 110, 194, 72, 72, 84, 84, 72, 72, 194, 110, 110, 194, 72, 72, 84, 91, 69, 60, 60, 161, 91, 91, 161, 60, 60, 69, 69, 60, 60, 161, 91, 91, 161, 60, 60, 69, 1, 77, 119, 117, 116, 146, 66, 70, 133, 111, 211, 113, 98, 73, 58, 19, 16, 16, 42, 22, 2, 29, 119, 205, 76, 76, 86, 86, 76, 76, 205, 119, 119, 205, 76, 75, 86, 86, 75, 76, 205, 119, 99, 171, 63, 63, 71, 71, 63, 63, 171, 99, 99, 171, 63, 63, 72, 72, 63, 63, 171, 42, 252, 1, 31, 23, 78, 56, 97, 96, 253, 131, 1, 97, 184, 42, 55, 21, 32, 11, 11, 12, 0, 2, 0, 115, 3, 146, 4, 112, 5, 176, 0, 12, 0, 20, 0, 0, 65, 17, 51, 17, 35, 3, 3, 35, 17, 51, 17, 19, 51, 1, 53, 33, 21, 51, 17, 51, 17, 3, 244, 124, 145, 128, 120, 153, 124, 114, 70, 254, 133, 254, 108, 136, 136, 4, 247, 254, 155, 2, 30, 254, 140, 1, 116, 253, 226, 1, 102, 254, 154, 1, 181, 105, 105, 254, 78, 1, 178, 0, 0, 2, 1, 101, 3, 163, 3, 125, 5, 196, 0, 23, 0, 47, 0, 0, 65, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 101, 43, 37, 37, 98, 56, 54, 97, 36, 36, 42, 42, 36, 36, 97, 54, 56, 98, 37, 37, 43, 145, 20, 18, 17, 45, 26, 25, 45, 16, 16, 19, 19, 16, 16, 45, 25, 26, 45, 17, 18, 20, 4, 178, 57, 98, 37, 37, 42, 42, 37, 37, 98, 57, 56, 99, 38, 37, 44, 44, 37, 38, 99, 56, 27, 47, 18, 17, 19, 19, 17, 18, 47, 27, 27, 46, 16, 17, 18, 19, 17, 16, 45, 0, 1, 0, 154, 1, 173, 4, 153, 5, 176, 0, 14, 0, 0, 65, 1, 23, 19, 19, 55, 1, 37, 39, 5, 19, 35, 19, 37, 7, 2, 34, 254, 234, 179, 211, 211, 178, 254, 244, 1, 142, 66, 254, 140, 39, 219, 36, 254, 137, 66, 3, 122, 254, 185, 123, 1, 105, 254, 140, 129, 1, 67, 91, 209, 163, 1, 182, 254, 81, 166, 205, 0, 0, 2, 0, 41, 0, 0, 4, 133, 5, 176, 0, 27, 0, 31, 0, 0, 65, 3, 51, 19, 51, 53, 35, 19, 51, 53, 35, 19, 35, 3, 35, 19, 35, 3, 33, 21, 51, 3, 33, 21, 51, 3, 51, 19, 55, 19, 51, 3, 2, 137, 73, 179, 73, 253, 223, 52, 247, 217, 75, 180, 74, 201, 74, 178, 75, 254, 247, 235, 52, 254, 254, 228, 73, 179, 73, 30, 51, 201, 51, 1, 154, 254, 102, 1, 154, 169, 1, 34, 171, 1, 160, 254, 96, 1, 160, 254, 96, 171, 254, 222, 169, 254, 102, 1, 154, 169, 1, 34, 254, 222, 0, 3, 0, 75, 255, 235, 4, 212, 5, 197, 0, 54, 0, 74, 0, 99, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 23, 33, 39, 54, 54, 53, 35, 20, 6, 7, 3, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 5, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 55, 1, 6, 6, 7, 6, 6, 3, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 20, 7, 6, 6, 7, 7, 38, 38, 39, 38, 38, 75, 60, 57, 56, 162, 101, 63, 108, 49, 31, 61, 30, 65, 1, 62, 188, 78, 73, 238, 35, 32, 247, 80, 43, 75, 28, 28, 32, 48, 43, 44, 123, 75, 89, 144, 51, 51, 55, 24, 23, 15, 39, 23, 18, 53, 86, 31, 34, 37, 1, 192, 38, 63, 22, 22, 24, 7, 11, 10, 42, 28, 6, 1, 7, 19, 39, 20, 29, 60, 92, 17, 17, 17, 52, 35, 23, 37, 13, 13, 14, 6, 7, 32, 31, 93, 13, 23, 8, 12, 13, 1, 115, 86, 144, 52, 52, 58, 20, 19, 12, 33, 20, 83, 240, 94, 237, 137, 78, 136, 57, 1, 61, 65, 31, 70, 40, 39, 90, 51, 68, 122, 47, 46, 54, 53, 49, 49, 140, 86, 52, 98, 49, 32, 67, 35, 13, 38, 78, 43, 48, 110, 235, 28, 25, 24, 68, 40, 21, 47, 26, 26, 63, 23, 5, 254, 170, 11, 17, 7, 9, 10, 3, 130, 31, 55, 21, 21, 24, 22, 18, 18, 46, 24, 9, 31, 19, 20, 43, 20, 69, 21, 41, 20, 27, 52, 0, 0, 2, 0, 37, 255, 248, 4, 150, 5, 162, 0, 94, 0, 117, 0, 0, 65, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 2, 7, 6, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 19, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 5, 54, 54, 55, 54, 54, 51, 50, 22, 23, 3, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 4, 146, 4, 66, 65, 66, 190, 118, 136, 226, 82, 83, 95, 5, 5, 63, 69, 69, 212, 146, 34, 74, 37, 37, 67, 26, 32, 23, 57, 31, 32, 66, 31, 98, 151, 49, 50, 47, 5, 4, 66, 58, 57, 163, 102, 90, 138, 46, 46, 43, 4, 17, 16, 16, 43, 26, 10, 20, 7, 8, 7, 2, 43, 31, 100, 77, 76, 122, 45, 45, 57, 11, 8, 21, 28, 28, 90, 60, 30, 54, 24, 16, 30, 13, 11, 28, 17, 21, 52, 29, 77, 110, 36, 35, 36, 253, 103, 7, 31, 24, 24, 67, 44, 12, 14, 5, 38, 1, 9, 18, 9, 15, 31, 15, 25, 38, 12, 11, 9, 3, 55, 139, 228, 82, 81, 89, 119, 103, 104, 254, 234, 158, 159, 255, 89, 89, 96, 9, 10, 9, 28, 19, 135, 12, 20, 7, 8, 8, 66, 67, 66, 200, 134, 133, 223, 81, 81, 91, 56, 58, 58, 179, 122, 79, 133, 48, 48, 54, 4, 8, 8, 32, 29, 2, 15, 31, 45, 63, 58, 59, 164, 102, 87, 142, 50, 51, 54, 19, 17, 12, 31, 18, 21, 34, 12, 16, 16, 91, 74, 73, 185, 37, 71, 109, 37, 38, 38, 2, 1, 254, 65, 13, 14, 20, 7, 11, 9, 30, 31, 28, 86, 0, 0, 2, 0, 86, 254, 55, 4, 145, 5, 196, 0, 106, 0, 139, 0, 0, 65, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 5, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 37, 22, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 22, 22, 4, 145, 63, 61, 37, 96, 58, 36, 82, 44, 53, 82, 32, 22, 35, 14, 33, 25, 27, 29, 29, 90, 62, 59, 89, 30, 30, 30, 1, 23, 72, 66, 67, 192, 120, 117, 191, 67, 68, 73, 30, 29, 15, 38, 23, 27, 46, 19, 34, 37, 65, 62, 39, 102, 61, 58, 143, 53, 43, 64, 23, 34, 28, 19, 18, 28, 101, 70, 48, 95, 37, 38, 46, 254, 234, 93, 77, 76, 195, 101, 117, 189, 67, 67, 73, 26, 26, 16, 41, 25, 24, 41, 17, 39, 41, 253, 193, 43, 72, 29, 29, 47, 18, 35, 29, 17, 15, 11, 29, 17, 34, 72, 39, 90, 115, 33, 33, 25, 12, 12, 11, 29, 20, 33, 72, 1, 219, 91, 132, 49, 30, 49, 21, 14, 24, 12, 14, 25, 12, 9, 17, 10, 22, 54, 38, 31, 56, 21, 21, 25, 32, 27, 28, 74, 43, 103, 160, 55, 54, 56, 54, 49, 50, 141, 86, 66, 103, 42, 21, 39, 17, 15, 37, 21, 40, 100, 60, 91, 132, 49, 32, 51, 22, 21, 38, 19, 15, 28, 14, 23, 52, 33, 26, 45, 18, 27, 31, 17, 22, 22, 75, 59, 1, 120, 161, 48, 49, 41, 49, 48, 47, 139, 90, 62, 99, 40, 24, 43, 19, 13, 31, 18, 40, 105, 253, 13, 24, 11, 12, 24, 13, 25, 56, 36, 29, 50, 21, 14, 24, 9, 12, 21, 11, 27, 43, 24, 24, 57, 40, 27, 48, 20, 16, 27, 9, 12, 22, 0, 0, 1, 0, 216, 0, 0, 3, 239, 5, 176, 0, 16, 0, 0, 97, 51, 17, 33, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 51, 3, 23, 216, 254, 213, 119, 184, 62, 63, 64, 64, 63, 62, 184, 119, 83, 5, 176, 71, 62, 63, 172, 100, 101, 172, 62, 63, 70, 0, 0, 1, 0, 213, 2, 175, 4, 27, 5, 176, 0, 8, 0, 0, 83, 51, 19, 55, 23, 19, 51, 1, 35, 213, 224, 173, 21, 21, 176, 223, 254, 194, 201, 2, 175, 1, 198, 84, 84, 254, 58, 3, 1, 0, 0, 1, 0, 26, 1, 122, 4, 120, 3, 56, 0, 49, 0, 0, 65, 39, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 120, 188, 22, 18, 18, 48, 27, 22, 44, 22, 23, 47, 25, 36, 71, 37, 38, 81, 45, 68, 113, 40, 41, 44, 180, 23, 20, 19, 50, 27, 25, 47, 24, 22, 45, 23, 38, 72, 37, 37, 77, 44, 68, 114, 41, 40, 45, 2, 240, 19, 31, 59, 23, 23, 28, 10, 10, 11, 32, 21, 32, 49, 16, 18, 18, 54, 48, 49, 135, 81, 22, 31, 58, 23, 22, 27, 12, 12, 10, 31, 19, 35, 50, 16, 17, 16, 56, 50, 49, 138, 0, 255, 255, 0, 28, 0, 0, 4, 204, 7, 31, 6, 38, 0, 2, 0, 0, 0, 7, 1, 91, 0, 134, 1, 89, 255, 255, 0, 28, 0, 0, 4, 204, 7, 65, 6, 38, 0, 2, 0, 0, 0, 7, 1, 95, 0, 0, 1, 159, 255, 255, 0, 28, 0, 0, 4, 204, 7, 73, 6, 38, 0, 2, 0, 0, 0, 7, 1, 92, 0, 134, 1, 93, 255, 255, 0, 28, 0, 0, 4, 204, 7, 47, 6, 38, 0, 2, 0, 0, 0, 7, 1, 97, 255, 243, 1, 93, 255, 255, 0, 28, 0, 0, 4, 204, 7, 34, 6, 38, 0, 2, 0, 0, 0, 7, 1, 90, 255, 108, 1, 92, 255, 255, 0, 28, 0, 0, 4, 204, 6, 242, 6, 38, 0, 2, 0, 0, 0, 7, 1, 94, 255, 254, 1, 66, 0, 2, 0, 28, 254, 88, 4, 204, 5, 176, 0, 35, 0, 38, 0, 0, 65, 35, 1, 33, 19, 33, 19, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 1, 19, 19, 2, 248, 255, 254, 35, 1, 40, 86, 1, 181, 81, 31, 49, 16, 20, 20, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 45, 69, 253, 19, 153, 149, 5, 176, 250, 80, 1, 48, 254, 222, 22, 51, 27, 31, 67, 33, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 18, 2, 31, 2, 24, 253, 232, 0, 255, 255, 0, 28, 0, 0, 4, 204, 7, 136, 6, 38, 0, 2, 0, 0, 0, 7, 1, 98, 0, 18, 1, 245, 255, 255, 0, 28, 0, 0, 4, 204, 8, 86, 6, 38, 0, 2, 0, 0, 0, 7, 2, 107, 255, 242, 1, 160, 255, 255, 0, 28, 0, 0, 4, 204, 7, 100, 6, 38, 0, 2, 0, 0, 0, 7, 1, 93, 0, 141, 1, 94, 255, 255, 0, 48, 0, 0, 4, 153, 7, 31, 6, 38, 0, 72, 0, 0, 0, 7, 1, 91, 0, 230, 1, 89, 255, 255, 0, 79, 255, 235, 4, 119, 7, 30, 6, 38, 0, 4, 0, 0, 0, 7, 1, 91, 0, 184, 1, 88, 255, 255, 0, 79, 255, 235, 4, 119, 7, 73, 6, 38, 0, 4, 0, 0, 0, 7, 1, 100, 0, 50, 1, 92, 255, 255, 0, 79, 254, 59, 4, 119, 5, 197, 6, 38, 0, 4, 0, 0, 0, 6, 1, 102, 51, 5, 255, 255, 0, 79, 255, 235, 4, 119, 7, 72, 6, 38, 0, 4, 0, 0, 0, 7, 1, 92, 0, 184, 1, 92, 255, 255, 0, 125, 0, 0, 4, 116, 7, 65, 6, 38, 0, 5, 0, 0, 0, 7, 1, 100, 255, 162, 1, 84, 0, 2, 255, 214, 0, 0, 4, 131, 5, 176, 0, 19, 0, 39, 0, 0, 115, 33, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 33, 17, 35, 21, 51, 33, 53, 35, 17, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 35, 17, 140, 1, 135, 139, 230, 82, 82, 91, 91, 83, 84, 235, 145, 254, 135, 182, 182, 1, 254, 227, 94, 86, 131, 45, 44, 45, 46, 43, 44, 125, 79, 108, 98, 89, 88, 245, 147, 120, 147, 246, 89, 88, 99, 253, 135, 180, 180, 1, 149, 64, 58, 58, 161, 98, 122, 104, 163, 57, 57, 60, 1, 161, 255, 255, 0, 147, 0, 0, 4, 104, 7, 22, 6, 38, 0, 6, 0, 0, 0, 7, 1, 91, 0, 143, 1, 80, 255, 255, 0, 147, 0, 0, 4, 104, 7, 56, 6, 38, 0, 6, 0, 0, 0, 7, 1, 95, 0, 9, 1, 150, 255, 255, 0, 147, 0, 0, 4, 104, 7, 65, 6, 38, 0, 6, 0, 0, 0, 7, 1, 100, 0, 9, 1, 84, 255, 255, 0, 147, 0, 0, 4, 104, 7, 64, 6, 38, 0, 6, 0, 0, 0, 7, 1, 92, 0, 143, 1, 84, 255, 255, 0, 147, 0, 0, 4, 104, 7, 38, 6, 38, 0, 6, 0, 0, 0, 7, 1, 97, 255, 252, 1, 84, 255, 255, 0, 147, 0, 0, 4, 104, 7, 67, 6, 38, 0, 6, 0, 0, 0, 7, 1, 96, 0, 18, 1, 100, 255, 255, 0, 147, 0, 0, 4, 104, 7, 25, 6, 38, 0, 6, 0, 0, 0, 7, 1, 90, 255, 117, 1, 83, 255, 255, 0, 147, 0, 0, 4, 104, 6, 233, 6, 38, 0, 6, 0, 0, 0, 7, 1, 94, 0, 6, 1, 57, 0, 1, 0, 148, 254, 75, 4, 71, 5, 176, 0, 29, 0, 0, 65, 33, 17, 1, 39, 33, 17, 33, 17, 1, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 71, 254, 231, 254, 128, 1, 254, 231, 1, 25, 1, 129, 21, 21, 15, 40, 25, 26, 51, 22, 14, 38, 64, 38, 88, 139, 49, 48, 52, 5, 176, 252, 142, 3, 111, 3, 250, 80, 3, 113, 252, 143, 39, 48, 69, 21, 16, 16, 5, 6, 222, 10, 7, 52, 51, 50, 149, 96, 0, 0, 1, 0, 147, 254, 88, 4, 104, 5, 176, 0, 40, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 53, 33, 17, 4, 3, 253, 170, 2, 184, 252, 46, 2, 94, 24, 39, 15, 19, 20, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 45, 125, 253, 69, 2, 126, 222, 1, 111, 229, 250, 80, 20, 44, 23, 31, 66, 33, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 18, 227, 1, 155, 0, 0, 2, 255, 214, 0, 0, 4, 131, 5, 176, 0, 19, 0, 39, 0, 0, 115, 33, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 33, 17, 35, 21, 51, 33, 53, 35, 17, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 35, 17, 140, 1, 135, 139, 230, 82, 82, 91, 91, 83, 84, 235, 145, 254, 135, 182, 182, 1, 254, 227, 94, 86, 131, 45, 44, 45, 46, 43, 44, 125, 79, 108, 98, 89, 88, 245, 147, 120, 147, 246, 89, 88, 99, 253, 135, 180, 180, 1, 149, 64, 58, 58, 161, 98, 122, 104, 163, 57, 57, 60, 1, 161, 255, 255, 0, 87, 255, 236, 4, 108, 7, 64, 6, 38, 0, 8, 0, 0, 0, 7, 1, 95, 0, 21, 1, 158, 255, 255, 0, 87, 255, 236, 4, 108, 7, 72, 6, 38, 0, 8, 0, 0, 0, 7, 1, 92, 0, 155, 1, 92, 255, 255, 0, 87, 254, 22, 4, 108, 5, 196, 6, 38, 0, 8, 0, 0, 0, 7, 1, 104, 0, 224, 254, 190, 0, 2, 0, 23, 0, 0, 4, 216, 5, 176, 0, 19, 0, 23, 0, 0, 65, 53, 33, 21, 33, 53, 33, 21, 35, 21, 51, 17, 33, 17, 33, 17, 33, 17, 51, 53, 1, 53, 33, 21, 4, 17, 254, 234, 254, 100, 254, 233, 49, 49, 1, 23, 1, 156, 1, 22, 199, 252, 135, 1, 156, 4, 194, 238, 238, 238, 238, 171, 251, 233, 2, 119, 253, 137, 4, 23, 171, 254, 153, 188, 188, 0, 255, 255, 0, 123, 0, 0, 4, 68, 7, 64, 6, 38, 0, 9, 0, 0, 0, 7, 1, 92, 0, 107, 1, 84, 255, 255, 0, 193, 0, 0, 4, 11, 7, 31, 6, 38, 0, 10, 0, 0, 0, 7, 1, 91, 0, 101, 1, 89, 255, 255, 0, 193, 0, 0, 4, 11, 7, 65, 6, 38, 0, 10, 0, 0, 0, 7, 1, 95, 255, 224, 1, 159, 255, 255, 0, 193, 0, 0, 4, 11, 7, 73, 6, 38, 0, 10, 0, 0, 0, 7, 1, 92, 0, 101, 1, 93, 255, 255, 0, 193, 0, 0, 4, 11, 7, 47, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 255, 210, 1, 93, 255, 255, 0, 193, 0, 0, 4, 11, 7, 76, 6, 38, 0, 10, 0, 0, 0, 7, 1, 96, 255, 233, 1, 109, 255, 255, 0, 193, 0, 0, 4, 11, 7, 34, 6, 38, 0, 10, 0, 0, 0, 7, 1, 90, 255, 75, 1, 92, 255, 255, 0, 193, 0, 0, 4, 11, 6, 242, 6, 38, 0, 10, 0, 0, 0, 7, 1, 94, 255, 221, 1, 66, 0, 1, 0, 193, 254, 88, 4, 11, 5, 176, 0, 40, 0, 0, 83, 21, 33, 17, 33, 21, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 33, 53, 33, 17, 33, 53, 193, 1, 21, 254, 235, 1, 78, 24, 38, 15, 20, 20, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 45, 1, 2, 254, 228, 1, 28, 5, 176, 227, 252, 21, 226, 20, 43, 22, 32, 67, 33, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 18, 226, 3, 235, 227, 255, 255, 0, 193, 0, 0, 4, 11, 7, 100, 6, 38, 0, 10, 0, 0, 0, 7, 1, 93, 0, 108, 1, 94, 255, 255, 0, 111, 255, 236, 5, 64, 7, 61, 6, 38, 0, 11, 0, 0, 0, 7, 1, 92, 1, 214, 1, 81, 255, 255, 0, 129, 254, 12, 4, 235, 5, 176, 6, 38, 0, 12, 0, 0, 0, 7, 1, 104, 0, 172, 254, 180, 255, 255, 0, 150, 0, 0, 4, 90, 7, 2, 6, 38, 0, 13, 0, 0, 0, 7, 1, 91, 255, 53, 1, 60, 255, 255, 0, 150, 0, 0, 4, 90, 5, 177, 6, 38, 0, 13, 0, 0, 0, 7, 0, 109, 0, 254, 255, 153, 255, 255, 0, 150, 254, 35, 4, 90, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 1, 104, 0, 177, 254, 203, 255, 255, 0, 150, 0, 0, 4, 90, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 1, 96, 0, 142, 253, 221, 0, 1, 0, 51, 0, 0, 4, 119, 5, 176, 0, 13, 0, 0, 65, 17, 33, 17, 7, 21, 55, 17, 33, 53, 33, 17, 55, 53, 1, 205, 254, 230, 128, 128, 3, 196, 253, 86, 232, 3, 118, 2, 58, 253, 116, 37, 195, 37, 253, 159, 227, 1, 208, 68, 195, 0, 255, 255, 0, 123, 0, 0, 4, 67, 7, 31, 6, 38, 0, 15, 0, 0, 0, 7, 1, 91, 0, 114, 1, 89, 255, 255, 0, 123, 0, 0, 4, 67, 7, 74, 6, 38, 0, 15, 0, 0, 0, 7, 1, 100, 255, 237, 1, 93, 255, 255, 0, 123, 254, 28, 4, 67, 5, 176, 6, 38, 0, 15, 0, 0, 0, 7, 1, 104, 0, 177, 254, 196, 255, 255, 0, 123, 0, 0, 4, 67, 7, 100, 6, 38, 0, 15, 0, 0, 0, 7, 1, 93, 0, 121, 1, 94, 255, 255, 0, 80, 255, 236, 4, 123, 7, 52, 6, 38, 0, 16, 0, 0, 0, 7, 1, 91, 0, 116, 1, 110, 255, 255, 0, 80, 255, 236, 4, 123, 7, 86, 6, 38, 0, 16, 0, 0, 0, 7, 1, 95, 255, 239, 1, 180, 255, 255, 0, 80, 255, 236, 4, 123, 7, 94, 6, 38, 0, 16, 0, 0, 0, 7, 1, 92, 0, 116, 1, 114, 255, 255, 0, 80, 255, 236, 4, 123, 7, 68, 6, 38, 0, 16, 0, 0, 0, 7, 1, 97, 255, 225, 1, 114, 255, 255, 0, 80, 255, 236, 4, 123, 7, 55, 6, 38, 0, 16, 0, 0, 0, 7, 1, 90, 255, 90, 1, 113, 0, 2, 0, 93, 255, 236, 4, 224, 5, 223, 0, 41, 0, 67, 0, 0, 65, 53, 52, 38, 39, 54, 54, 55, 54, 54, 53, 35, 20, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 1, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 136, 32, 33, 39, 58, 19, 18, 19, 194, 6, 6, 6, 19, 13, 31, 73, 41, 52, 121, 68, 126, 195, 67, 67, 70, 70, 67, 67, 196, 126, 126, 201, 70, 70, 74, 254, 227, 30, 30, 31, 97, 68, 69, 92, 28, 28, 24, 24, 28, 28, 92, 68, 69, 97, 31, 31, 29, 2, 109, 212, 94, 165, 72, 22, 67, 44, 42, 103, 61, 35, 60, 25, 24, 38, 13, 35, 58, 21, 26, 28, 96, 85, 86, 236, 140, 212, 140, 235, 85, 86, 95, 95, 85, 85, 236, 1, 98, 214, 89, 150, 54, 55, 62, 62, 55, 55, 150, 88, 214, 89, 150, 54, 54, 61, 61, 54, 54, 150, 0, 255, 255, 0, 80, 255, 236, 4, 153, 7, 96, 6, 38, 0, 16, 0, 0, 0, 7, 1, 99, 0, 124, 1, 114, 255, 255, 0, 80, 255, 236, 4, 123, 7, 7, 6, 38, 0, 16, 0, 0, 0, 7, 1, 94, 255, 236, 1, 87, 0, 3, 0, 48, 255, 161, 4, 128, 5, 238, 0, 37, 0, 57, 0, 71, 0, 0, 65, 53, 52, 38, 39, 55, 35, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 3, 51, 55, 22, 22, 51, 50, 54, 55, 54, 54, 37, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 1, 38, 38, 39, 38, 38, 37, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 1, 22, 22, 4, 128, 71, 68, 130, 184, 68, 26, 58, 30, 38, 84, 45, 126, 195, 67, 67, 70, 15, 15, 15, 45, 30, 157, 183, 91, 59, 144, 86, 126, 201, 70, 70, 74, 252, 242, 24, 28, 28, 92, 68, 25, 46, 20, 19, 33, 15, 254, 122, 2, 2, 1, 2, 1, 1, 241, 30, 30, 31, 97, 68, 55, 80, 29, 1, 148, 8, 8, 2, 109, 212, 138, 231, 86, 230, 120, 17, 27, 10, 12, 12, 96, 85, 86, 236, 140, 212, 66, 123, 55, 54, 98, 42, 254, 234, 160, 42, 43, 95, 85, 85, 236, 140, 214, 89, 150, 54, 54, 61, 9, 8, 8, 23, 15, 253, 77, 13, 26, 13, 19, 40, 235, 214, 89, 150, 54, 55, 62, 40, 36, 2, 203, 38, 84, 255, 255, 0, 48, 255, 161, 4, 128, 7, 93, 6, 38, 0, 219, 0, 0, 0, 7, 1, 91, 0, 116, 1, 151, 255, 255, 0, 80, 255, 236, 4, 123, 7, 121, 6, 38, 0, 16, 0, 0, 0, 7, 1, 93, 0, 123, 1, 115, 255, 255, 0, 131, 0, 0, 4, 176, 7, 19, 6, 38, 0, 19, 0, 0, 0, 7, 1, 91, 0, 95, 1, 77, 255, 255, 0, 131, 0, 0, 4, 176, 7, 62, 6, 38, 0, 19, 0, 0, 0, 7, 1, 100, 255, 218, 1, 81, 255, 255, 0, 131, 254, 35, 4, 176, 5, 176, 6, 38, 0, 19, 0, 0, 0, 7, 1, 104, 0, 166, 254, 203, 255, 255, 0, 89, 255, 237, 4, 140, 7, 52, 6, 38, 0, 20, 0, 0, 0, 7, 1, 91, 0, 147, 1, 110, 255, 255, 0, 89, 255, 237, 4, 140, 7, 95, 6, 38, 0, 20, 0, 0, 0, 7, 1, 100, 0, 13, 1, 114, 255, 255, 0, 89, 254, 45, 4, 140, 5, 196, 6, 38, 0, 20, 0, 0, 0, 6, 1, 102, 86, 247, 255, 255, 0, 89, 255, 237, 4, 140, 7, 94, 6, 38, 0, 20, 0, 0, 0, 7, 1, 92, 0, 147, 1, 114, 0, 1, 0, 27, 0, 0, 4, 177, 5, 176, 0, 15, 0, 0, 65, 53, 35, 17, 33, 53, 33, 21, 33, 17, 35, 21, 51, 17, 33, 17, 3, 214, 230, 1, 193, 251, 106, 1, 187, 229, 229, 1, 26, 2, 245, 180, 1, 34, 229, 229, 254, 222, 180, 253, 11, 2, 245, 0, 255, 255, 0, 27, 0, 0, 4, 177, 7, 71, 6, 38, 0, 21, 0, 0, 0, 7, 1, 100, 255, 238, 1, 90, 255, 255, 0, 126, 255, 236, 4, 78, 7, 28, 6, 38, 0, 22, 0, 0, 0, 7, 1, 91, 0, 124, 1, 86, 255, 255, 0, 126, 255, 236, 4, 78, 7, 62, 6, 38, 0, 22, 0, 0, 0, 7, 1, 95, 255, 247, 1, 156, 255, 255, 0, 126, 255, 236, 4, 78, 7, 70, 6, 38, 0, 22, 0, 0, 0, 7, 1, 92, 0, 124, 1, 90, 255, 255, 0, 126, 255, 236, 4, 78, 7, 44, 6, 38, 0, 22, 0, 0, 0, 7, 1, 97, 255, 233, 1, 90, 255, 255, 0, 126, 255, 236, 4, 78, 7, 31, 6, 38, 0, 22, 0, 0, 0, 7, 1, 90, 255, 98, 1, 89, 0, 1, 0, 133, 255, 236, 5, 183, 5, 229, 0, 43, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 3, 33, 3, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 54, 54, 55, 54, 54, 53, 35, 20, 6, 7, 6, 6, 7, 4, 84, 254, 233, 1, 1, 29, 29, 27, 77, 50, 52, 78, 25, 21, 23, 1, 254, 231, 1, 69, 63, 63, 177, 110, 117, 183, 64, 63, 66, 96, 135, 43, 42, 39, 200, 9, 16, 16, 62, 52, 5, 176, 252, 59, 73, 110, 35, 33, 34, 42, 41, 35, 102, 65, 3, 197, 252, 59, 122, 191, 65, 65, 68, 68, 66, 65, 190, 122, 2, 100, 3, 54, 51, 50, 149, 99, 60, 91, 30, 31, 34, 3, 0, 255, 255, 0, 126, 255, 236, 4, 161, 7, 72, 6, 38, 0, 22, 0, 0, 0, 7, 1, 99, 0, 132, 1, 90, 255, 255, 0, 126, 255, 236, 4, 78, 6, 239, 6, 38, 0, 22, 0, 0, 0, 7, 1, 94, 255, 244, 1, 63, 0, 1, 0, 126, 254, 153, 4, 78, 5, 176, 0, 60, 0, 0, 65, 33, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 3, 33, 3, 20, 22, 23, 22, 22, 23, 50, 50, 51, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 4, 77, 254, 233, 1, 28, 26, 27, 80, 52, 49, 75, 25, 24, 26, 1, 254, 231, 1, 66, 60, 58, 165, 101, 2, 6, 3, 9, 14, 5, 6, 7, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 8, 8, 8, 26, 18, 61, 98, 34, 41, 43, 5, 176, 252, 59, 70, 106, 36, 36, 37, 37, 37, 35, 107, 69, 3, 197, 252, 59, 119, 187, 65, 63, 71, 5, 14, 30, 14, 19, 37, 19, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 20, 36, 17, 15, 29, 13, 24, 77, 52, 61, 162, 98, 0, 255, 255, 0, 126, 255, 236, 4, 78, 7, 133, 6, 38, 0, 22, 0, 0, 0, 7, 1, 98, 0, 8, 1, 242, 255, 255, 0, 126, 255, 236, 4, 78, 7, 97, 6, 38, 0, 22, 0, 0, 0, 7, 1, 93, 0, 131, 1, 91, 255, 255, 0, 26, 0, 0, 4, 183, 7, 31, 6, 38, 0, 24, 0, 0, 0, 7, 1, 91, 0, 109, 1, 89, 255, 255, 0, 26, 0, 0, 4, 183, 7, 73, 6, 38, 0, 24, 0, 0, 0, 7, 1, 92, 0, 109, 1, 93, 255, 255, 0, 26, 0, 0, 4, 183, 7, 47, 6, 38, 0, 24, 0, 0, 0, 7, 1, 97, 255, 218, 1, 93, 255, 255, 0, 26, 0, 0, 4, 183, 7, 34, 6, 38, 0, 24, 0, 0, 0, 7, 1, 90, 255, 83, 1, 92, 255, 255, 0, 33, 0, 0, 4, 200, 7, 31, 6, 38, 0, 26, 0, 0, 0, 7, 1, 91, 0, 128, 1, 89, 255, 255, 0, 33, 0, 0, 4, 200, 7, 73, 6, 38, 0, 26, 0, 0, 0, 7, 1, 92, 0, 128, 1, 93, 255, 255, 0, 33, 0, 0, 4, 200, 7, 47, 6, 38, 0, 26, 0, 0, 0, 7, 1, 97, 255, 237, 1, 93, 255, 255, 0, 33, 0, 0, 4, 200, 7, 34, 6, 38, 0, 26, 0, 0, 0, 7, 1, 90, 255, 102, 1, 92, 255, 255, 0, 89, 0, 0, 4, 129, 7, 28, 6, 38, 0, 27, 0, 0, 0, 7, 1, 91, 0, 130, 1, 86, 255, 255, 0, 89, 0, 0, 4, 129, 7, 71, 6, 38, 0, 27, 0, 0, 0, 7, 1, 100, 255, 253, 1, 90, 255, 255, 0, 89, 0, 0, 4, 129, 7, 73, 6, 38, 0, 27, 0, 0, 0, 7, 1, 96, 0, 5, 1, 106, 255, 255, 0, 115, 255, 236, 4, 75, 5, 221, 6, 38, 0, 28, 0, 0, 0, 6, 1, 91, 97, 23, 255, 255, 0, 115, 255, 236, 4, 75, 5, 255, 6, 38, 0, 28, 0, 0, 0, 6, 1, 95, 220, 93, 255, 255, 0, 115, 255, 236, 4, 75, 6, 7, 6, 38, 0, 28, 0, 0, 0, 6, 1, 92, 97, 27, 255, 255, 0, 115, 255, 236, 4, 75, 5, 237, 6, 38, 0, 28, 0, 0, 0, 6, 1, 97, 206, 27, 255, 255, 0, 115, 255, 236, 4, 75, 5, 224, 6, 38, 0, 28, 0, 0, 0, 7, 1, 90, 255, 71, 0, 26, 255, 255, 0, 115, 255, 236, 4, 75, 5, 176, 6, 38, 0, 28, 0, 0, 0, 6, 1, 94, 217, 0, 0, 2, 0, 115, 254, 88, 4, 75, 4, 78, 0, 81, 0, 101, 0, 0, 101, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 53, 38, 38, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 33, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 39, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 21, 6, 6, 7, 6, 6, 3, 44, 29, 45, 16, 20, 21, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 45, 51, 21, 22, 70, 62, 62, 169, 98, 109, 169, 58, 59, 61, 1, 22, 23, 23, 20, 58, 39, 53, 79, 25, 20, 21, 155, 113, 178, 63, 76, 78, 56, 50, 50, 139, 83, 51, 88, 37, 36, 60, 23, 5, 11, 252, 44, 63, 20, 16, 16, 28, 29, 29, 92, 65, 142, 12, 42, 29, 29, 72, 10, 21, 48, 25, 32, 67, 34, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 18, 17, 41, 114, 87, 1, 208, 94, 143, 47, 47, 48, 55, 47, 47, 124, 69, 33, 53, 18, 14, 16, 29, 26, 21, 58, 35, 64, 38, 37, 45, 144, 94, 70, 119, 43, 43, 48, 19, 17, 16, 44, 25, 26, 46, 166, 23, 20, 17, 45, 25, 37, 63, 23, 22, 25, 186, 21, 41, 16, 16, 20, 0, 255, 255, 0, 115, 255, 236, 4, 75, 6, 70, 6, 38, 0, 28, 0, 0, 0, 7, 1, 98, 255, 238, 0, 179, 255, 255, 0, 115, 255, 236, 4, 75, 7, 20, 6, 38, 0, 28, 0, 0, 0, 6, 2, 107, 205, 94, 255, 255, 0, 115, 255, 236, 4, 75, 6, 34, 6, 38, 0, 28, 0, 0, 0, 6, 1, 93, 104, 28, 255, 255, 0, 46, 255, 236, 4, 170, 5, 222, 6, 38, 0, 73, 0, 0, 0, 7, 1, 91, 0, 157, 0, 24, 255, 255, 0, 117, 255, 235, 4, 60, 5, 221, 6, 38, 0, 30, 0, 0, 0, 7, 1, 91, 0, 129, 0, 23, 255, 255, 0, 117, 255, 235, 4, 60, 6, 8, 6, 38, 0, 30, 0, 0, 0, 6, 1, 100, 252, 27, 255, 255, 0, 117, 254, 59, 4, 60, 4, 78, 6, 38, 0, 30, 0, 0, 0, 6, 1, 102, 51, 5, 255, 255, 0, 117, 255, 235, 4, 60, 6, 7, 6, 38, 0, 30, 0, 0, 0, 7, 1, 92, 0, 129, 0, 27, 255, 255, 0, 40, 255, 236, 5, 122, 6, 24, 4, 38, 0, 31, 184, 0, 0, 7, 0, 109, 2, 114, 0, 0, 0, 2, 0, 97, 255, 236, 4, 210, 6, 0, 0, 37, 0, 63, 0, 0, 65, 53, 35, 53, 33, 21, 35, 21, 51, 21, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 23, 51, 17, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 4, 210, 169, 254, 233, 244, 244, 17, 37, 19, 40, 95, 56, 101, 157, 55, 55, 57, 58, 55, 54, 157, 99, 55, 93, 39, 26, 47, 20, 14, 251, 253, 78, 24, 26, 26, 83, 59, 33, 56, 22, 27, 40, 15, 14, 36, 23, 24, 61, 37, 59, 82, 26, 26, 23, 4, 196, 180, 136, 136, 180, 235, 19, 32, 13, 26, 27, 80, 73, 73, 204, 123, 21, 118, 201, 73, 73, 83, 26, 24, 16, 42, 25, 113, 4, 196, 253, 76, 21, 68, 119, 45, 44, 51, 14, 12, 15, 46, 29, 254, 74, 26, 43, 15, 15, 17, 50, 44, 43, 117, 255, 255, 0, 112, 255, 236, 4, 104, 5, 222, 6, 38, 0, 32, 0, 0, 0, 6, 1, 91, 102, 24, 255, 255, 0, 112, 255, 236, 4, 104, 6, 0, 6, 38, 0, 32, 0, 0, 0, 6, 1, 95, 225, 94, 255, 255, 0, 112, 255, 236, 4, 104, 6, 9, 6, 38, 0, 32, 0, 0, 0, 6, 1, 100, 225, 28, 255, 255, 0, 112, 255, 236, 4, 104, 6, 8, 6, 38, 0, 32, 0, 0, 0, 6, 1, 92, 102, 28, 255, 255, 0, 112, 255, 236, 4, 104, 5, 238, 6, 38, 0, 32, 0, 0, 0, 6, 1, 97, 211, 28, 255, 255, 0, 112, 255, 236, 4, 104, 6, 11, 6, 38, 0, 32, 0, 0, 0, 6, 1, 96, 234, 44, 255, 255, 0, 112, 255, 236, 4, 104, 5, 225, 6, 38, 0, 32, 0, 0, 0, 7, 1, 90, 255, 76, 0, 27, 255, 255, 0, 112, 255, 236, 4, 104, 5, 177, 6, 38, 0, 32, 0, 0, 0, 6, 1, 94, 222, 1, 0, 1, 0, 149, 254, 75, 4, 56, 4, 78, 0, 50, 0, 0, 115, 33, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 39, 39, 33, 149, 1, 22, 13, 34, 20, 27, 67, 40, 42, 64, 22, 21, 23, 19, 17, 16, 42, 26, 26, 52, 22, 14, 37, 65, 37, 87, 139, 49, 48, 52, 51, 46, 46, 129, 79, 57, 101, 42, 31, 55, 23, 1, 12, 254, 254, 3, 16, 18, 30, 12, 15, 17, 22, 25, 25, 82, 60, 253, 66, 45, 67, 21, 17, 18, 6, 6, 224, 10, 7, 52, 50, 50, 149, 96, 2, 191, 119, 167, 53, 52, 48, 30, 29, 21, 57, 35, 12, 140, 0, 2, 0, 112, 254, 111, 4, 104, 4, 78, 0, 62, 0, 76, 0, 0, 83, 20, 22, 23, 22, 22, 23, 22, 22, 51, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 39, 39, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 1, 50, 22, 23, 22, 22, 23, 21, 33, 54, 54, 55, 54, 54, 112, 70, 65, 64, 183, 106, 5, 4, 3, 43, 38, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 57, 45, 73, 107, 31, 139, 48, 154, 82, 58, 98, 38, 38, 49, 8, 1, 2, 223, 66, 63, 64, 183, 117, 113, 192, 70, 70, 78, 2, 9, 53, 81, 28, 28, 30, 2, 254, 56, 10, 40, 30, 29, 78, 1, 247, 102, 181, 69, 70, 88, 10, 1, 1, 38, 94, 43, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 41, 16, 27, 84, 44, 150, 62, 62, 36, 33, 33, 90, 51, 5, 118, 119, 197, 70, 70, 77, 82, 74, 74, 205, 124, 1, 78, 33, 28, 29, 78, 44, 22, 53, 86, 31, 31, 33, 0, 255, 255, 0, 113, 254, 86, 4, 71, 5, 255, 6, 38, 0, 34, 0, 0, 0, 6, 1, 95, 223, 93, 255, 255, 0, 113, 254, 86, 4, 71, 6, 7, 6, 38, 0, 34, 0, 0, 0, 6, 1, 92, 100, 27, 255, 255, 0, 113, 254, 86, 4, 71, 6, 179, 6, 38, 0, 34, 0, 0, 0, 7, 2, 78, 0, 11, 0, 153, 0, 1, 255, 252, 0, 0, 4, 101, 6, 0, 0, 39, 0, 0, 65, 53, 35, 53, 33, 21, 35, 21, 51, 17, 33, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 33, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 17, 2, 176, 254, 254, 234, 160, 160, 1, 22, 19, 49, 30, 23, 54, 31, 48, 76, 27, 27, 29, 1, 22, 57, 51, 51, 142, 85, 56, 100, 43, 30, 54, 22, 4, 192, 180, 140, 140, 180, 251, 64, 3, 13, 25, 39, 12, 9, 10, 25, 26, 26, 84, 58, 253, 111, 2, 143, 119, 169, 54, 54, 51, 32, 29, 20, 55, 33, 1, 27, 0, 255, 255, 255, 163, 0, 0, 4, 86, 7, 168, 6, 38, 0, 35, 0, 0, 0, 7, 1, 92, 255, 34, 1, 188, 255, 255, 0, 199, 0, 0, 4, 90, 5, 196, 6, 38, 1, 109, 0, 0, 0, 7, 1, 91, 0, 168, 255, 254, 255, 255, 0, 199, 0, 0, 4, 90, 5, 229, 6, 38, 1, 109, 0, 0, 0, 6, 1, 95, 34, 67, 255, 255, 0, 199, 0, 0, 4, 90, 5, 237, 6, 38, 1, 109, 0, 0, 0, 7, 1, 92, 0, 168, 0, 1, 255, 255, 0, 199, 0, 0, 4, 90, 5, 211, 6, 38, 1, 109, 0, 0, 0, 6, 1, 97, 20, 1, 255, 255, 0, 199, 0, 0, 4, 90, 5, 198, 6, 38, 1, 109, 0, 0, 0, 6, 1, 90, 142, 0, 255, 255, 0, 199, 0, 0, 4, 90, 5, 151, 6, 38, 1, 109, 0, 0, 0, 6, 1, 94, 31, 231, 0, 2, 0, 215, 254, 88, 4, 73, 5, 227, 0, 38, 0, 50, 0, 0, 83, 21, 33, 17, 33, 21, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 33, 53, 33, 17, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 215, 1, 52, 254, 204, 1, 43, 23, 37, 14, 22, 21, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 45, 1, 77, 254, 219, 254, 211, 89, 71, 74, 87, 87, 74, 73, 87, 4, 58, 227, 253, 139, 226, 19, 41, 22, 32, 69, 34, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 18, 226, 3, 88, 1, 21, 65, 83, 83, 65, 65, 83, 85, 255, 255, 0, 199, 0, 0, 4, 90, 6, 8, 6, 38, 1, 109, 0, 0, 0, 7, 1, 93, 0, 175, 0, 2, 255, 255, 0, 226, 254, 75, 4, 85, 5, 223, 6, 38, 1, 113, 0, 0, 0, 7, 1, 92, 0, 235, 255, 243, 255, 255, 0, 144, 254, 13, 4, 172, 6, 0, 6, 38, 0, 38, 0, 0, 0, 7, 1, 104, 0, 150, 254, 181, 255, 255, 0, 199, 0, 0, 4, 90, 7, 101, 6, 38, 0, 39, 0, 0, 0, 7, 1, 91, 0, 164, 1, 159, 255, 255, 0, 129, 0, 0, 4, 181, 6, 5, 4, 38, 0, 39, 186, 0, 0, 7, 0, 109, 1, 173, 255, 237, 255, 255, 0, 199, 254, 36, 4, 90, 6, 0, 6, 38, 0, 39, 0, 0, 0, 7, 1, 104, 0, 229, 254, 204, 255, 255, 0, 129, 0, 0, 4, 102, 6, 0, 4, 38, 0, 39, 186, 0, 0, 7, 1, 96, 1, 98, 253, 217, 0, 1, 0, 213, 0, 0, 4, 104, 6, 0, 0, 17, 0, 0, 65, 17, 33, 21, 33, 17, 5, 21, 37, 17, 33, 21, 33, 53, 33, 17, 37, 53, 3, 50, 253, 163, 1, 68, 254, 200, 1, 56, 254, 188, 3, 147, 254, 202, 1, 25, 3, 251, 2, 5, 227, 254, 98, 138, 195, 138, 254, 38, 226, 226, 2, 86, 125, 195, 255, 255, 0, 141, 0, 0, 4, 83, 5, 221, 6, 38, 0, 41, 0, 0, 0, 6, 1, 91, 108, 23, 255, 255, 0, 141, 0, 0, 4, 83, 6, 8, 6, 38, 0, 41, 0, 0, 0, 6, 1, 100, 231, 27, 255, 255, 0, 141, 254, 35, 4, 83, 4, 78, 6, 38, 0, 41, 0, 0, 0, 7, 1, 104, 0, 174, 254, 203, 255, 255, 0, 141, 0, 0, 4, 83, 6, 34, 6, 38, 0, 41, 0, 0, 0, 6, 1, 93, 115, 28, 255, 255, 0, 103, 255, 235, 4, 100, 5, 221, 6, 38, 0, 42, 0, 0, 0, 6, 1, 91, 121, 23, 255, 255, 0, 103, 255, 235, 4, 100, 5, 255, 6, 38, 0, 42, 0, 0, 0, 6, 1, 95, 244, 93, 255, 255, 0, 103, 255, 235, 4, 100, 6, 7, 6, 38, 0, 42, 0, 0, 0, 6, 1, 92, 121, 27, 255, 255, 0, 103, 255, 235, 4, 100, 5, 237, 6, 38, 0, 42, 0, 0, 0, 6, 1, 97, 230, 27, 255, 255, 0, 103, 255, 235, 4, 100, 5, 224, 6, 38, 0, 42, 0, 0, 0, 7, 1, 90, 255, 95, 0, 26, 0, 2, 0, 95, 255, 235, 4, 166, 4, 155, 0, 38, 0, 64, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 54, 54, 55, 54, 54, 53, 35, 20, 6, 7, 6, 6, 7, 38, 38, 35, 34, 6, 7, 6, 6, 5, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 95, 68, 66, 65, 191, 122, 121, 190, 65, 65, 68, 38, 37, 35, 56, 19, 19, 20, 193, 9, 9, 8, 21, 13, 63, 166, 103, 122, 189, 65, 66, 68, 1, 22, 26, 28, 28, 88, 62, 63, 88, 28, 27, 26, 26, 27, 28, 88, 61, 63, 89, 28, 28, 26, 2, 39, 21, 119, 201, 74, 74, 83, 83, 74, 74, 201, 119, 21, 88, 156, 66, 22, 63, 39, 40, 97, 57, 37, 62, 25, 20, 33, 13, 54, 59, 84, 74, 74, 201, 139, 21, 66, 118, 45, 45, 52, 52, 45, 45, 118, 66, 21, 68, 119, 44, 45, 52, 52, 45, 44, 119, 255, 255, 0, 103, 255, 235, 4, 158, 6, 9, 6, 38, 0, 42, 0, 0, 0, 7, 1, 99, 0, 129, 0, 27, 255, 255, 0, 103, 255, 235, 4, 100, 5, 176, 6, 38, 0, 42, 0, 0, 0, 6, 1, 94, 241, 0, 0, 3, 0, 103, 255, 115, 4, 100, 4, 191, 0, 34, 0, 48, 0, 65, 0, 0, 83, 21, 20, 22, 23, 7, 51, 55, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 55, 35, 7, 38, 38, 35, 34, 6, 7, 6, 6, 5, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 1, 38, 38, 37, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 1, 22, 22, 23, 22, 22, 103, 108, 103, 102, 157, 71, 41, 87, 47, 121, 190, 65, 65, 68, 32, 32, 24, 66, 42, 104, 157, 71, 43, 96, 52, 122, 189, 65, 66, 68, 1, 22, 26, 28, 28, 88, 62, 25, 44, 19, 254, 241, 26, 23, 1, 208, 26, 27, 28, 88, 61, 19, 36, 18, 1, 8, 9, 14, 5, 6, 5, 2, 39, 21, 150, 241, 72, 208, 146, 13, 13, 83, 74, 74, 201, 119, 21, 82, 147, 62, 47, 81, 32, 213, 145, 16, 16, 84, 74, 74, 201, 139, 21, 66, 118, 45, 45, 52, 8, 9, 253, 213, 44, 115, 87, 21, 68, 119, 44, 45, 52, 6, 5, 2, 28, 19, 44, 23, 27, 58, 255, 255, 0, 103, 255, 115, 4, 100, 5, 217, 6, 38, 1, 56, 0, 0, 0, 6, 1, 91, 79, 19, 255, 255, 0, 103, 255, 235, 4, 100, 6, 34, 6, 38, 0, 42, 0, 0, 0, 7, 1, 93, 0, 128, 0, 28, 255, 255, 1, 31, 0, 0, 4, 97, 5, 221, 6, 38, 0, 45, 0, 0, 0, 6, 1, 91, 81, 23, 255, 255, 0, 197, 0, 0, 4, 97, 6, 8, 6, 38, 0, 45, 0, 0, 0, 6, 1, 100, 204, 27, 255, 255, 1, 11, 254, 35, 4, 97, 4, 78, 6, 38, 0, 45, 0, 0, 0, 7, 1, 104, 255, 247, 254, 203, 255, 255, 0, 122, 255, 235, 4, 85, 5, 221, 6, 38, 0, 46, 0, 0, 0, 6, 1, 91, 92, 23, 255, 255, 0, 122, 255, 235, 4, 85, 6, 8, 6, 38, 0, 46, 0, 0, 0, 6, 1, 100, 215, 27, 255, 255, 0, 122, 254, 45, 4, 85, 4, 78, 6, 38, 0, 46, 0, 0, 0, 6, 1, 102, 22, 247, 255, 255, 0, 122, 255, 235, 4, 85, 6, 7, 6, 38, 0, 46, 0, 0, 0, 6, 1, 92, 92, 27, 0, 1, 0, 126, 255, 235, 4, 78, 5, 67, 0, 43, 0, 0, 65, 33, 17, 35, 21, 51, 21, 35, 21, 51, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 51, 53, 35, 53, 33, 53, 33, 2, 139, 254, 234, 247, 247, 195, 195, 56, 52, 51, 145, 89, 46, 95, 44, 44, 78, 29, 27, 19, 53, 30, 31, 67, 32, 44, 71, 25, 25, 27, 219, 219, 1, 148, 254, 108, 5, 67, 254, 247, 205, 158, 180, 154, 107, 153, 49, 50, 47, 9, 8, 8, 25, 17, 191, 5, 10, 4, 5, 6, 20, 24, 23, 79, 59, 127, 180, 158, 205, 255, 255, 0, 103, 255, 232, 4, 183, 6, 184, 4, 38, 0, 47, 233, 253, 0, 7, 0, 109, 1, 175, 0, 160, 255, 255, 0, 150, 255, 235, 4, 75, 5, 200, 6, 38, 0, 48, 0, 0, 0, 6, 1, 91, 123, 2, 255, 255, 0, 150, 255, 235, 4, 75, 5, 234, 6, 38, 0, 48, 0, 0, 0, 6, 1, 95, 246, 72, 255, 255, 0, 150, 255, 235, 4, 75, 5, 242, 6, 38, 0, 48, 0, 0, 0, 6, 1, 92, 123, 6, 255, 255, 0, 150, 255, 235, 4, 75, 5, 216, 6, 38, 0, 48, 0, 0, 0, 6, 1, 97, 232, 6, 255, 255, 0, 150, 255, 235, 4, 75, 5, 203, 6, 38, 0, 48, 0, 0, 0, 7, 1, 90, 255, 97, 0, 5, 0, 1, 0, 118, 255, 235, 5, 95, 4, 154, 0, 39, 0, 0, 65, 35, 20, 6, 7, 6, 6, 7, 53, 33, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 23, 51, 17, 54, 54, 5, 95, 198, 17, 19, 13, 37, 24, 254, 233, 12, 33, 22, 27, 74, 46, 49, 68, 21, 21, 19, 254, 234, 55, 50, 50, 140, 84, 92, 155, 55, 16, 252, 156, 152, 4, 154, 58, 88, 32, 21, 31, 11, 145, 253, 9, 24, 40, 15, 19, 20, 24, 28, 27, 90, 66, 2, 130, 253, 128, 123, 175, 56, 57, 52, 92, 81, 152, 3, 0, 26, 200, 255, 255, 0, 150, 255, 235, 4, 160, 5, 244, 6, 38, 0, 48, 0, 0, 0, 7, 1, 99, 0, 131, 0, 6, 255, 255, 0, 150, 255, 235, 4, 75, 5, 156, 6, 38, 0, 48, 0, 0, 0, 6, 1, 94, 243, 236, 0, 1, 0, 150, 254, 88, 4, 97, 4, 58, 0, 56, 0, 0, 97, 51, 17, 33, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 4, 56, 19, 254, 233, 12, 32, 21, 28, 74, 47, 49, 68, 21, 21, 19, 254, 234, 55, 50, 50, 140, 84, 92, 155, 55, 15, 27, 43, 16, 23, 24, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 4, 58, 253, 9, 24, 39, 15, 19, 21, 24, 28, 27, 90, 66, 2, 130, 253, 128, 123, 175, 56, 57, 52, 92, 81, 140, 19, 44, 23, 34, 73, 36, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 255, 255, 0, 150, 255, 235, 4, 75, 6, 49, 6, 38, 0, 48, 0, 0, 0, 7, 1, 98, 0, 7, 0, 158, 255, 255, 0, 150, 255, 235, 4, 75, 6, 13, 6, 38, 0, 48, 0, 0, 0, 7, 1, 93, 0, 130, 0, 7, 255, 255, 0, 27, 0, 0, 4, 158, 5, 200, 6, 38, 0, 50, 0, 0, 0, 6, 1, 91, 104, 2, 255, 255, 0, 27, 0, 0, 4, 158, 5, 242, 6, 38, 0, 50, 0, 0, 0, 6, 1, 92, 104, 6, 255, 255, 0, 27, 0, 0, 4, 158, 5, 216, 6, 38, 0, 50, 0, 0, 0, 6, 1, 97, 213, 6, 255, 255, 0, 27, 0, 0, 4, 158, 5, 203, 6, 38, 0, 50, 0, 0, 0, 7, 1, 90, 255, 78, 0, 5, 255, 255, 0, 52, 254, 75, 4, 205, 5, 200, 6, 38, 0, 52, 0, 0, 0, 7, 1, 91, 0, 147, 0, 2, 255, 255, 0, 52, 254, 75, 4, 205, 5, 242, 6, 38, 0, 52, 0, 0, 0, 7, 1, 92, 0, 147, 0, 6, 255, 255, 0, 52, 254, 75, 4, 205, 5, 216, 6, 38, 0, 52, 0, 0, 0, 6, 1, 97, 0, 6, 255, 255, 0, 52, 254, 75, 4, 205, 5, 203, 6, 38, 0, 52, 0, 0, 0, 7, 1, 90, 255, 121, 0, 5, 255, 255, 0, 118, 0, 0, 4, 111, 5, 200, 6, 38, 0, 53, 0, 0, 0, 7, 1, 91, 0, 158, 0, 2, 255, 255, 0, 118, 0, 0, 4, 111, 5, 243, 6, 38, 0, 53, 0, 0, 0, 6, 1, 100, 24, 6, 255, 255, 0, 118, 0, 0, 4, 111, 5, 245, 6, 38, 0, 53, 0, 0, 0, 6, 1, 96, 33, 22, 0, 1, 1, 155, 4, 175, 3, 126, 5, 198, 0, 3, 0, 0, 65, 3, 33, 1, 3, 126, 177, 254, 206, 1, 8, 4, 175, 1, 23, 254, 233, 0, 0, 1, 1, 126, 4, 175, 3, 107, 5, 198, 0, 3, 0, 0, 65, 3, 51, 1, 2, 57, 187, 216, 1, 21, 5, 198, 254, 233, 1, 23, 0, 1, 0, 129, 4, 221, 3, 106, 5, 236, 0, 8, 0, 0, 65, 37, 35, 5, 21, 51, 55, 23, 51, 3, 106, 254, 218, 161, 254, 222, 217, 153, 154, 221, 4, 249, 243, 241, 30, 127, 127, 0, 0, 1, 0, 128, 4, 232, 3, 88, 6, 6, 0, 37, 0, 0, 65, 39, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 88, 140, 13, 11, 12, 35, 19, 38, 68, 33, 34, 70, 40, 49, 79, 28, 28, 31, 140, 14, 13, 12, 32, 18, 39, 62, 32, 31, 71, 48, 49, 79, 29, 28, 31, 5, 231, 31, 21, 35, 12, 14, 15, 27, 17, 16, 27, 44, 35, 35, 88, 44, 30, 23, 37, 12, 13, 13, 27, 16, 17, 27, 42, 35, 34, 88, 0, 0, 1, 1, 17, 5, 12, 3, 235, 5, 176, 0, 3, 0, 0, 65, 53, 33, 21, 3, 235, 253, 38, 5, 12, 164, 164, 0, 1, 1, 37, 4, 125, 3, 206, 5, 162, 0, 25, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 206, 201, 15, 16, 17, 53, 38, 39, 53, 17, 17, 15, 200, 47, 45, 44, 126, 79, 78, 126, 45, 44, 47, 5, 162, 26, 49, 18, 19, 22, 22, 19, 18, 49, 26, 65, 108, 38, 39, 43, 43, 39, 38, 108, 0, 0, 1, 1, 216, 4, 200, 3, 4, 5, 223, 0, 11, 0, 0, 65, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 216, 80, 70, 70, 80, 80, 70, 70, 80, 5, 83, 60, 79, 79, 60, 61, 79, 79, 0, 0, 2, 1, 9, 4, 215, 3, 249, 5, 210, 0, 11, 0, 23, 0, 0, 65, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 9, 77, 59, 59, 77, 76, 60, 60, 76, 1, 224, 76, 60, 60, 76, 75, 61, 61, 75, 5, 85, 53, 71, 71, 53, 52, 73, 73, 52, 54, 72, 72, 54, 51, 73, 73, 0, 0, 2, 1, 147, 4, 15, 3, 56, 5, 147, 0, 23, 0, 47, 0, 0, 65, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 147, 33, 29, 29, 78, 44, 44, 76, 28, 28, 32, 32, 28, 28, 76, 44, 44, 78, 29, 29, 33, 114, 15, 12, 13, 38, 21, 21, 35, 13, 12, 14, 15, 14, 12, 34, 20, 21, 36, 13, 13, 16, 4, 207, 42, 71, 25, 26, 28, 28, 26, 25, 71, 42, 42, 72, 26, 26, 30, 30, 26, 26, 72, 42, 22, 36, 13, 14, 15, 14, 13, 13, 38, 22, 23, 37, 13, 12, 13, 14, 12, 13, 37, 0, 2, 0, 210, 4, 229, 4, 29, 5, 238, 0, 3, 0, 7, 0, 0, 65, 3, 51, 1, 33, 3, 51, 1, 3, 12, 245, 212, 1, 50, 253, 128, 203, 206, 1, 2, 5, 238, 254, 247, 1, 9, 254, 247, 1, 9, 0, 1, 0, 249, 4, 221, 3, 248, 5, 237, 0, 8, 0, 0, 65, 39, 35, 21, 5, 51, 37, 53, 35, 2, 120, 146, 237, 1, 40, 175, 1, 40, 237, 5, 111, 126, 20, 252, 253, 19, 0, 1, 253, 13, 254, 148, 254, 81, 255, 173, 0, 11, 0, 0, 69, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 253, 13, 86, 76, 74, 88, 87, 75, 77, 85, 224, 60, 80, 80, 60, 59, 82, 82, 0, 1, 1, 182, 254, 54, 3, 47, 0, 5, 0, 27, 0, 0, 101, 35, 7, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 23, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 2, 164, 207, 31, 39, 56, 17, 17, 16, 19, 16, 16, 43, 25, 7, 85, 128, 44, 43, 44, 26, 21, 21, 54, 28, 5, 141, 3, 9, 10, 9, 28, 20, 23, 32, 10, 9, 9, 160, 34, 31, 30, 86, 53, 43, 61, 21, 20, 23, 5, 0, 1, 1, 125, 254, 88, 3, 21, 0, 60, 0, 28, 0, 0, 97, 39, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 2, 236, 153, 43, 69, 26, 38, 38, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 60, 20, 50, 28, 41, 92, 46, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 0, 0, 1, 1, 20, 255, 88, 2, 29, 0, 250, 0, 9, 0, 0, 101, 53, 35, 21, 20, 6, 7, 23, 54, 54, 2, 29, 190, 37, 38, 113, 78, 74, 181, 69, 72, 76, 131, 63, 76, 68, 194, 0, 255, 255, 0, 187, 0, 93, 4, 5, 3, 124, 4, 39, 0, 122, 255, 51, 255, 221, 0, 7, 0, 122, 0, 174, 255, 221, 0, 1, 0, 172, 254, 96, 4, 99, 4, 58, 0, 30, 0, 0, 65, 33, 17, 33, 17, 22, 22, 51, 50, 54, 55, 54, 54, 55, 23, 33, 17, 33, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 1, 194, 254, 234, 1, 22, 37, 90, 53, 46, 80, 34, 19, 34, 15, 6, 1, 3, 254, 233, 11, 28, 19, 27, 75, 49, 41, 68, 24, 25, 27, 4, 58, 250, 38, 1, 187, 24, 24, 20, 19, 11, 27, 16, 72, 4, 58, 252, 255, 20, 34, 13, 20, 21, 20, 29, 28, 100, 80, 255, 255, 0, 227, 0, 127, 4, 44, 3, 158, 4, 39, 0, 123, 255, 98, 0, 0, 0, 7, 0, 123, 0, 219, 0, 0, 0, 1, 0, 199, 0, 0, 4, 90, 4, 58, 0, 9, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 199, 1, 68, 254, 188, 3, 147, 254, 202, 4, 58, 227, 253, 139, 226, 226, 3, 88, 0, 2, 0, 126, 255, 237, 4, 78, 5, 176, 0, 3, 0, 28, 0, 0, 97, 17, 35, 17, 1, 17, 20, 6, 7, 6, 6, 35, 34, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 1, 70, 200, 3, 8, 13, 16, 17, 55, 41, 60, 72, 200, 49, 45, 44, 122, 72, 87, 129, 43, 42, 41, 5, 176, 250, 80, 5, 176, 251, 146, 42, 67, 23, 24, 25, 86, 94, 87, 128, 42, 42, 41, 46, 44, 44, 127, 80, 4, 110, 0, 0, 4, 0, 75, 254, 78, 4, 87, 5, 192, 0, 29, 0, 39, 0, 51, 0, 63, 0, 0, 65, 21, 51, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 33, 21, 51, 17, 35, 21, 33, 53, 35, 17, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, 176, 216, 37, 32, 33, 88, 50, 14, 48, 27, 27, 51, 17, 14, 24, 45, 22, 29, 60, 32, 101, 158, 55, 55, 57, 252, 1, 229, 235, 2, 148, 225, 213, 58, 57, 57, 59, 59, 57, 57, 58, 2, 71, 58, 57, 57, 59, 59, 57, 57, 58, 4, 58, 170, 252, 106, 75, 98, 29, 30, 24, 1, 2, 1, 5, 3, 167, 4, 6, 2, 3, 2, 56, 54, 54, 160, 104, 4, 64, 170, 253, 26, 170, 170, 3, 144, 1, 23, 47, 63, 63, 46, 47, 64, 64, 45, 47, 63, 63, 46, 47, 64, 64, 0, 1, 1, 156, 0, 0, 4, 37, 6, 45, 0, 21, 0, 0, 97, 33, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 1, 156, 1, 21, 34, 33, 32, 93, 60, 32, 43, 21, 24, 40, 77, 41, 114, 182, 63, 64, 68, 4, 77, 61, 96, 33, 31, 34, 6, 5, 215, 9, 12, 63, 60, 61, 179, 117, 0, 1, 0, 226, 254, 75, 3, 96, 4, 58, 0, 29, 0, 0, 65, 21, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 1, 54, 1, 18, 30, 26, 26, 70, 40, 11, 40, 23, 23, 43, 12, 14, 20, 40, 21, 25, 50, 24, 109, 170, 59, 58, 62, 4, 58, 227, 252, 144, 52, 69, 21, 21, 18, 1, 2, 1, 5, 3, 226, 5, 6, 2, 2, 2, 48, 51, 50, 155, 108, 4, 83, 0, 0, 2, 1, 185, 254, 142, 3, 3, 255, 187, 0, 23, 0, 35, 0, 0, 69, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 1, 185, 26, 23, 22, 61, 35, 34, 60, 22, 22, 25, 25, 22, 22, 60, 34, 35, 61, 22, 23, 26, 110, 32, 25, 23, 30, 30, 23, 25, 32, 222, 32, 55, 19, 20, 22, 22, 20, 19, 54, 33, 33, 56, 21, 20, 23, 23, 20, 21, 56, 33, 26, 33, 33, 26, 24, 31, 31, 0, 0, 1, 252, 152, 4, 186, 254, 29, 6, 24, 0, 3, 0, 0, 65, 3, 35, 19, 254, 29, 164, 225, 219, 4, 186, 1, 94, 254, 162, 0, 0, 1, 253, 112, 4, 185, 254, 226, 6, 25, 0, 3, 0, 0, 65, 3, 51, 19, 254, 2, 146, 166, 204, 6, 25, 254, 160, 1, 96, 0, 255, 255, 252, 111, 4, 232, 255, 71, 6, 6, 4, 7, 1, 93, 251, 239, 0, 0, 0, 1, 253, 38, 4, 239, 254, 159, 6, 133, 0, 27, 0, 0, 65, 51, 53, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 7, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 253, 58, 207, 28, 54, 21, 21, 26, 56, 55, 46, 130, 83, 7, 31, 54, 19, 19, 22, 13, 14, 17, 55, 39, 4, 239, 66, 4, 20, 18, 17, 51, 35, 49, 78, 25, 21, 22, 133, 7, 8, 8, 27, 20, 15, 21, 8, 9, 10, 3, 0, 2, 251, 247, 4, 228, 255, 78, 5, 238, 0, 3, 0, 7, 0, 0, 65, 3, 33, 1, 33, 3, 33, 19, 254, 4, 245, 254, 232, 1, 37, 2, 50, 196, 254, 239, 245, 4, 228, 1, 10, 254, 246, 1, 10, 254, 246, 0, 0, 1, 2, 69, 4, 242, 3, 170, 6, 129, 0, 3, 0, 0, 65, 3, 51, 19, 2, 149, 80, 140, 217, 6, 129, 254, 113, 1, 143, 0, 0, 3, 1, 3, 4, 200, 4, 67, 7, 9, 0, 3, 0, 15, 0, 27, 0, 0, 65, 3, 51, 19, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, 134, 43, 147, 168, 253, 109, 77, 65, 61, 80, 79, 62, 66, 76, 2, 37, 78, 64, 60, 81, 79, 62, 66, 76, 7, 9, 254, 188, 1, 68, 254, 64, 53, 76, 74, 55, 56, 75, 77, 52, 56, 75, 73, 58, 56, 74, 76, 255, 255, 2, 45, 2, 40, 3, 105, 3, 83, 4, 6, 0, 100, 63, 0, 0, 1, 0, 141, 0, 0, 4, 59, 5, 176, 0, 5, 0, 0, 65, 53, 33, 17, 33, 17, 4, 59, 252, 82, 1, 25, 4, 204, 228, 250, 80, 4, 204, 0, 0, 2, 0, 35, 0, 0, 5, 0, 5, 176, 0, 3, 0, 8, 0, 0, 65, 1, 33, 1, 1, 19, 55, 23, 19, 2, 11, 254, 24, 4, 221, 254, 39, 254, 104, 250, 13, 12, 244, 5, 176, 250, 80, 5, 176, 251, 50, 3, 44, 41, 41, 252, 212, 0, 0, 3, 0, 91, 255, 236, 4, 134, 5, 196, 0, 3, 0, 29, 0, 55, 0, 0, 65, 53, 33, 21, 37, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 1, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 50, 254, 124, 2, 216, 74, 70, 70, 201, 127, 126, 195, 67, 67, 70, 70, 67, 67, 196, 126, 126, 201, 70, 70, 74, 254, 227, 30, 30, 31, 97, 68, 69, 92, 28, 28, 24, 24, 28, 28, 92, 68, 69, 97, 31, 31, 29, 2, 102, 223, 223, 7, 212, 140, 236, 86, 85, 96, 96, 85, 86, 236, 140, 212, 140, 235, 85, 86, 95, 95, 85, 85, 236, 1, 98, 214, 89, 150, 54, 55, 62, 62, 55, 55, 150, 88, 214, 89, 150, 54, 54, 61, 61, 54, 54, 150, 0, 0, 1, 0, 23, 0, 0, 4, 180, 5, 176, 0, 6, 0, 0, 65, 1, 33, 1, 33, 1, 33, 2, 100, 1, 42, 1, 38, 254, 63, 254, 228, 254, 64, 1, 37, 4, 55, 251, 201, 5, 176, 250, 80, 0, 0, 3, 0, 121, 0, 0, 4, 72, 5, 176, 0, 3, 0, 7, 0, 11, 0, 0, 119, 21, 33, 53, 1, 21, 33, 53, 1, 21, 33, 53, 121, 3, 207, 252, 157, 2, 244, 252, 179, 3, 152, 226, 226, 226, 2, 111, 219, 219, 2, 95, 228, 228, 0, 1, 0, 121, 0, 0, 4, 71, 5, 176, 0, 7, 0, 0, 97, 17, 33, 17, 33, 17, 33, 17, 4, 71, 252, 50, 1, 25, 1, 156, 5, 176, 250, 80, 4, 204, 251, 52, 0, 1, 0, 111, 0, 1, 4, 120, 5, 176, 0, 12, 0, 0, 65, 53, 1, 33, 53, 33, 21, 1, 1, 21, 33, 53, 33, 3, 88, 254, 149, 2, 110, 252, 20, 1, 192, 254, 64, 4, 9, 253, 112, 2, 212, 17, 1, 231, 228, 152, 253, 197, 253, 187, 151, 224, 0, 3, 0, 65, 0, 0, 4, 238, 5, 176, 0, 29, 0, 42, 0, 55, 0, 0, 65, 53, 33, 21, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 21, 33, 53, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 1, 52, 54, 55, 54, 54, 55, 17, 38, 38, 39, 38, 38, 37, 20, 6, 7, 6, 6, 7, 17, 22, 22, 23, 22, 22, 3, 36, 254, 232, 102, 169, 60, 61, 67, 67, 61, 60, 169, 102, 1, 24, 102, 168, 61, 60, 67, 67, 60, 61, 168, 253, 203, 29, 27, 23, 65, 39, 40, 66, 24, 25, 28, 2, 131, 30, 28, 23, 62, 37, 32, 55, 21, 34, 38, 4, 236, 196, 196, 11, 86, 70, 71, 190, 114, 112, 185, 68, 69, 84, 11, 189, 189, 11, 85, 69, 69, 185, 112, 114, 189, 70, 70, 86, 253, 237, 68, 106, 38, 33, 42, 10, 253, 187, 10, 42, 33, 35, 101, 65, 67, 105, 36, 29, 39, 9, 2, 68, 8, 32, 23, 38, 117, 0, 0, 1, 0, 69, 0, 0, 4, 219, 5, 176, 0, 35, 0, 0, 65, 17, 33, 17, 38, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 23, 17, 33, 17, 54, 54, 55, 54, 54, 53, 17, 33, 17, 20, 6, 7, 6, 6, 3, 39, 254, 232, 40, 64, 22, 25, 26, 254, 231, 65, 60, 60, 169, 104, 1, 24, 99, 161, 57, 57, 62, 254, 230, 22, 21, 19, 56, 2, 63, 3, 113, 252, 143, 10, 44, 35, 39, 112, 75, 2, 54, 253, 202, 128, 195, 68, 68, 77, 10, 254, 168, 1, 89, 12, 80, 68, 67, 192, 126, 2, 54, 253, 202, 76, 113, 38, 34, 44, 0, 1, 0, 86, 0, 0, 4, 130, 5, 196, 0, 59, 0, 0, 65, 17, 33, 53, 33, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 33, 21, 33, 17, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 2, 165, 1, 214, 254, 239, 59, 103, 38, 37, 43, 78, 70, 71, 197, 119, 119, 196, 70, 70, 78, 43, 38, 38, 103, 60, 254, 244, 1, 213, 40, 64, 23, 23, 25, 30, 27, 29, 86, 53, 45, 74, 27, 39, 41, 24, 22, 23, 62, 1, 16, 254, 240, 228, 43, 122, 74, 74, 172, 92, 51, 136, 228, 83, 82, 91, 91, 82, 83, 228, 136, 51, 92, 171, 74, 75, 122, 43, 228, 1, 16, 16, 77, 65, 65, 186, 124, 53, 94, 143, 49, 51, 51, 34, 34, 47, 161, 112, 53, 123, 186, 65, 65, 78, 0, 2, 0, 106, 255, 235, 4, 143, 4, 78, 0, 47, 0, 76, 0, 0, 65, 35, 7, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 37, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 17, 20, 20, 23, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 4, 4, 191, 53, 3, 18, 41, 23, 39, 95, 56, 98, 150, 51, 51, 53, 53, 51, 51, 149, 97, 56, 94, 38, 27, 46, 20, 15, 39, 25, 34, 88, 52, 35, 59, 32, 24, 9, 21, 13, 15, 25, 9, 11, 12, 253, 124, 21, 23, 23, 75, 53, 31, 52, 22, 20, 33, 13, 1, 12, 31, 20, 22, 56, 33, 54, 73, 23, 23, 20, 4, 58, 110, 7, 24, 41, 16, 27, 29, 84, 76, 76, 209, 125, 21, 117, 195, 70, 71, 78, 27, 24, 17, 45, 27, 30, 47, 17, 24, 23, 10, 16, 209, 2, 3, 9, 11, 13, 46, 35, 188, 21, 71, 125, 47, 47, 55, 10, 10, 10, 26, 17, 254, 31, 12, 23, 11, 16, 26, 10, 11, 11, 47, 41, 41, 113, 0, 0, 2, 0, 158, 254, 110, 4, 141, 5, 197, 0, 38, 0, 78, 0, 0, 65, 34, 6, 7, 6, 6, 21, 17, 33, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 3, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 2, 126, 99, 174, 65, 66, 76, 1, 21, 25, 53, 27, 43, 91, 44, 102, 166, 58, 58, 63, 48, 46, 30, 80, 49, 30, 52, 21, 42, 45, 66, 60, 61, 172, 109, 67, 102, 53, 82, 28, 27, 28, 31, 29, 29, 86, 54, 36, 65, 29, 27, 47, 19, 31, 27, 27, 74, 44, 46, 70, 24, 23, 23, 24, 27, 23, 69, 5, 197, 64, 57, 58, 162, 98, 250, 96, 1, 204, 16, 25, 10, 14, 14, 58, 56, 55, 163, 104, 79, 131, 48, 33, 50, 17, 16, 41, 23, 46, 117, 66, 93, 147, 51, 50, 54, 253, 150, 206, 34, 30, 31, 87, 53, 46, 79, 29, 29, 33, 9, 9, 8, 23, 15, 3, 4, 49, 79, 28, 28, 30, 32, 26, 26, 68, 37, 51, 80, 26, 23, 24, 0, 0, 1, 0, 40, 254, 95, 4, 182, 4, 58, 0, 11, 0, 0, 65, 1, 7, 35, 39, 1, 33, 1, 17, 33, 17, 1, 3, 148, 254, 239, 16, 2, 13, 254, 231, 254, 221, 1, 187, 1, 22, 1, 189, 4, 58, 252, 251, 65, 65, 3, 5, 251, 221, 254, 72, 1, 180, 4, 39, 0, 0, 2, 0, 93, 255, 236, 4, 128, 6, 34, 0, 57, 0, 83, 0, 0, 83, 20, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 19, 53, 52, 54, 55, 54, 54, 51, 22, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 237, 26, 24, 24, 71, 44, 2, 68, 120, 45, 45, 53, 71, 68, 68, 198, 127, 125, 196, 68, 67, 71, 71, 71, 59, 172, 110, 53, 66, 18, 18, 12, 24, 22, 20, 59, 37, 71, 124, 47, 44, 80, 147, 79, 96, 151, 52, 53, 55, 133, 30, 32, 31, 96, 66, 57, 93, 33, 32, 35, 29, 31, 31, 94, 65, 66, 97, 31, 31, 30, 4, 227, 46, 79, 33, 33, 56, 21, 13, 16, 78, 57, 58, 147, 84, 20, 113, 194, 71, 71, 81, 83, 73, 72, 198, 116, 20, 113, 188, 73, 63, 100, 37, 19, 38, 18, 18, 34, 15, 24, 39, 14, 13, 14, 38, 15, 184, 33, 44, 43, 41, 42, 118, 252, 232, 20, 64, 117, 45, 44, 53, 11, 64, 45, 45, 106, 52, 20, 68, 121, 45, 45, 53, 53, 45, 45, 121, 0, 0, 1, 0, 132, 255, 236, 4, 156, 4, 77, 0, 82, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 33, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 51, 53, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 132, 78, 71, 71, 198, 119, 94, 183, 73, 72, 89, 254, 235, 33, 31, 32, 93, 59, 65, 93, 29, 30, 28, 21, 22, 16, 45, 29, 24, 56, 32, 230, 230, 28, 48, 20, 25, 40, 14, 27, 23, 21, 26, 26, 87, 66, 49, 83, 31, 31, 35, 1, 22, 78, 67, 68, 180, 101, 120, 191, 67, 68, 72, 36, 34, 24, 65, 39, 45, 72, 27, 36, 37, 1, 50, 77, 121, 42, 42, 44, 40, 42, 41, 128, 89, 26, 47, 18, 18, 21, 23, 19, 18, 48, 26, 31, 47, 16, 12, 16, 4, 4, 4, 188, 3, 4, 4, 13, 9, 16, 43, 27, 23, 45, 18, 17, 22, 16, 15, 16, 44, 28, 77, 123, 43, 42, 45, 41, 39, 40, 118, 77, 42, 78, 32, 23, 39, 15, 13, 39, 24, 33, 89, 0, 1, 0, 80, 254, 124, 4, 44, 5, 176, 0, 56, 0, 0, 65, 33, 21, 33, 7, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 1, 4, 44, 252, 36, 2, 100, 231, 88, 133, 44, 44, 45, 40, 44, 43, 136, 96, 177, 34, 45, 14, 14, 10, 13, 15, 11, 32, 21, 142, 39, 79, 33, 32, 42, 41, 38, 38, 106, 64, 187, 45, 67, 21, 22, 22, 35, 34, 34, 100, 65, 1, 160, 5, 176, 224, 247, 80, 144, 71, 71, 145, 80, 75, 122, 47, 47, 65, 18, 31, 6, 19, 13, 13, 30, 18, 19, 43, 25, 18, 41, 22, 110, 27, 80, 45, 45, 94, 43, 61, 84, 29, 29, 37, 15, 37, 9, 29, 23, 23, 65, 47, 68, 109, 50, 49, 99, 59, 1, 172, 0, 1, 0, 129, 254, 97, 4, 76, 4, 78, 0, 32, 0, 0, 115, 33, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 33, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 39, 39, 33, 129, 1, 22, 17, 41, 25, 28, 70, 40, 49, 74, 24, 22, 23, 1, 24, 54, 48, 49, 137, 83, 67, 116, 48, 28, 49, 21, 1, 12, 254, 254, 3, 23, 18, 31, 10, 13, 14, 25, 26, 24, 72, 48, 251, 183, 4, 73, 114, 159, 51, 50, 46, 38, 35, 21, 52, 31, 9, 148, 0, 3, 0, 176, 255, 235, 4, 71, 5, 197, 0, 25, 0, 40, 0, 55, 0, 0, 69, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 55, 34, 38, 39, 38, 38, 53, 53, 33, 21, 20, 6, 7, 6, 6, 3, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 2, 125, 105, 169, 60, 59, 65, 65, 60, 60, 170, 105, 105, 169, 60, 60, 65, 66, 60, 60, 170, 105, 45, 69, 22, 23, 23, 1, 107, 23, 23, 23, 68, 226, 22, 23, 22, 68, 45, 45, 69, 23, 23, 23, 21, 70, 69, 68, 202, 133, 1, 149, 133, 206, 70, 70, 72, 72, 70, 70, 206, 133, 254, 107, 133, 202, 68, 69, 70, 223, 26, 32, 31, 104, 79, 159, 159, 79, 104, 31, 32, 26, 2, 134, 128, 78, 105, 33, 32, 28, 28, 32, 33, 105, 78, 128, 0, 1, 0, 179, 255, 235, 4, 63, 4, 58, 0, 26, 0, 0, 83, 21, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 179, 1, 27, 49, 48, 47, 140, 92, 32, 62, 31, 30, 62, 32, 45, 27, 79, 45, 30, 54, 20, 20, 24, 4, 58, 227, 254, 12, 103, 143, 45, 45, 40, 6, 8, 8, 30, 24, 201, 17, 30, 7, 15, 15, 60, 54, 2, 210, 0, 0, 1, 0, 32, 255, 238, 4, 126, 6, 6, 0, 45, 0, 0, 97, 19, 55, 23, 19, 22, 22, 23, 22, 22, 51, 50, 54, 55, 55, 6, 6, 35, 34, 38, 39, 38, 38, 39, 1, 38, 38, 39, 38, 38, 35, 34, 6, 7, 23, 54, 54, 51, 50, 22, 23, 22, 22, 23, 23, 1, 1, 77, 181, 29, 49, 109, 20, 61, 43, 43, 116, 75, 20, 45, 20, 6, 18, 10, 16, 26, 45, 18, 19, 26, 12, 254, 165, 17, 55, 41, 42, 113, 73, 41, 90, 31, 6, 20, 40, 17, 36, 59, 25, 24, 37, 13, 30, 254, 127, 2, 62, 139, 138, 254, 209, 56, 105, 40, 41, 48, 5, 6, 218, 2, 1, 31, 25, 25, 64, 30, 3, 116, 40, 97, 41, 41, 56, 15, 8, 208, 2, 4, 33, 27, 27, 67, 33, 74, 251, 224, 0, 1, 0, 176, 254, 119, 4, 122, 5, 196, 0, 90, 0, 0, 65, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 51, 53, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 4, 26, 43, 66, 135, 94, 128, 201, 69, 69, 73, 47, 45, 29, 76, 46, 71, 114, 40, 49, 51, 67, 66, 65, 192, 125, 62, 33, 48, 14, 12, 11, 10, 11, 10, 32, 23, 135, 39, 80, 33, 32, 42, 44, 39, 39, 105, 61, 99, 65, 112, 41, 41, 46, 20, 20, 18, 56, 37, 45, 118, 74, 143, 149, 46, 75, 30, 27, 42, 16, 35, 29, 29, 34, 34, 111, 81, 58, 93, 4, 186, 217, 24, 25, 52, 49, 49, 141, 89, 59, 96, 37, 23, 39, 15, 21, 62, 40, 49, 129, 78, 112, 145, 48, 48, 64, 31, 16, 8, 23, 15, 12, 25, 15, 20, 41, 22, 20, 43, 24, 109, 27, 79, 45, 45, 95, 43, 67, 85, 28, 27, 33, 14, 22, 15, 33, 29, 28, 80, 54, 42, 71, 29, 26, 41, 14, 17, 18, 230, 7, 6, 6, 16, 10, 21, 57, 34, 31, 54, 20, 19, 22, 19, 0, 1, 0, 100, 255, 237, 4, 249, 4, 58, 0, 29, 0, 0, 65, 53, 33, 21, 51, 17, 33, 17, 51, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 4, 174, 251, 182, 134, 1, 22, 254, 36, 36, 36, 110, 74, 50, 103, 62, 45, 20, 40, 31, 24, 35, 11, 12, 11, 3, 100, 214, 214, 252, 156, 3, 100, 253, 206, 91, 124, 38, 39, 33, 20, 39, 190, 10, 13, 7, 12, 11, 46, 39, 2, 34, 0, 2, 0, 133, 254, 96, 4, 95, 4, 78, 0, 27, 0, 53, 0, 0, 65, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 33, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 95, 61, 60, 60, 179, 118, 116, 187, 66, 67, 72, 1, 22, 19, 43, 25, 41, 102, 60, 102, 156, 53, 53, 54, 254, 234, 23, 25, 26, 82, 59, 46, 73, 28, 21, 34, 13, 25, 27, 26, 82, 58, 58, 81, 26, 25, 22, 1, 255, 21, 125, 209, 76, 76, 84, 77, 69, 69, 194, 117, 252, 32, 2, 12, 23, 39, 15, 25, 27, 79, 71, 70, 195, 138, 21, 66, 113, 41, 42, 47, 19, 17, 13, 36, 22, 245, 64, 117, 45, 44, 53, 55, 47, 47, 125, 0, 1, 0, 86, 254, 85, 4, 60, 4, 78, 0, 63, 0, 0, 65, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 21, 22, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 2, 91, 126, 194, 65, 65, 67, 65, 67, 59, 175, 116, 33, 96, 34, 18, 18, 1, 33, 24, 24, 56, 22, 122, 59, 111, 44, 43, 53, 2, 51, 50, 51, 152, 103, 63, 94, 32, 41, 37, 24, 28, 28, 91, 67, 56, 83, 27, 27, 26, 1, 6, 70, 64, 64, 177, 4, 78, 86, 74, 74, 199, 114, 30, 114, 180, 65, 59, 79, 22, 7, 14, 22, 12, 32, 20, 30, 56, 23, 23, 34, 7, 153, 25, 71, 46, 45, 111, 66, 67, 93, 32, 31, 41, 16, 7, 39, 31, 39, 117, 75, 30, 62, 116, 45, 45, 54, 31, 26, 26, 72, 40, 99, 156, 54, 54, 57, 0, 0, 2, 0, 79, 255, 235, 4, 134, 4, 58, 0, 28, 0, 54, 0, 0, 65, 53, 33, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 4, 134, 253, 195, 121, 189, 64, 65, 67, 67, 65, 65, 189, 122, 118, 184, 63, 63, 65, 26, 23, 24, 65, 38, 253, 222, 25, 27, 27, 87, 62, 60, 82, 26, 25, 23, 23, 26, 26, 82, 58, 63, 88, 27, 27, 24, 3, 88, 226, 81, 71, 71, 194, 114, 21, 119, 201, 74, 74, 83, 80, 69, 69, 186, 106, 21, 52, 98, 44, 44, 77, 31, 254, 186, 21, 62, 111, 42, 41, 49, 49, 41, 42, 111, 62, 21, 68, 119, 44, 45, 52, 52, 45, 44, 119, 0, 1, 0, 65, 255, 235, 4, 10, 4, 58, 0, 28, 0, 0, 65, 53, 33, 21, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 4, 10, 252, 55, 1, 94, 50, 48, 48, 138, 88, 34, 61, 30, 30, 60, 32, 32, 35, 71, 51, 33, 55, 20, 21, 23, 3, 83, 231, 231, 254, 44, 111, 154, 48, 48, 43, 5, 6, 6, 21, 17, 209, 15, 23, 10, 18, 17, 70, 60, 1, 215, 0, 0, 1, 0, 126, 255, 235, 4, 84, 4, 58, 0, 36, 0, 0, 65, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 33, 22, 18, 23, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 1, 148, 254, 234, 68, 64, 64, 183, 114, 135, 187, 58, 57, 52, 18, 16, 16, 41, 23, 254, 243, 45, 58, 2, 24, 26, 27, 84, 60, 45, 75, 27, 27, 31, 4, 58, 253, 145, 125, 182, 58, 59, 56, 92, 80, 79, 214, 122, 82, 148, 65, 64, 111, 46, 125, 254, 255, 134, 66, 131, 51, 52, 64, 26, 30, 30, 97, 72, 0, 0, 2, 0, 77, 254, 34, 4, 205, 4, 70, 0, 46, 0, 65, 0, 0, 69, 17, 33, 17, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 38, 38, 39, 38, 38, 53, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 37, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 20, 6, 7, 6, 6, 1, 254, 1, 23, 122, 168, 52, 52, 46, 49, 51, 52, 158, 109, 63, 110, 40, 41, 46, 44, 59, 18, 18, 16, 1, 18, 17, 17, 50, 35, 188, 51, 84, 30, 30, 33, 45, 51, 51, 166, 1, 143, 7, 8, 6, 18, 12, 26, 40, 14, 14, 15, 1, 16, 19, 19, 62, 9, 254, 43, 1, 211, 20, 108, 77, 76, 187, 99, 99, 193, 76, 76, 94, 43, 38, 39, 107, 65, 253, 197, 21, 68, 44, 44, 105, 58, 47, 99, 48, 48, 90, 39, 152, 41, 111, 67, 67, 153, 84, 102, 191, 78, 78, 110, 215, 2, 67, 15, 25, 9, 7, 8, 48, 42, 42, 115, 67, 54, 101, 43, 44, 67, 0, 1, 0, 69, 254, 34, 4, 220, 4, 58, 0, 39, 0, 0, 65, 33, 17, 38, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 23, 17, 33, 17, 54, 54, 55, 54, 54, 53, 52, 38, 39, 33, 22, 22, 23, 20, 6, 7, 6, 6, 7, 3, 16, 254, 234, 35, 58, 20, 21, 23, 254, 232, 61, 57, 56, 162, 101, 1, 22, 128, 176, 54, 54, 48, 53, 35, 254, 251, 29, 41, 1, 19, 21, 22, 70, 50, 4, 58, 252, 172, 17, 58, 44, 43, 118, 77, 1, 239, 254, 20, 138, 208, 73, 74, 88, 18, 254, 43, 1, 211, 19, 112, 82, 81, 200, 108, 158, 244, 89, 118, 246, 127, 63, 114, 47, 48, 71, 21, 0, 0, 1, 0, 46, 255, 236, 4, 171, 4, 58, 0, 82, 0, 0, 65, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 33, 22, 18, 23, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 54, 18, 1, 166, 254, 243, 21, 39, 14, 15, 18, 33, 39, 39, 127, 94, 48, 83, 34, 23, 38, 16, 16, 39, 22, 34, 84, 49, 93, 127, 39, 19, 26, 9, 9, 9, 17, 14, 15, 39, 22, 254, 244, 43, 53, 2, 2, 2, 2, 4, 3, 8, 25, 19, 10, 18, 8, 13, 19, 9, 4, 5, 254, 220, 14, 12, 6, 13, 7, 8, 17, 10, 18, 25, 7, 7, 6, 2, 51, 4, 58, 46, 111, 64, 65, 148, 82, 122, 214, 79, 80, 91, 34, 33, 22, 60, 36, 36, 59, 22, 34, 34, 91, 80, 38, 88, 49, 55, 121, 64, 82, 148, 65, 64, 111, 46, 125, 254, 255, 134, 41, 80, 36, 26, 48, 21, 50, 61, 8, 9, 15, 57, 45, 30, 76, 46, 1, 89, 254, 167, 79, 109, 34, 16, 23, 8, 9, 8, 61, 51, 50, 131, 70, 134, 1, 1, 0, 0, 2, 0, 148, 255, 236, 4, 207, 5, 196, 0, 55, 0, 75, 0, 0, 65, 39, 6, 6, 7, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 5, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 54, 54, 1, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 38, 38, 39, 38, 38, 4, 207, 9, 24, 54, 29, 51, 47, 48, 135, 85, 83, 139, 50, 51, 56, 67, 61, 60, 167, 100, 32, 31, 23, 60, 37, 54, 84, 29, 30, 31, 254, 246, 69, 63, 63, 178, 108, 109, 180, 64, 63, 70, 32, 58, 253, 197, 13, 12, 13, 40, 24, 19, 30, 10, 15, 15, 38, 62, 23, 33, 35, 2, 70, 233, 6, 10, 5, 1, 12, 98, 154, 53, 53, 56, 54, 51, 51, 146, 92, 22, 97, 168, 66, 66, 91, 20, 97, 66, 100, 31, 22, 24, 36, 33, 32, 89, 53, 1, 1, 1, 255, 0, 103, 174, 63, 64, 71, 67, 62, 62, 175, 109, 98, 6, 15, 1, 241, 24, 33, 49, 16, 18, 18, 11, 12, 16, 59, 43, 254, 230, 13, 40, 25, 37, 96, 0, 1, 0, 66, 0, 0, 5, 1, 5, 200, 0, 46, 0, 0, 65, 3, 7, 39, 3, 38, 38, 39, 38, 38, 35, 34, 6, 7, 23, 54, 54, 51, 50, 22, 23, 22, 22, 23, 1, 17, 33, 17, 1, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 3, 68, 150, 14, 13, 152, 28, 67, 39, 40, 90, 51, 35, 65, 26, 23, 3, 31, 12, 17, 32, 13, 14, 23, 8, 1, 33, 1, 23, 1, 38, 6, 17, 10, 15, 37, 21, 13, 31, 4, 23, 27, 66, 34, 56, 98, 42, 35, 62, 4, 174, 254, 109, 63, 64, 1, 152, 76, 105, 33, 33, 29, 11, 12, 220, 2, 3, 9, 9, 8, 26, 17, 253, 94, 254, 13, 1, 231, 2, 174, 14, 22, 8, 12, 13, 3, 2, 219, 12, 12, 38, 40, 34, 102, 0, 0, 2, 255, 255, 255, 236, 4, 255, 4, 58, 0, 43, 0, 89, 0, 0, 65, 53, 33, 21, 51, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 3, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 33, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 54, 54, 55, 33, 22, 22, 4, 255, 251, 0, 108, 29, 37, 6, 7, 8, 30, 22, 39, 129, 95, 53, 91, 37, 21, 38, 15, 13, 33, 19, 38, 97, 57, 94, 129, 39, 19, 28, 8, 10, 8, 11, 9, 9, 24, 14, 210, 2, 2, 1, 5, 4, 8, 27, 20, 20, 36, 13, 7, 12, 3, 4, 4, 254, 220, 3, 3, 4, 12, 7, 14, 36, 21, 20, 27, 8, 4, 5, 1, 2, 2, 2, 37, 32, 1, 231, 31, 37, 3, 113, 201, 201, 98, 229, 128, 43, 80, 37, 46, 82, 33, 59, 66, 39, 38, 22, 59, 35, 31, 53, 21, 44, 44, 66, 59, 29, 69, 40, 41, 92, 50, 67, 129, 59, 53, 101, 46, 254, 57, 24, 48, 21, 17, 32, 13, 31, 37, 30, 34, 18, 45, 29, 26, 66, 38, 206, 206, 34, 58, 25, 33, 53, 19, 34, 30, 37, 31, 14, 31, 18, 21, 47, 24, 112, 231, 112, 112, 231, 0, 1, 0, 31, 255, 240, 4, 154, 5, 176, 0, 39, 0, 0, 65, 53, 33, 21, 33, 17, 33, 17, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 23, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 17, 4, 72, 251, 215, 1, 47, 1, 25, 12, 26, 20, 53, 82, 27, 31, 31, 8, 18, 18, 72, 64, 1, 130, 176, 54, 54, 46, 71, 64, 65, 181, 111, 23, 34, 14, 4, 204, 228, 228, 251, 52, 2, 108, 2, 2, 28, 26, 29, 88, 58, 31, 70, 29, 30, 39, 212, 73, 60, 60, 152, 80, 113, 168, 55, 55, 54, 3, 2, 1, 123, 0, 1, 0, 95, 255, 236, 4, 132, 5, 198, 0, 55, 0, 0, 65, 33, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 33, 53, 33, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 33, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 131, 254, 231, 4, 35, 29, 31, 90, 57, 61, 94, 32, 33, 33, 1, 216, 254, 40, 47, 44, 28, 75, 45, 66, 95, 32, 31, 33, 5, 1, 24, 10, 77, 68, 68, 193, 126, 116, 192, 68, 68, 75, 73, 69, 69, 197, 125, 116, 188, 68, 68, 80, 1, 200, 66, 95, 30, 31, 30, 43, 47, 46, 145, 101, 31, 227, 27, 115, 160, 45, 29, 30, 32, 32, 33, 99, 66, 115, 182, 63, 63, 67, 86, 79, 79, 226, 139, 254, 229, 140, 224, 78, 79, 85, 67, 62, 62, 176, 0, 0, 2, 0, 38, 0, 0, 4, 153, 5, 176, 0, 46, 0, 61, 0, 0, 65, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 17, 51, 17, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 3, 11, 253, 164, 3, 4, 3, 12, 8, 9, 21, 13, 10, 22, 12, 20, 25, 54, 91, 37, 31, 52, 20, 23, 30, 8, 4, 4, 136, 241, 88, 142, 50, 50, 53, 53, 50, 50, 142, 88, 15, 15, 37, 57, 19, 19, 19, 17, 17, 17, 55, 37, 23, 5, 176, 252, 146, 45, 79, 33, 36, 59, 22, 23, 32, 10, 6, 7, 226, 24, 24, 21, 61, 40, 46, 121, 74, 38, 84, 45, 2, 138, 251, 52, 71, 63, 63, 174, 104, 102, 174, 63, 63, 71, 226, 41, 34, 35, 88, 47, 49, 91, 34, 35, 42, 0, 0, 2, 0, 91, 0, 0, 4, 133, 5, 176, 0, 24, 0, 39, 0, 0, 115, 33, 17, 51, 17, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 35, 17, 35, 17, 33, 1, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 91, 1, 1, 173, 248, 90, 143, 51, 50, 54, 54, 50, 51, 143, 90, 7, 241, 173, 254, 255, 2, 159, 7, 39, 58, 20, 19, 19, 17, 18, 18, 55, 39, 15, 2, 102, 253, 154, 70, 63, 62, 173, 102, 102, 171, 63, 62, 70, 2, 6, 253, 152, 2, 104, 253, 24, 40, 33, 34, 87, 46, 48, 88, 34, 34, 40, 0, 1, 0, 39, 0, 0, 4, 76, 5, 176, 0, 29, 0, 0, 65, 53, 33, 21, 33, 17, 33, 17, 50, 22, 51, 22, 22, 23, 22, 22, 21, 17, 33, 17, 52, 38, 39, 38, 38, 39, 38, 34, 35, 17, 4, 41, 251, 254, 1, 41, 1, 25, 6, 13, 6, 45, 67, 22, 21, 22, 1, 25, 70, 63, 60, 163, 98, 7, 15, 7, 4, 204, 228, 228, 251, 52, 2, 140, 1, 3, 25, 24, 23, 73, 51, 254, 60, 1, 196, 108, 159, 53, 48, 53, 4, 1, 1, 94, 0, 1, 0, 109, 254, 152, 4, 59, 5, 176, 0, 11, 0, 0, 83, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 109, 1, 99, 1, 27, 1, 80, 254, 230, 254, 100, 5, 176, 250, 80, 254, 152, 1, 104, 5, 176, 251, 50, 4, 206, 0, 0, 2, 0, 131, 0, 0, 4, 93, 5, 176, 0, 18, 0, 33, 0, 0, 65, 53, 33, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 4, 50, 252, 81, 1, 190, 126, 201, 70, 69, 74, 74, 69, 70, 201, 126, 164, 164, 66, 97, 33, 32, 31, 31, 32, 33, 97, 66, 164, 4, 204, 228, 250, 80, 68, 61, 61, 171, 104, 102, 168, 59, 59, 65, 1, 54, 253, 232, 35, 30, 31, 82, 47, 49, 88, 33, 33, 38, 0, 2, 0, 45, 254, 154, 4, 135, 5, 176, 0, 20, 0, 33, 0, 0, 65, 19, 35, 17, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 35, 19, 51, 17, 33, 17, 1, 19, 51, 17, 33, 54, 54, 55, 54, 54, 55, 54, 54, 4, 95, 40, 107, 253, 49, 40, 2, 5, 4, 8, 22, 16, 23, 68, 46, 54, 44, 237, 2, 39, 254, 210, 24, 173, 254, 197, 24, 40, 15, 8, 14, 5, 4, 6, 254, 154, 2, 72, 4, 206, 253, 172, 51, 92, 41, 85, 132, 49, 74, 86, 24, 253, 184, 1, 102, 254, 154, 4, 194, 1, 112, 252, 22, 49, 123, 78, 43, 98, 54, 43, 94, 0, 1, 255, 248, 0, 0, 4, 195, 5, 176, 0, 21, 0, 0, 65, 19, 33, 3, 19, 33, 3, 35, 17, 35, 17, 35, 3, 33, 19, 3, 33, 19, 51, 17, 51, 17, 3, 17, 136, 1, 42, 242, 219, 254, 218, 127, 42, 246, 45, 134, 254, 218, 224, 246, 1, 40, 143, 56, 246, 2, 75, 253, 181, 3, 6, 2, 170, 253, 153, 2, 103, 253, 153, 2, 103, 253, 86, 252, 250, 2, 75, 253, 181, 2, 75, 0, 0, 1, 0, 78, 255, 236, 4, 148, 5, 196, 0, 82, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 33, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 78, 95, 77, 76, 192, 98, 121, 205, 74, 73, 83, 48, 46, 29, 78, 47, 53, 84, 29, 29, 31, 76, 69, 70, 198, 121, 105, 187, 71, 71, 83, 1, 25, 37, 32, 31, 86, 50, 65, 95, 31, 31, 30, 14, 14, 17, 69, 48, 16, 38, 20, 196, 196, 19, 36, 16, 47, 71, 24, 22, 23, 36, 35, 35, 102, 66, 57, 94, 34, 34, 37, 1, 148, 112, 160, 51, 52, 49, 57, 55, 54, 160, 102, 78, 124, 46, 30, 46, 16, 24, 66, 41, 40, 92, 50, 102, 155, 53, 52, 53, 57, 53, 53, 152, 96, 42, 68, 24, 24, 26, 31, 26, 26, 71, 39, 33, 57, 24, 30, 45, 9, 3, 3, 220, 2, 2, 7, 33, 27, 27, 75, 48, 44, 75, 28, 28, 31, 31, 27, 27, 72, 42, 0, 0, 1, 0, 111, 0, 0, 4, 63, 5, 176, 0, 9, 0, 0, 65, 1, 17, 33, 17, 33, 1, 17, 33, 17, 3, 37, 254, 99, 254, 231, 1, 25, 1, 157, 1, 26, 5, 176, 252, 94, 3, 162, 250, 80, 3, 161, 252, 95, 5, 176, 0, 1, 0, 39, 0, 0, 4, 79, 5, 176, 0, 30, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 19, 33, 17, 33, 4, 79, 252, 161, 6, 1, 2, 2, 3, 12, 10, 17, 66, 49, 33, 70, 100, 150, 50, 24, 37, 13, 8, 12, 4, 3, 4, 1, 5, 1, 45, 1, 26, 5, 176, 253, 6, 47, 83, 36, 64, 96, 34, 54, 54, 226, 74, 83, 39, 100, 61, 37, 82, 46, 39, 86, 47, 2, 22, 251, 52, 0, 1, 0, 2, 255, 235, 4, 213, 5, 176, 0, 27, 0, 0, 119, 22, 22, 51, 50, 54, 55, 54, 54, 55, 1, 33, 1, 7, 39, 3, 33, 1, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 95, 34, 109, 71, 88, 130, 49, 48, 69, 26, 2, 6, 254, 206, 254, 238, 30, 91, 230, 254, 208, 1, 252, 28, 11, 35, 26, 26, 72, 48, 38, 87, 26, 11, 9, 23, 48, 41, 41, 108, 59, 4, 156, 253, 76, 77, 254, 2, 3, 251, 230, 62, 32, 51, 18, 18, 20, 18, 8, 0, 0, 1, 0, 109, 254, 161, 4, 233, 5, 176, 0, 11, 0, 0, 83, 17, 33, 17, 33, 19, 35, 17, 33, 17, 33, 17, 109, 3, 100, 1, 4, 20, 189, 254, 230, 254, 115, 5, 176, 250, 80, 254, 161, 2, 64, 4, 207, 251, 50, 4, 206, 0, 0, 1, 0, 157, 0, 0, 4, 95, 5, 176, 0, 25, 0, 0, 65, 33, 17, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 17, 33, 4, 95, 254, 230, 53, 115, 39, 49, 72, 24, 24, 23, 254, 231, 67, 62, 61, 175, 108, 37, 117, 53, 1, 26, 5, 176, 253, 93, 14, 13, 23, 29, 28, 96, 73, 1, 197, 254, 59, 125, 181, 58, 58, 55, 15, 14, 253, 213, 0, 1, 0, 81, 0, 0, 4, 147, 5, 176, 0, 11, 0, 0, 65, 33, 17, 33, 17, 33, 17, 35, 17, 33, 17, 35, 1, 99, 254, 238, 4, 66, 254, 239, 138, 254, 247, 140, 5, 176, 250, 80, 5, 176, 251, 50, 4, 206, 251, 50, 0, 1, 0, 81, 254, 162, 5, 20, 5, 176, 0, 15, 0, 0, 65, 33, 17, 33, 17, 33, 19, 35, 17, 33, 17, 35, 17, 33, 17, 35, 1, 99, 254, 238, 3, 174, 1, 1, 20, 129, 254, 239, 138, 254, 247, 140, 5, 176, 250, 80, 254, 162, 2, 61, 4, 209, 251, 50, 4, 206, 251, 50, 0, 2, 0, 51, 0, 0, 4, 136, 5, 176, 0, 18, 0, 33, 0, 0, 83, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 51, 251, 1, 114, 118, 182, 62, 62, 64, 64, 62, 62, 182, 118, 89, 89, 56, 79, 25, 24, 23, 23, 24, 25, 79, 56, 89, 5, 176, 217, 251, 41, 64, 58, 58, 161, 96, 97, 160, 58, 57, 63, 2, 72, 252, 215, 32, 28, 28, 76, 44, 46, 78, 29, 29, 33, 0, 3, 0, 74, 0, 0, 4, 128, 5, 176, 0, 16, 0, 20, 0, 35, 0, 0, 65, 17, 33, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 1, 17, 33, 17, 1, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 99, 254, 231, 1, 55, 99, 152, 52, 52, 53, 49, 47, 48, 140, 91, 2, 222, 254, 231, 253, 252, 46, 31, 42, 14, 13, 12, 12, 13, 14, 43, 30, 46, 3, 96, 2, 80, 250, 80, 64, 58, 58, 161, 96, 97, 157, 56, 56, 61, 252, 160, 5, 176, 250, 80, 2, 135, 32, 28, 28, 76, 44, 46, 81, 30, 31, 35, 0, 2, 0, 131, 0, 0, 4, 93, 5, 176, 0, 16, 0, 31, 0, 0, 65, 17, 33, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 7, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 157, 254, 230, 1, 190, 126, 201, 70, 69, 74, 74, 69, 70, 201, 126, 164, 164, 66, 97, 33, 32, 31, 31, 32, 33, 97, 66, 164, 3, 150, 2, 26, 250, 80, 68, 61, 61, 171, 104, 102, 168, 59, 59, 65, 226, 35, 30, 31, 82, 47, 49, 88, 33, 33, 38, 0, 1, 0, 32, 255, 236, 4, 62, 5, 198, 0, 55, 0, 0, 65, 33, 6, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 33, 38, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 33, 21, 33, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 60, 254, 231, 3, 74, 69, 68, 189, 111, 125, 201, 71, 70, 76, 78, 70, 70, 195, 117, 120, 193, 68, 68, 73, 1, 25, 5, 28, 31, 31, 95, 61, 57, 93, 33, 32, 35, 254, 129, 1, 127, 37, 34, 34, 98, 60, 51, 87, 31, 32, 32, 1, 228, 119, 187, 65, 65, 68, 82, 77, 76, 221, 140, 1, 47, 139, 223, 77, 77, 83, 81, 70, 70, 186, 105, 67, 106, 37, 36, 38, 44, 45, 46, 140, 96, 39, 227, 39, 101, 140, 44, 45, 40, 38, 36, 36, 104, 0, 2, 0, 84, 255, 235, 4, 109, 5, 197, 0, 33, 0, 59, 0, 0, 65, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 35, 17, 35, 17, 51, 17, 51, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 1, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 109, 69, 66, 44, 116, 71, 73, 116, 43, 55, 58, 89, 249, 249, 89, 44, 44, 43, 130, 84, 82, 130, 46, 53, 55, 254, 255, 10, 12, 13, 42, 32, 27, 37, 11, 12, 10, 10, 12, 11, 37, 27, 32, 42, 13, 12, 10, 1, 251, 1, 186, 158, 223, 63, 42, 42, 49, 49, 65, 216, 149, 128, 2, 123, 250, 80, 2, 92, 97, 131, 199, 65, 66, 67, 57, 56, 65, 209, 2, 105, 254, 3, 76, 104, 32, 32, 28, 28, 32, 32, 104, 76, 1, 253, 75, 103, 32, 32, 28, 28, 32, 32, 103, 0, 2, 255, 217, 0, 0, 4, 19, 5, 176, 0, 19, 0, 34, 0, 0, 97, 33, 17, 33, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 1, 33, 1, 51, 1, 52, 54, 55, 54, 54, 51, 51, 17, 35, 34, 38, 39, 38, 38, 2, 249, 1, 26, 254, 42, 123, 198, 69, 70, 74, 53, 51, 27, 67, 39, 254, 197, 1, 45, 1, 18, 225, 254, 71, 28, 29, 31, 98, 67, 188, 188, 66, 97, 32, 29, 29, 5, 176, 55, 54, 54, 160, 105, 86, 138, 53, 27, 47, 19, 253, 110, 2, 61, 1, 182, 50, 79, 28, 29, 31, 254, 72, 29, 29, 28, 82, 0, 2, 0, 115, 255, 235, 4, 105, 6, 21, 0, 53, 0, 79, 0, 0, 65, 34, 6, 7, 6, 6, 7, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 35, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 7, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 2, 163, 52, 95, 42, 38, 70, 32, 14, 54, 39, 39, 101, 61, 102, 144, 47, 46, 43, 225, 24, 25, 26, 78, 54, 111, 180, 63, 34, 51, 17, 16, 17, 67, 65, 65, 189, 122, 121, 189, 65, 64, 67, 60, 58, 58, 169, 163, 63, 88, 27, 27, 25, 25, 27, 27, 87, 62, 63, 88, 27, 27, 24, 24, 27, 27, 87, 3, 254, 20, 19, 17, 49, 32, 74, 108, 38, 38, 47, 13, 20, 54, 41, 40, 116, 83, 30, 42, 15, 15, 22, 11, 24, 118, 100, 52, 130, 77, 70, 163, 93, 61, 120, 203, 74, 74, 84, 78, 69, 69, 190, 112, 21, 108, 184, 68, 67, 77, 225, 45, 38, 39, 101, 56, 21, 61, 108, 40, 40, 46, 46, 40, 40, 108, 61, 21, 56, 101, 39, 38, 45, 0, 0, 3, 0, 138, 0, 0, 4, 72, 4, 58, 0, 27, 0, 42, 0, 57, 0, 0, 115, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 1, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 17, 53, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 138, 2, 7, 105, 163, 56, 56, 59, 30, 30, 30, 86, 57, 12, 41, 65, 23, 31, 32, 63, 59, 60, 169, 105, 254, 63, 1, 22, 241, 45, 63, 19, 18, 16, 18, 20, 19, 62, 42, 241, 171, 49, 71, 21, 19, 18, 19, 20, 20, 62, 42, 39, 39, 38, 116, 77, 43, 78, 32, 30, 47, 13, 2, 14, 39, 23, 31, 76, 43, 76, 114, 38, 37, 37, 253, 137, 18, 17, 15, 41, 25, 28, 42, 15, 14, 15, 1, 163, 219, 16, 16, 14, 41, 28, 25, 38, 13, 13, 14, 1, 0, 1, 0, 143, 0, 0, 4, 50, 4, 58, 0, 5, 0, 0, 65, 53, 33, 17, 33, 17, 4, 50, 252, 93, 1, 21, 3, 88, 226, 251, 198, 3, 88, 0, 0, 2, 0, 33, 254, 188, 4, 224, 4, 58, 0, 17, 0, 27, 0, 0, 119, 35, 19, 33, 17, 33, 17, 33, 19, 35, 17, 33, 3, 6, 6, 7, 6, 6, 1, 55, 51, 17, 33, 54, 54, 55, 54, 54, 145, 112, 21, 1, 7, 2, 141, 1, 2, 20, 154, 252, 238, 6, 2, 7, 15, 15, 61, 1, 122, 2, 234, 254, 195, 15, 22, 9, 14, 16, 224, 253, 220, 1, 68, 254, 188, 2, 35, 3, 91, 254, 146, 92, 166, 66, 66, 89, 1, 223, 133, 253, 142, 36, 80, 44, 72, 167, 0, 1, 0, 34, 0, 0, 4, 164, 4, 58, 0, 21, 0, 0, 65, 19, 33, 3, 19, 33, 3, 35, 17, 35, 17, 35, 3, 33, 19, 3, 33, 19, 51, 17, 51, 17, 3, 13, 126, 1, 25, 227, 215, 254, 231, 124, 43, 241, 41, 124, 254, 232, 217, 225, 1, 20, 125, 52, 241, 1, 153, 254, 103, 2, 69, 1, 245, 254, 103, 1, 153, 254, 103, 1, 153, 254, 5, 253, 193, 1, 153, 254, 103, 1, 153, 0, 0, 1, 0, 114, 255, 236, 4, 94, 4, 77, 0, 82, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 33, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 114, 86, 70, 69, 177, 91, 111, 187, 68, 68, 77, 39, 37, 26, 67, 41, 34, 58, 22, 37, 40, 71, 64, 65, 182, 110, 98, 174, 64, 65, 75, 1, 21, 32, 29, 28, 77, 45, 54, 77, 25, 24, 22, 18, 19, 14, 40, 26, 18, 42, 24, 204, 204, 26, 47, 20, 33, 49, 16, 14, 15, 27, 27, 28, 83, 55, 54, 86, 29, 29, 31, 1, 64, 89, 128, 41, 42, 40, 44, 42, 42, 121, 77, 55, 90, 34, 23, 36, 13, 14, 35, 20, 33, 82, 45, 77, 118, 40, 39, 41, 45, 42, 43, 123, 77, 28, 44, 16, 15, 16, 22, 17, 18, 45, 23, 23, 40, 16, 11, 17, 6, 3, 4, 185, 4, 3, 6, 23, 17, 15, 42, 26, 26, 48, 19, 19, 23, 22, 18, 18, 47, 26, 0, 0, 1, 0, 121, 0, 0, 4, 60, 4, 58, 0, 9, 0, 0, 65, 1, 17, 33, 17, 33, 1, 17, 33, 17, 3, 38, 254, 105, 254, 234, 1, 22, 1, 151, 1, 22, 4, 58, 253, 78, 2, 178, 251, 198, 2, 178, 253, 78, 4, 58, 0, 1, 0, 133, 0, 0, 4, 204, 4, 58, 0, 12, 0, 0, 65, 1, 33, 1, 1, 33, 1, 35, 17, 33, 17, 33, 17, 2, 62, 1, 30, 1, 112, 254, 83, 1, 141, 254, 162, 254, 221, 144, 254, 234, 1, 22, 1, 149, 254, 107, 2, 49, 2, 9, 254, 98, 1, 158, 251, 198, 1, 149, 0, 1, 0, 34, 0, 0, 4, 59, 4, 58, 0, 27, 0, 0, 65, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 23, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 53, 33, 17, 33, 4, 59, 252, 172, 1, 3, 3, 12, 9, 18, 65, 53, 33, 2, 49, 120, 163, 50, 31, 40, 10, 6, 5, 1, 38, 1, 23, 4, 58, 254, 51, 48, 83, 35, 43, 68, 26, 47, 42, 229, 78, 78, 50, 130, 79, 46, 104, 56, 235, 252, 168, 0, 0, 1, 0, 113, 0, 0, 4, 85, 4, 58, 0, 12, 0, 0, 65, 3, 33, 17, 51, 17, 19, 51, 19, 17, 51, 17, 33, 2, 97, 150, 254, 166, 246, 156, 187, 161, 246, 254, 164, 1, 75, 2, 239, 251, 198, 2, 76, 253, 180, 2, 91, 253, 165, 4, 58, 0, 0, 1, 0, 121, 0, 0, 4, 59, 4, 58, 0, 11, 0, 0, 97, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 4, 59, 254, 233, 254, 108, 254, 233, 1, 23, 1, 148, 4, 58, 254, 74, 1, 182, 251, 198, 1, 164, 254, 92, 0, 1, 0, 121, 0, 0, 4, 60, 4, 58, 0, 7, 0, 0, 97, 17, 33, 17, 33, 17, 33, 17, 4, 60, 252, 61, 1, 23, 1, 149, 4, 58, 251, 198, 3, 88, 252, 168, 0, 1, 0, 93, 0, 0, 4, 178, 4, 58, 0, 7, 0, 0, 65, 53, 33, 21, 33, 17, 33, 17, 4, 178, 251, 171, 1, 157, 1, 23, 3, 91, 223, 223, 252, 165, 3, 91, 0, 3, 0, 55, 254, 96, 4, 149, 6, 0, 0, 31, 0, 45, 0, 59, 0, 0, 83, 21, 20, 22, 23, 22, 22, 23, 17, 33, 17, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 17, 33, 17, 6, 6, 7, 6, 6, 5, 53, 52, 54, 55, 54, 54, 55, 17, 38, 38, 39, 38, 38, 37, 21, 20, 6, 7, 6, 6, 7, 17, 22, 22, 23, 22, 22, 55, 55, 54, 53, 155, 100, 1, 25, 100, 157, 54, 53, 56, 56, 53, 54, 156, 101, 254, 231, 100, 155, 53, 54, 55, 1, 9, 18, 19, 18, 57, 40, 40, 58, 18, 19, 17, 2, 76, 18, 19, 20, 59, 40, 40, 59, 20, 19, 18, 2, 39, 21, 101, 177, 70, 70, 97, 21, 254, 102, 1, 153, 20, 97, 71, 70, 178, 101, 21, 101, 178, 71, 70, 97, 20, 1, 192, 254, 64, 21, 97, 70, 71, 178, 121, 21, 48, 89, 39, 38, 61, 20, 253, 155, 20, 61, 39, 39, 90, 69, 21, 49, 91, 39, 39, 62, 19, 2, 104, 20, 61, 39, 39, 89, 0, 1, 0, 121, 254, 191, 4, 188, 4, 58, 0, 11, 0, 0, 83, 17, 33, 17, 33, 19, 35, 17, 33, 17, 33, 17, 121, 3, 46, 1, 1, 20, 158, 254, 233, 254, 137, 4, 58, 251, 198, 254, 191, 2, 31, 3, 92, 252, 165, 3, 91, 0, 0, 1, 0, 124, 0, 0, 4, 97, 4, 58, 0, 28, 0, 0, 97, 17, 33, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 17, 4, 97, 254, 233, 20, 39, 20, 32, 66, 35, 59, 86, 28, 28, 27, 254, 234, 70, 66, 65, 188, 117, 51, 109, 52, 4, 58, 254, 4, 4, 7, 3, 4, 4, 19, 22, 22, 73, 54, 1, 84, 254, 172, 108, 156, 50, 51, 49, 11, 10, 254, 163, 0, 0, 1, 0, 83, 0, 0, 4, 127, 4, 58, 0, 11, 0, 0, 65, 33, 17, 33, 17, 33, 17, 35, 17, 33, 17, 35, 1, 97, 254, 242, 4, 44, 254, 242, 133, 254, 250, 133, 4, 58, 251, 198, 4, 58, 252, 165, 3, 91, 252, 165, 0, 1, 0, 79, 254, 191, 4, 235, 4, 58, 0, 15, 0, 0, 65, 33, 17, 33, 17, 51, 19, 35, 17, 33, 17, 35, 17, 33, 17, 35, 1, 93, 254, 242, 3, 167, 225, 20, 112, 254, 242, 133, 254, 250, 133, 4, 58, 251, 198, 254, 191, 2, 31, 3, 92, 252, 165, 3, 91, 252, 165, 0, 0, 2, 0, 56, 0, 0, 4, 153, 4, 58, 0, 18, 0, 33, 0, 0, 97, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 33, 21, 33, 1, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 63, 1, 164, 106, 164, 56, 55, 57, 57, 55, 56, 164, 106, 139, 253, 224, 1, 7, 1, 25, 139, 43, 60, 19, 18, 16, 16, 18, 19, 60, 43, 139, 56, 48, 48, 130, 75, 72, 121, 45, 44, 50, 1, 137, 217, 254, 119, 23, 18, 18, 43, 21, 24, 47, 19, 19, 24, 0, 3, 0, 99, 0, 0, 4, 124, 4, 58, 0, 16, 0, 20, 0, 35, 0, 0, 65, 17, 33, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 1, 17, 33, 17, 1, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 108, 254, 247, 1, 50, 98, 144, 48, 47, 46, 46, 47, 48, 144, 98, 2, 231, 254, 231, 254, 9, 41, 46, 53, 14, 13, 7, 7, 13, 14, 53, 46, 41, 2, 185, 1, 129, 251, 198, 56, 48, 48, 130, 75, 72, 124, 46, 45, 53, 253, 71, 4, 58, 251, 198, 1, 248, 29, 22, 23, 55, 26, 24, 47, 19, 19, 24, 0, 2, 0, 138, 0, 0, 4, 125, 4, 58, 0, 16, 0, 31, 0, 0, 65, 17, 33, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 5, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 1, 160, 254, 234, 2, 39, 109, 172, 59, 58, 62, 62, 58, 59, 172, 109, 254, 239, 1, 17, 49, 69, 22, 22, 20, 20, 22, 22, 69, 49, 254, 239, 2, 206, 1, 108, 251, 198, 54, 48, 47, 131, 77, 80, 133, 48, 47, 53, 223, 22, 19, 19, 51, 28, 27, 48, 18, 19, 22, 0, 0, 1, 0, 111, 255, 236, 4, 84, 4, 78, 0, 53, 0, 0, 65, 50, 22, 23, 22, 22, 23, 33, 21, 33, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 33, 52, 54, 55, 54, 54, 2, 75, 63, 86, 28, 28, 28, 5, 254, 191, 1, 66, 5, 28, 27, 28, 87, 63, 50, 80, 28, 28, 30, 254, 251, 70, 63, 63, 175, 106, 132, 195, 65, 64, 64, 64, 64, 65, 196, 132, 98, 174, 64, 65, 75, 1, 5, 33, 29, 28, 79, 3, 109, 39, 33, 33, 89, 51, 174, 52, 92, 35, 35, 41, 31, 26, 26, 71, 41, 96, 154, 54, 55, 59, 85, 74, 73, 199, 114, 30, 114, 199, 74, 74, 86, 59, 52, 53, 143, 84, 37, 62, 22, 21, 24, 0, 0, 2, 0, 54, 255, 235, 4, 163, 4, 78, 0, 31, 0, 57, 0, 0, 65, 17, 33, 17, 33, 17, 51, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 5, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 87, 254, 223, 1, 33, 83, 1, 49, 48, 47, 141, 95, 96, 142, 48, 47, 47, 47, 48, 48, 143, 96, 92, 139, 47, 47, 51, 3, 1, 8, 10, 13, 13, 45, 34, 34, 46, 13, 13, 11, 10, 13, 13, 45, 34, 35, 45, 13, 13, 11, 2, 117, 1, 197, 251, 198, 1, 172, 95, 164, 60, 61, 69, 76, 68, 67, 184, 107, 118, 107, 184, 68, 67, 77, 72, 63, 63, 173, 102, 148, 118, 55, 103, 40, 40, 48, 48, 40, 40, 103, 55, 118, 56, 103, 40, 40, 47, 47, 40, 40, 103, 0, 2, 0, 77, 0, 0, 4, 81, 4, 58, 0, 16, 0, 31, 0, 0, 65, 33, 34, 6, 7, 6, 6, 21, 20, 22, 23, 3, 33, 19, 51, 17, 33, 1, 52, 54, 55, 54, 54, 51, 33, 17, 33, 34, 38, 39, 38, 38, 4, 81, 253, 234, 107, 169, 59, 59, 63, 108, 95, 240, 1, 28, 214, 252, 1, 22, 253, 55, 22, 22, 22, 67, 46, 1, 0, 254, 248, 44, 64, 21, 21, 21, 4, 58, 54, 48, 48, 131, 78, 99, 156, 42, 254, 86, 1, 123, 254, 133, 2, 203, 26, 51, 21, 20, 26, 254, 228, 25, 20, 20, 50, 0, 0, 1, 255, 206, 254, 75, 4, 77, 6, 0, 0, 57, 0, 0, 65, 53, 35, 53, 33, 21, 35, 21, 51, 17, 33, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 3, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 17, 2, 130, 233, 254, 234, 181, 181, 1, 22, 18, 47, 29, 24, 56, 32, 48, 76, 27, 27, 29, 1, 2, 22, 19, 15, 39, 24, 26, 52, 22, 14, 37, 65, 38, 87, 139, 48, 48, 51, 1, 57, 51, 51, 142, 85, 54, 97, 42, 32, 56, 24, 4, 166, 180, 166, 166, 180, 251, 90, 3, 13, 24, 38, 12, 10, 11, 25, 26, 26, 84, 58, 253, 69, 48, 71, 21, 15, 16, 6, 6, 219, 10, 7, 52, 50, 50, 147, 96, 2, 185, 119, 169, 54, 54, 51, 29, 27, 21, 57, 35, 1, 1, 0, 1, 0, 107, 255, 235, 4, 50, 4, 78, 0, 53, 0, 0, 101, 34, 38, 39, 38, 38, 39, 33, 53, 33, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 33, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 39, 33, 22, 6, 7, 6, 6, 2, 98, 56, 78, 26, 27, 28, 6, 1, 61, 254, 193, 4, 28, 26, 26, 81, 57, 45, 76, 27, 27, 28, 2, 1, 6, 2, 68, 61, 62, 170, 100, 125, 189, 64, 64, 64, 65, 64, 63, 190, 126, 93, 167, 63, 63, 73, 2, 254, 250, 2, 31, 28, 28, 74, 202, 38, 33, 32, 87, 50, 176, 52, 94, 36, 35, 42, 31, 26, 26, 72, 40, 96, 155, 55, 54, 60, 86, 74, 74, 199, 114, 30, 114, 199, 74, 74, 85, 59, 52, 52, 144, 84, 38, 62, 22, 22, 24, 0, 2, 0, 21, 0, 0, 4, 214, 4, 58, 0, 40, 0, 55, 0, 0, 65, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 23, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 53, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 19, 20, 6, 7, 6, 6, 7, 35, 17, 51, 22, 22, 23, 22, 22, 3, 58, 253, 122, 4, 5, 7, 24, 18, 15, 40, 23, 23, 2, 39, 103, 145, 46, 29, 38, 10, 5, 6, 111, 1, 8, 99, 156, 54, 54, 56, 56, 52, 52, 156, 91, 5, 134, 15, 16, 17, 50, 35, 1, 4, 35, 48, 16, 16, 15, 4, 58, 254, 51, 49, 87, 36, 56, 81, 26, 23, 22, 241, 78, 78, 49, 128, 78, 47, 105, 58, 235, 252, 168, 54, 49, 49, 135, 80, 79, 133, 48, 47, 57, 254, 150, 28, 53, 20, 20, 26, 1, 1, 31, 2, 24, 18, 19, 49, 0, 0, 2, 0, 91, 0, 0, 4, 159, 4, 58, 0, 24, 0, 39, 0, 0, 65, 17, 33, 17, 33, 17, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 33, 17, 5, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 1, 114, 254, 233, 1, 23, 123, 1, 35, 95, 148, 51, 51, 54, 54, 51, 51, 148, 95, 12, 254, 233, 1, 23, 12, 33, 46, 15, 14, 13, 13, 14, 15, 46, 33, 12, 2, 153, 1, 161, 251, 198, 1, 186, 254, 70, 54, 49, 49, 135, 80, 80, 134, 48, 48, 54, 1, 95, 254, 95, 157, 23, 19, 19, 50, 28, 29, 53, 20, 21, 25, 0, 0, 1, 255, 249, 0, 0, 4, 86, 6, 0, 0, 39, 0, 0, 65, 53, 33, 53, 33, 21, 35, 21, 51, 17, 33, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 33, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 17, 2, 173, 254, 246, 254, 234, 148, 148, 1, 22, 17, 44, 27, 25, 59, 34, 48, 76, 27, 27, 29, 1, 22, 57, 51, 51, 142, 85, 51, 93, 39, 35, 62, 25, 4, 177, 180, 155, 155, 180, 251, 79, 3, 13, 23, 37, 12, 11, 12, 25, 26, 26, 84, 58, 253, 111, 2, 143, 119, 169, 54, 54, 51, 26, 25, 21, 60, 37, 1, 12, 0, 1, 0, 121, 254, 154, 4, 60, 4, 58, 0, 11, 0, 0, 65, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 1, 144, 254, 233, 1, 87, 1, 22, 1, 86, 254, 233, 254, 107, 4, 58, 251, 198, 254, 154, 1, 102, 4, 58, 252, 165, 0, 1, 0, 71, 255, 235, 4, 167, 5, 176, 0, 56, 0, 0, 65, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 167, 254, 252, 12, 11, 10, 25, 16, 17, 29, 11, 19, 20, 254, 252, 17, 15, 10, 25, 15, 16, 26, 10, 18, 19, 254, 253, 52, 47, 46, 128, 75, 48, 84, 33, 13, 24, 11, 10, 23, 13, 35, 91, 53, 72, 122, 45, 45, 50, 5, 176, 251, 193, 48, 66, 19, 16, 15, 10, 11, 18, 71, 54, 4, 63, 251, 193, 53, 70, 18, 12, 11, 10, 11, 17, 71, 55, 4, 63, 251, 193, 96, 146, 49, 49, 50, 32, 32, 13, 31, 18, 17, 29, 12, 34, 34, 50, 49, 49, 146, 96, 0, 0, 1, 0, 69, 255, 235, 4, 141, 4, 58, 0, 56, 0, 0, 65, 35, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 141, 253, 9, 8, 9, 26, 17, 22, 33, 12, 14, 13, 254, 253, 12, 12, 10, 32, 21, 19, 30, 10, 11, 11, 253, 50, 44, 44, 123, 73, 48, 83, 33, 15, 26, 11, 14, 32, 19, 33, 80, 46, 71, 118, 43, 43, 47, 4, 58, 253, 79, 51, 73, 23, 22, 22, 18, 19, 23, 77, 54, 2, 177, 253, 79, 53, 75, 23, 21, 19, 21, 21, 23, 74, 52, 2, 177, 253, 79, 102, 155, 52, 52, 53, 32, 33, 14, 36, 21, 25, 41, 16, 27, 27, 53, 52, 52, 155, 102, 0, 0, 2, 0, 35, 0, 0, 4, 123, 6, 26, 0, 24, 0, 39, 0, 0, 65, 53, 33, 17, 33, 17, 35, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 2, 229, 254, 247, 254, 233, 162, 162, 1, 236, 109, 171, 59, 58, 61, 61, 58, 59, 171, 109, 213, 213, 49, 69, 22, 21, 20, 20, 21, 22, 69, 49, 213, 4, 52, 180, 1, 50, 254, 206, 180, 251, 204, 52, 47, 47, 130, 78, 77, 129, 47, 46, 52, 1, 115, 253, 174, 21, 17, 18, 47, 26, 27, 48, 17, 18, 21, 0, 0, 1, 0, 56, 255, 237, 4, 173, 5, 196, 0, 84, 0, 0, 65, 17, 33, 17, 33, 17, 51, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 35, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 52, 53, 53, 51, 53, 35, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 51, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 21, 1, 61, 254, 251, 1, 5, 102, 16, 19, 18, 59, 44, 43, 119, 78, 73, 137, 52, 38, 55, 11, 4, 3, 250, 2, 5, 4, 2, 8, 5, 12, 46, 39, 35, 46, 14, 14, 14, 2, 3, 213, 213, 2, 2, 3, 15, 14, 14, 43, 33, 26, 39, 14, 18, 20, 4, 3, 3, 249, 8, 59, 53, 54, 142, 76, 76, 116, 43, 44, 60, 18, 18, 17, 2, 3, 93, 2, 83, 250, 80, 2, 108, 14, 77, 152, 69, 70, 120, 43, 44, 50, 51, 58, 43, 133, 80, 29, 63, 34, 26, 51, 23, 18, 34, 14, 34, 40, 37, 31, 31, 79, 42, 41, 81, 32, 14, 241, 40, 26, 56, 28, 40, 77, 30, 29, 37, 16, 14, 18, 58, 34, 24, 56, 30, 141, 192, 59, 59, 51, 49, 43, 44, 118, 68, 65, 138, 70, 20, 0, 0, 1, 0, 77, 255, 236, 4, 160, 4, 81, 0, 73, 0, 0, 65, 53, 35, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 35, 17, 33, 17, 33, 17, 51, 23, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 35, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 53, 3, 131, 182, 3, 2, 4, 24, 24, 11, 26, 17, 28, 38, 12, 11, 12, 2, 253, 1, 54, 47, 48, 127, 75, 58, 98, 40, 65, 86, 23, 11, 13, 2, 92, 254, 245, 1, 11, 92, 1, 2, 11, 10, 18, 74, 52, 44, 115, 70, 67, 124, 48, 48, 61, 3, 253, 2, 11, 9, 12, 40, 28, 21, 33, 12, 14, 19, 5, 4, 3, 1, 1, 197, 185, 17, 37, 19, 40, 74, 20, 9, 10, 21, 19, 20, 57, 38, 109, 151, 47, 47, 42, 27, 24, 40, 131, 79, 39, 84, 43, 1, 189, 251, 197, 1, 197, 15, 38, 74, 35, 72, 125, 41, 35, 38, 45, 46, 45, 138, 93, 26, 41, 16, 22, 22, 16, 14, 17, 50, 31, 20, 41, 20, 24, 0, 2, 0, 13, 0, 0, 5, 4, 5, 176, 0, 11, 0, 16, 0, 0, 65, 19, 33, 1, 33, 1, 33, 19, 51, 17, 51, 17, 37, 19, 55, 23, 19, 3, 89, 134, 1, 37, 254, 20, 254, 227, 254, 18, 1, 37, 134, 83, 240, 254, 252, 117, 29, 29, 116, 1, 166, 254, 90, 5, 176, 250, 80, 1, 166, 254, 90, 1, 166, 201, 1, 111, 92, 92, 254, 145, 0, 2, 0, 77, 0, 0, 4, 181, 4, 58, 0, 11, 0, 16, 0, 0, 65, 19, 33, 1, 33, 1, 33, 19, 51, 17, 51, 17, 39, 55, 55, 23, 23, 3, 56, 97, 1, 28, 254, 88, 254, 231, 254, 89, 1, 28, 95, 85, 192, 212, 90, 29, 28, 90, 1, 15, 254, 241, 4, 58, 251, 198, 1, 15, 254, 241, 1, 15, 184, 253, 111, 111, 253, 0, 0, 2, 0, 82, 0, 0, 4, 190, 5, 176, 0, 19, 0, 24, 0, 0, 65, 19, 51, 1, 35, 3, 35, 17, 35, 17, 51, 17, 51, 3, 51, 19, 51, 17, 51, 17, 39, 19, 55, 23, 19, 3, 138, 79, 229, 254, 202, 220, 191, 186, 225, 225, 140, 102, 228, 88, 44, 159, 164, 82, 9, 8, 73, 1, 184, 254, 72, 5, 176, 252, 203, 3, 53, 250, 80, 1, 184, 254, 72, 1, 184, 254, 72, 1, 184, 195, 1, 156, 45, 44, 254, 99, 0, 2, 0, 82, 0, 0, 4, 190, 4, 58, 0, 19, 0, 24, 0, 0, 65, 19, 51, 1, 35, 3, 35, 17, 35, 17, 51, 17, 51, 3, 51, 19, 51, 17, 51, 17, 39, 55, 55, 23, 23, 3, 151, 66, 229, 254, 202, 220, 197, 180, 225, 225, 119, 81, 228, 74, 56, 169, 169, 67, 21, 18, 60, 1, 4, 254, 252, 4, 58, 253, 141, 2, 115, 251, 198, 1, 4, 254, 252, 1, 4, 254, 252, 1, 4, 195, 234, 72, 71, 235, 0, 2, 0, 46, 0, 0, 4, 189, 5, 176, 0, 39, 0, 44, 0, 0, 115, 33, 17, 52, 54, 55, 54, 54, 51, 51, 17, 33, 17, 51, 50, 22, 23, 22, 22, 21, 17, 33, 17, 52, 38, 39, 38, 38, 39, 35, 1, 33, 1, 35, 6, 6, 7, 6, 6, 21, 1, 3, 7, 39, 3, 46, 1, 25, 16, 16, 15, 49, 33, 45, 1, 24, 21, 33, 49, 16, 16, 16, 1, 25, 47, 44, 44, 125, 85, 3, 1, 41, 251, 206, 1, 70, 6, 85, 134, 46, 47, 50, 2, 209, 124, 3, 4, 141, 1, 146, 44, 59, 18, 17, 15, 253, 213, 2, 43, 15, 17, 18, 59, 44, 254, 110, 1, 146, 95, 138, 46, 44, 50, 6, 2, 163, 253, 95, 5, 47, 44, 46, 141, 98, 3, 56, 254, 178, 9, 9, 1, 78, 0, 2, 0, 65, 0, 0, 4, 114, 4, 58, 0, 41, 0, 47, 0, 0, 115, 33, 53, 52, 54, 55, 54, 54, 51, 51, 21, 17, 33, 17, 53, 51, 50, 22, 23, 22, 22, 21, 21, 33, 53, 52, 38, 39, 38, 38, 39, 39, 1, 33, 1, 7, 6, 6, 7, 6, 6, 21, 1, 3, 7, 35, 39, 3, 65, 1, 22, 12, 12, 12, 36, 24, 28, 1, 22, 18, 25, 36, 12, 12, 11, 1, 23, 38, 36, 36, 105, 54, 12, 1, 21, 251, 230, 1, 19, 8, 67, 105, 36, 38, 40, 2, 163, 125, 4, 3, 5, 125, 238, 46, 62, 19, 18, 15, 2, 254, 116, 1, 139, 3, 15, 18, 19, 62, 46, 238, 238, 87, 129, 45, 44, 52, 8, 2, 1, 221, 254, 37, 1, 9, 50, 43, 45, 132, 89, 2, 144, 255, 0, 13, 13, 1, 0, 0, 0, 2, 0, 54, 0, 0, 4, 204, 5, 176, 0, 45, 0, 50, 0, 0, 97, 51, 19, 52, 54, 55, 54, 54, 51, 51, 17, 51, 17, 51, 50, 22, 23, 22, 22, 21, 19, 51, 19, 52, 38, 39, 38, 38, 39, 39, 19, 33, 19, 33, 17, 35, 17, 51, 17, 51, 6, 6, 7, 6, 6, 21, 1, 3, 7, 39, 3, 1, 109, 210, 3, 7, 10, 10, 35, 27, 25, 211, 14, 28, 33, 9, 9, 5, 8, 215, 4, 33, 32, 31, 97, 64, 5, 227, 252, 234, 226, 254, 160, 223, 223, 104, 4, 7, 2, 5, 4, 2, 14, 84, 2, 2, 86, 1, 179, 30, 55, 22, 21, 26, 253, 179, 2, 77, 26, 21, 22, 55, 30, 254, 77, 1, 179, 76, 125, 46, 45, 56, 8, 1, 2, 152, 253, 108, 2, 148, 250, 80, 2, 83, 12, 27, 13, 25, 54, 29, 3, 46, 254, 240, 7, 7, 1, 16, 0, 2, 0, 60, 0, 0, 4, 198, 4, 58, 0, 47, 0, 52, 0, 0, 115, 51, 17, 51, 6, 6, 7, 6, 6, 21, 19, 51, 19, 52, 54, 55, 54, 54, 51, 51, 21, 17, 51, 17, 55, 51, 50, 22, 23, 22, 22, 21, 19, 51, 19, 52, 38, 39, 38, 38, 39, 35, 19, 33, 19, 33, 17, 35, 5, 7, 7, 39, 39, 60, 224, 118, 5, 8, 3, 3, 3, 6, 213, 6, 7, 9, 9, 32, 26, 10, 212, 3, 1, 26, 33, 9, 9, 6, 7, 212, 6, 43, 42, 28, 72, 46, 1, 200, 253, 1, 198, 254, 175, 224, 3, 61, 78, 4, 3, 78, 1, 159, 16, 34, 18, 20, 43, 23, 254, 251, 1, 5, 29, 53, 21, 21, 25, 1, 254, 103, 1, 147, 7, 25, 21, 21, 53, 29, 254, 251, 1, 5, 87, 133, 43, 28, 36, 9, 1, 229, 254, 34, 1, 222, 171, 216, 9, 9, 216, 0, 0, 2, 0, 145, 254, 64, 4, 50, 7, 116, 0, 92, 0, 101, 0, 0, 65, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 34, 6, 7, 6, 6, 21, 22, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 33, 21, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 3, 39, 35, 21, 5, 51, 37, 53, 35, 2, 10, 150, 143, 75, 112, 35, 29, 30, 9, 8, 14, 49, 34, 25, 62, 35, 60, 81, 132, 46, 46, 50, 1, 44, 42, 40, 117, 75, 82, 20, 51, 22, 23, 30, 12, 12, 14, 47, 33, 56, 62, 112, 48, 72, 113, 36, 28, 29, 46, 45, 34, 91, 56, 58, 90, 30, 26, 27, 25, 23, 31, 96, 60, 59, 141, 80, 254, 246, 1, 10, 68, 95, 28, 23, 22, 11, 11, 13, 45, 31, 24, 61, 26, 146, 237, 1, 40, 175, 1, 40, 237, 3, 94, 232, 34, 34, 28, 79, 51, 22, 40, 18, 31, 47, 13, 11, 12, 35, 36, 36, 110, 74, 71, 121, 47, 45, 65, 18, 171, 9, 26, 19, 19, 52, 35, 20, 34, 13, 13, 16, 17, 17, 25, 88, 59, 46, 112, 65, 73, 118, 45, 34, 51, 18, 23, 69, 45, 39, 96, 56, 56, 95, 39, 50, 73, 24, 22, 22, 230, 31, 28, 22, 59, 35, 27, 48, 21, 24, 37, 13, 9, 10, 3, 152, 126, 20, 252, 253, 19, 0, 2, 0, 181, 254, 78, 4, 39, 5, 246, 0, 98, 0, 107, 0, 0, 65, 35, 21, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 35, 34, 6, 7, 6, 6, 21, 22, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 33, 21, 33, 50, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 19, 39, 35, 21, 5, 51, 37, 53, 35, 2, 40, 163, 157, 25, 45, 19, 42, 61, 18, 15, 15, 7, 7, 12, 48, 34, 24, 57, 33, 53, 75, 122, 43, 43, 47, 1, 47, 40, 40, 106, 60, 82, 18, 47, 20, 21, 28, 11, 12, 15, 54, 40, 49, 44, 82, 37, 90, 138, 35, 16, 17, 32, 31, 28, 79, 51, 34, 57, 21, 33, 35, 27, 25, 28, 86, 55, 56, 134, 76, 254, 246, 1, 10, 27, 46, 20, 28, 43, 14, 16, 15, 21, 23, 14, 37, 23, 16, 37, 12, 146, 237, 1, 40, 175, 1, 40, 237, 2, 114, 177, 3, 3, 7, 26, 19, 16, 39, 23, 14, 25, 11, 22, 33, 10, 7, 8, 32, 32, 33, 100, 67, 65, 112, 45, 45, 66, 20, 157, 9, 26, 19, 19, 52, 35, 18, 32, 12, 16, 18, 7, 9, 21, 86, 63, 30, 70, 39, 45, 77, 30, 27, 43, 15, 14, 36, 22, 33, 85, 52, 47, 78, 32, 35, 54, 18, 18, 17, 204, 4, 4, 6, 20, 13, 14, 36, 21, 29, 49, 18, 11, 16, 5, 3, 3, 3, 6, 126, 20, 252, 253, 19, 0, 3, 0, 78, 255, 236, 4, 121, 5, 196, 0, 37, 0, 58, 0, 79, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 1, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 29, 3, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 4, 121, 15, 15, 32, 134, 97, 53, 126, 70, 80, 138, 57, 75, 107, 30, 19, 19, 18, 17, 30, 103, 70, 58, 145, 85, 81, 142, 59, 71, 108, 33, 23, 24, 252, 242, 8, 10, 13, 46, 34, 25, 64, 40, 41, 67, 27, 42, 56, 12, 6, 6, 10, 9, 15, 48, 36, 27, 69, 42, 43, 67, 26, 36, 45, 11, 7, 6, 2, 109, 212, 63, 117, 53, 119, 181, 52, 28, 30, 40, 37, 47, 156, 96, 60, 134, 73, 212, 71, 130, 58, 97, 152, 48, 41, 44, 40, 37, 47, 140, 89, 63, 146, 1, 29, 8, 54, 98, 42, 59, 87, 27, 20, 21, 22, 20, 32, 112, 70, 35, 76, 41, 8, 180, 26, 51, 93, 40, 59, 92, 29, 22, 24, 24, 23, 31, 99, 64, 38, 85, 46, 26, 0, 3, 0, 97, 255, 235, 4, 94, 4, 78, 0, 25, 0, 38, 0, 51, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 37, 50, 22, 23, 22, 22, 23, 33, 54, 54, 55, 54, 54, 19, 34, 38, 39, 38, 38, 39, 33, 6, 6, 7, 6, 6, 97, 68, 66, 65, 191, 122, 121, 190, 65, 65, 68, 68, 65, 66, 190, 122, 122, 189, 65, 66, 68, 1, 254, 53, 80, 28, 27, 33, 6, 254, 57, 6, 33, 28, 28, 80, 55, 53, 80, 28, 28, 33, 7, 1, 198, 7, 33, 27, 28, 78, 2, 39, 21, 119, 201, 74, 74, 83, 83, 74, 74, 201, 119, 21, 118, 201, 74, 74, 84, 84, 74, 74, 201, 208, 39, 33, 34, 92, 53, 53, 92, 34, 33, 39, 253, 93, 37, 33, 32, 89, 53, 53, 89, 32, 33, 37, 0, 1, 0, 12, 0, 0, 5, 3, 5, 194, 0, 22, 0, 0, 65, 1, 33, 1, 33, 1, 54, 54, 55, 54, 54, 51, 51, 55, 39, 34, 6, 7, 6, 6, 7, 3, 7, 2, 115, 254, 203, 254, 206, 1, 233, 1, 39, 1, 81, 9, 24, 16, 14, 37, 21, 27, 2, 41, 72, 111, 43, 44, 66, 26, 212, 20, 1, 139, 4, 37, 250, 80, 4, 87, 28, 45, 15, 14, 16, 244, 1, 45, 44, 44, 129, 84, 253, 30, 91, 0, 0, 1, 0, 54, 0, 0, 4, 117, 4, 78, 0, 26, 0, 0, 97, 33, 1, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 7, 3, 7, 39, 3, 33, 1, 181, 1, 4, 1, 6, 7, 19, 13, 15, 36, 20, 12, 32, 4, 24, 23, 52, 29, 63, 103, 41, 40, 62, 23, 120, 20, 20, 200, 254, 221, 2, 253, 20, 35, 14, 15, 17, 2, 2, 220, 13, 7, 43, 43, 40, 120, 78, 254, 135, 106, 106, 2, 169, 0, 0, 3, 0, 69, 254, 81, 4, 191, 5, 197, 0, 25, 0, 51, 0, 79, 0, 0, 65, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 35, 3, 7, 39, 3, 35, 19, 7, 6, 6, 7, 6, 6, 35, 34, 38, 35, 2, 149, 41, 40, 40, 115, 73, 69, 106, 35, 36, 37, 36, 36, 36, 106, 69, 74, 115, 40, 39, 41, 200, 11, 11, 13, 43, 31, 31, 41, 11, 11, 9, 10, 12, 12, 40, 29, 28, 40, 13, 15, 13, 188, 14, 60, 21, 58, 82, 28, 28, 32, 9, 234, 176, 67, 28, 17, 45, 176, 152, 21, 5, 14, 13, 13, 39, 29, 10, 50, 11, 1, 221, 1, 246, 113, 184, 65, 65, 71, 71, 65, 65, 184, 113, 254, 10, 113, 184, 65, 65, 71, 71, 65, 65, 184, 2, 145, 253, 184, 66, 105, 36, 41, 43, 43, 42, 36, 105, 65, 2, 72, 69, 107, 37, 37, 39, 35, 32, 37, 112, 250, 27, 4, 12, 54, 40, 40, 91, 38, 4, 226, 254, 103, 171, 171, 1, 153, 251, 191, 82, 18, 61, 29, 29, 42, 5, 0, 0, 3, 0, 52, 254, 81, 4, 191, 4, 78, 0, 25, 0, 51, 0, 79, 0, 0, 83, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 35, 3, 7, 39, 3, 35, 19, 7, 6, 6, 7, 6, 6, 35, 34, 38, 35, 52, 39, 41, 40, 126, 87, 87, 125, 41, 40, 39, 39, 40, 41, 126, 88, 87, 125, 40, 41, 38, 200, 9, 14, 14, 51, 43, 43, 53, 15, 14, 9, 9, 14, 14, 52, 43, 44, 52, 14, 14, 9, 1, 141, 17, 57, 21, 58, 82, 28, 28, 32, 9, 234, 176, 67, 28, 17, 45, 176, 152, 21, 5, 14, 13, 13, 39, 29, 10, 50, 11, 2, 39, 21, 117, 202, 74, 74, 84, 84, 74, 74, 202, 117, 21, 117, 202, 74, 74, 84, 84, 74, 74, 202, 138, 21, 78, 142, 54, 54, 63, 63, 54, 54, 142, 78, 21, 79, 142, 53, 54, 63, 63, 54, 53, 142, 252, 158, 5, 11, 54, 40, 40, 91, 38, 4, 226, 254, 104, 175, 175, 1, 152, 251, 191, 82, 18, 61, 29, 29, 42, 5, 0, 4, 0, 80, 255, 120, 4, 123, 6, 41, 0, 3, 0, 7, 0, 45, 0, 83, 0, 0, 65, 17, 35, 17, 19, 17, 35, 17, 1, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 1, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 2, 198, 196, 198, 196, 2, 119, 14, 14, 32, 138, 97, 53, 124, 70, 80, 137, 58, 70, 108, 32, 19, 21, 23, 23, 32, 104, 73, 56, 136, 79, 82, 142, 59, 71, 106, 34, 23, 24, 254, 227, 12, 11, 14, 43, 33, 27, 72, 44, 47, 71, 27, 31, 40, 10, 8, 7, 24, 28, 11, 25, 16, 26, 67, 43, 48, 75, 29, 37, 46, 11, 6, 5, 4, 100, 1, 197, 254, 59, 251, 20, 1, 208, 254, 48, 2, 245, 212, 61, 116, 52, 121, 184, 52, 27, 30, 40, 37, 44, 152, 94, 61, 139, 76, 212, 80, 148, 63, 90, 142, 45, 35, 38, 41, 37, 47, 136, 92, 63, 146, 1, 37, 214, 55, 101, 43, 51, 82, 27, 25, 26, 29, 26, 31, 90, 55, 40, 90, 49, 214, 90, 151, 52, 20, 35, 13, 23, 24, 30, 27, 34, 106, 67, 33, 73, 0, 0, 4, 0, 104, 255, 109, 4, 101, 4, 199, 0, 3, 0, 7, 0, 33, 0, 59, 0, 0, 65, 17, 35, 17, 19, 17, 35, 17, 1, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 5, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 2, 186, 170, 166, 171, 254, 93, 68, 66, 65, 191, 122, 121, 190, 65, 65, 68, 68, 65, 66, 190, 122, 122, 189, 65, 66, 68, 1, 22, 26, 28, 28, 88, 62, 63, 88, 28, 27, 26, 26, 27, 28, 88, 61, 63, 89, 28, 28, 26, 2, 252, 1, 203, 254, 53, 252, 113, 1, 221, 254, 35, 2, 186, 21, 119, 201, 74, 74, 83, 83, 74, 74, 201, 119, 21, 118, 201, 74, 74, 84, 84, 74, 74, 201, 139, 21, 66, 118, 45, 45, 52, 52, 45, 45, 118, 66, 21, 68, 119, 44, 45, 52, 52, 45, 44, 119, 0, 3, 0, 47, 255, 235, 5, 3, 7, 42, 0, 98, 0, 134, 0, 147, 0, 0, 65, 21, 50, 22, 23, 22, 22, 23, 22, 22, 21, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 55, 54, 54, 51, 53, 34, 6, 7, 6, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 39, 38, 38, 19, 35, 34, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 51, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 51, 5, 23, 54, 54, 55, 54, 54, 53, 53, 35, 21, 20, 6, 3, 78, 19, 34, 15, 24, 36, 13, 7, 8, 19, 17, 15, 41, 24, 16, 26, 10, 11, 15, 4, 2, 3, 254, 244, 2, 2, 4, 14, 9, 11, 28, 17, 25, 42, 15, 17, 18, 5, 4, 11, 40, 29, 15, 34, 19, 65, 117, 49, 51, 83, 26, 22, 24, 59, 53, 53, 146, 86, 41, 74, 31, 21, 37, 16, 18, 42, 23, 30, 70, 39, 86, 145, 53, 53, 60, 25, 23, 32, 100, 65, 43, 97, 152, 22, 42, 74, 34, 36, 70, 33, 35, 69, 36, 58, 90, 30, 27, 28, 133, 14, 13, 14, 38, 24, 21, 46, 26, 33, 82, 44, 38, 87, 48, 23, 254, 5, 82, 25, 49, 19, 19, 23, 149, 35, 5, 176, 228, 7, 6, 11, 41, 32, 20, 51, 30, 253, 101, 44, 63, 18, 17, 16, 10, 11, 11, 36, 25, 15, 36, 20, 1, 191, 254, 65, 19, 33, 14, 25, 36, 12, 13, 12, 16, 17, 19, 62, 44, 2, 155, 24, 41, 18, 40, 51, 11, 7, 6, 228, 26, 25, 28, 81, 53, 44, 107, 62, 253, 101, 95, 144, 48, 48, 49, 20, 21, 13, 36, 22, 25, 38, 14, 17, 18, 49, 48, 48, 144, 95, 2, 155, 64, 110, 45, 59, 89, 25, 17, 17, 1, 2, 15, 11, 14, 31, 14, 14, 21, 29, 29, 27, 79, 53, 37, 18, 26, 39, 12, 13, 12, 14, 10, 15, 36, 15, 13, 17, 239, 57, 13, 45, 27, 27, 60, 29, 102, 95, 38, 71, 0, 0, 3, 0, 74, 255, 235, 4, 154, 5, 222, 0, 86, 0, 122, 0, 135, 0, 0, 65, 21, 50, 22, 23, 22, 22, 21, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 35, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 53, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 37, 51, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 51, 53, 35, 34, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 19, 23, 54, 54, 55, 54, 54, 53, 53, 35, 21, 20, 6, 3, 38, 30, 43, 15, 14, 13, 9, 11, 9, 27, 19, 26, 38, 13, 8, 11, 3, 2, 2, 234, 2, 2, 3, 9, 6, 11, 37, 25, 18, 27, 10, 14, 14, 13, 15, 14, 44, 30, 74, 134, 52, 52, 61, 55, 47, 46, 120, 65, 48, 82, 33, 16, 29, 11, 12, 31, 17, 32, 82, 46, 64, 120, 47, 46, 55, 61, 51, 52, 135, 253, 198, 136, 11, 10, 13, 44, 27, 21, 43, 23, 35, 79, 48, 36, 82, 47, 45, 43, 46, 79, 35, 36, 64, 31, 32, 63, 34, 58, 92, 31, 27, 29, 210, 82, 25, 49, 19, 19, 23, 149, 35, 4, 78, 193, 18, 22, 22, 77, 58, 254, 153, 45, 64, 19, 15, 15, 11, 15, 9, 28, 19, 11, 29, 16, 244, 244, 18, 31, 12, 17, 25, 9, 15, 11, 12, 13, 18, 67, 48, 1, 103, 58, 77, 22, 22, 18, 193, 48, 48, 49, 147, 98, 254, 129, 89, 131, 43, 44, 43, 35, 33, 16, 42, 25, 26, 44, 17, 31, 33, 43, 44, 43, 131, 89, 1, 127, 98, 147, 49, 48, 48, 146, 18, 23, 34, 13, 16, 16, 13, 10, 15, 37, 18, 11, 16, 134, 18, 13, 13, 32, 13, 13, 18, 29, 29, 27, 79, 53, 254, 229, 57, 13, 45, 27, 27, 60, 29, 102, 95, 38, 71, 0, 2, 0, 77, 255, 235, 4, 173, 7, 7, 0, 7, 0, 70, 0, 0, 65, 21, 33, 21, 51, 53, 33, 53, 19, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 1, 7, 1, 17, 181, 1, 34, 190, 254, 252, 16, 16, 8, 22, 12, 18, 31, 12, 10, 15, 4, 3, 3, 254, 252, 3, 2, 4, 13, 9, 10, 26, 15, 16, 27, 10, 18, 18, 254, 253, 52, 47, 46, 128, 75, 48, 84, 33, 13, 25, 10, 9, 20, 11, 36, 94, 55, 72, 122, 45, 45, 50, 7, 7, 112, 127, 127, 112, 254, 169, 251, 193, 56, 71, 18, 10, 9, 12, 13, 11, 34, 23, 15, 36, 20, 4, 63, 251, 193, 21, 37, 15, 22, 34, 11, 12, 12, 11, 11, 18, 70, 54, 4, 63, 251, 193, 96, 146, 49, 49, 50, 32, 33, 12, 31, 18, 15, 26, 11, 37, 37, 50, 49, 49, 146, 96, 0, 0, 2, 0, 69, 255, 235, 4, 141, 5, 177, 0, 7, 0, 64, 0, 0, 65, 21, 33, 21, 51, 53, 33, 53, 19, 35, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 35, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 1, 3, 1, 17, 181, 1, 34, 162, 253, 10, 9, 9, 25, 16, 25, 37, 12, 10, 10, 254, 253, 7, 8, 10, 36, 26, 19, 29, 10, 11, 12, 253, 50, 44, 44, 123, 73, 42, 76, 31, 19, 34, 14, 15, 38, 23, 31, 74, 43, 71, 118, 43, 43, 47, 5, 177, 112, 127, 127, 112, 254, 137, 253, 79, 53, 76, 23, 20, 19, 25, 26, 23, 70, 47, 2, 177, 253, 79, 42, 65, 23, 31, 30, 20, 21, 23, 74, 53, 2, 177, 253, 79, 102, 155, 52, 52, 53, 26, 25, 16, 43, 26, 28, 45, 17, 23, 23, 53, 52, 52, 155, 102, 0, 0, 1, 0, 125, 254, 147, 4, 85, 5, 197, 0, 42, 0, 0, 65, 17, 35, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 23, 17, 3, 98, 180, 69, 105, 35, 36, 36, 28, 28, 27, 83, 55, 53, 76, 24, 25, 24, 1, 25, 65, 62, 62, 179, 115, 114, 185, 65, 66, 71, 64, 60, 60, 170, 106, 254, 147, 2, 58, 57, 51, 50, 138, 81, 1, 36, 81, 137, 51, 50, 56, 32, 32, 34, 106, 72, 122, 188, 64, 64, 66, 90, 80, 80, 223, 132, 254, 222, 119, 203, 78, 78, 101, 16, 254, 160, 0, 0, 1, 0, 177, 254, 145, 4, 90, 4, 78, 0, 45, 0, 0, 65, 17, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 17, 3, 83, 176, 63, 85, 25, 26, 21, 22, 26, 25, 83, 62, 42, 67, 23, 23, 24, 1, 6, 65, 58, 58, 163, 97, 71, 123, 50, 66, 98, 29, 29, 30, 51, 50, 49, 148, 98, 254, 145, 2, 57, 54, 45, 44, 117, 63, 30, 62, 116, 45, 45, 54, 31, 26, 26, 72, 40, 96, 155, 55, 54, 60, 30, 28, 34, 108, 66, 61, 143, 77, 30, 102, 180, 71, 71, 96, 17, 254, 157, 0, 1, 0, 107, 0, 0, 4, 145, 5, 62, 0, 19, 0, 0, 65, 19, 5, 55, 37, 19, 35, 3, 37, 7, 5, 3, 37, 7, 5, 3, 51, 19, 5, 55, 2, 89, 204, 1, 32, 76, 254, 219, 228, 172, 185, 254, 221, 73, 1, 34, 202, 254, 219, 71, 1, 33, 225, 175, 181, 1, 35, 72, 1, 193, 1, 104, 170, 127, 171, 1, 149, 254, 186, 171, 130, 171, 254, 152, 171, 128, 171, 254, 114, 1, 63, 170, 128, 0, 0, 1, 253, 39, 4, 162, 255, 250, 5, 253, 0, 7, 0, 0, 65, 33, 53, 39, 23, 33, 7, 23, 253, 217, 2, 33, 177, 1, 253, 222, 1, 178, 5, 32, 220, 1, 108, 238, 1, 0, 0, 1, 252, 251, 5, 23, 255, 249, 6, 21, 0, 35, 0, 0, 65, 35, 23, 51, 50, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 51, 55, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 253, 42, 47, 2, 47, 52, 93, 42, 47, 85, 39, 31, 57, 27, 24, 40, 14, 13, 15, 136, 1, 1, 31, 32, 30, 89, 58, 40, 74, 37, 37, 76, 40, 40, 87, 5, 157, 134, 17, 12, 14, 34, 16, 11, 16, 12, 13, 12, 39, 26, 18, 37, 58, 84, 26, 25, 24, 18, 13, 13, 32, 13, 13, 18, 0, 1, 253, 246, 5, 19, 254, 237, 6, 91, 0, 5, 0, 0, 65, 23, 55, 39, 55, 39, 253, 247, 164, 82, 58, 1, 190, 5, 225, 206, 86, 115, 122, 5, 0, 1, 253, 212, 5, 19, 254, 204, 6, 91, 0, 5, 0, 0, 65, 55, 39, 7, 23, 7, 254, 37, 167, 1, 189, 1, 59, 5, 19, 206, 122, 5, 122, 115, 0, 8, 254, 158, 254, 196, 6, 57, 5, 175, 0, 19, 0, 39, 0, 59, 0, 79, 0, 99, 0, 119, 0, 139, 0, 159, 0, 0, 65, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 19, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 3, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 3, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 19, 51, 52, 54, 51, 50, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 139, 113, 42, 55, 53, 46, 112, 29, 27, 28, 78, 49, 49, 78, 27, 27, 29, 2, 79, 113, 43, 53, 54, 45, 113, 29, 27, 28, 79, 49, 48, 78, 27, 27, 29, 186, 113, 44, 53, 54, 45, 112, 29, 27, 28, 78, 49, 48, 78, 27, 28, 29, 196, 112, 44, 53, 54, 45, 112, 29, 27, 28, 78, 49, 48, 78, 27, 27, 29, 253, 192, 113, 44, 53, 53, 46, 112, 29, 27, 28, 78, 49, 49, 78, 27, 27, 29, 253, 190, 114, 42, 55, 53, 46, 112, 29, 27, 28, 78, 49, 49, 78, 27, 28, 29, 176, 113, 44, 53, 54, 45, 112, 29, 27, 28, 78, 49, 48, 78, 27, 28, 29, 166, 114, 43, 53, 54, 45, 113, 29, 27, 28, 79, 49, 48, 78, 27, 28, 29, 4, 243, 39, 62, 60, 41, 41, 69, 25, 25, 28, 28, 25, 25, 69, 254, 194, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 253, 224, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 253, 208, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 254, 187, 39, 62, 60, 41, 41, 69, 25, 25, 28, 28, 25, 25, 69, 4, 241, 39, 62, 60, 41, 41, 69, 25, 25, 28, 28, 25, 25, 69, 253, 224, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 253, 208, 39, 62, 61, 40, 41, 69, 25, 25, 28, 28, 25, 25, 69, 0, 8, 254, 209, 254, 99, 6, 16, 5, 198, 0, 4, 0, 9, 0, 14, 0, 19, 0, 24, 0, 29, 0, 34, 0, 39, 0, 0, 69, 35, 3, 51, 19, 3, 51, 19, 35, 3, 1, 21, 5, 53, 37, 5, 53, 37, 21, 5, 1, 23, 37, 39, 5, 1, 39, 5, 23, 37, 3, 55, 3, 7, 19, 1, 7, 19, 55, 3, 2, 212, 137, 70, 96, 122, 206, 136, 70, 96, 122, 2, 178, 1, 89, 254, 180, 251, 103, 254, 166, 1, 77, 3, 169, 97, 1, 37, 68, 254, 192, 253, 82, 97, 254, 218, 69, 1, 64, 138, 98, 198, 65, 148, 3, 211, 97, 197, 66, 149, 60, 254, 159, 1, 83, 4, 176, 1, 96, 254, 174, 254, 3, 139, 71, 98, 124, 210, 139, 71, 98, 124, 2, 69, 99, 200, 68, 153, 252, 27, 99, 200, 69, 153, 3, 88, 98, 1, 43, 69, 254, 186, 253, 67, 99, 254, 213, 71, 1, 69, 0, 3, 0, 149, 0, 0, 4, 142, 5, 176, 0, 3, 0, 20, 0, 35, 0, 0, 65, 1, 7, 1, 37, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 17, 33, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 4, 93, 254, 83, 128, 1, 172, 253, 210, 217, 119, 192, 68, 67, 73, 73, 67, 68, 192, 119, 254, 14, 1, 25, 217, 60, 88, 30, 29, 29, 29, 29, 30, 88, 60, 1, 147, 2, 64, 59, 253, 194, 188, 68, 61, 60, 166, 98, 105, 172, 62, 61, 69, 250, 80, 2, 250, 1, 210, 38, 33, 33, 88, 51, 44, 81, 31, 31, 36, 0, 0, 3, 0, 145, 254, 96, 4, 89, 4, 78, 0, 3, 0, 33, 0, 59, 0, 0, 69, 1, 7, 1, 19, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 39, 33, 17, 33, 17, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 66, 254, 97, 108, 1, 157, 133, 55, 54, 54, 158, 103, 52, 89, 37, 28, 50, 21, 10, 254, 255, 1, 22, 22, 50, 29, 35, 84, 48, 102, 158, 54, 53, 55, 254, 234, 24, 26, 26, 83, 59, 37, 59, 24, 24, 37, 13, 14, 39, 25, 23, 57, 34, 59, 83, 27, 26, 25, 8, 1, 195, 81, 254, 61, 2, 108, 21, 123, 203, 73, 72, 79, 22, 21, 15, 42, 26, 106, 250, 38, 1, 254, 24, 39, 14, 18, 19, 84, 74, 73, 202, 139, 21, 67, 119, 45, 45, 52, 15, 14, 15, 42, 26, 1, 196, 28, 42, 14, 12, 13, 50, 43, 44, 119, 0, 0, 1, 0, 152, 0, 0, 4, 103, 7, 31, 0, 7, 0, 0, 65, 17, 33, 17, 33, 17, 33, 17, 4, 103, 254, 233, 253, 72, 1, 25, 4, 204, 2, 83, 254, 145, 250, 80, 4, 204, 0, 1, 0, 149, 0, 0, 4, 95, 5, 117, 0, 7, 0, 0, 65, 17, 33, 17, 33, 17, 33, 17, 4, 95, 254, 235, 253, 75, 1, 21, 3, 88, 2, 29, 254, 197, 251, 198, 3, 88, 0, 1, 0, 141, 254, 178, 4, 174, 5, 176, 0, 33, 0, 0, 65, 53, 33, 17, 33, 17, 51, 50, 22, 7, 20, 6, 7, 6, 6, 7, 6, 6, 35, 21, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 17, 4, 59, 252, 82, 1, 25, 172, 159, 167, 1, 7, 10, 10, 36, 28, 29, 81, 56, 147, 204, 64, 64, 57, 86, 79, 79, 223, 137, 172, 4, 204, 228, 250, 80, 2, 96, 185, 187, 38, 83, 39, 40, 72, 26, 27, 32, 213, 99, 82, 82, 209, 111, 146, 220, 74, 73, 74, 1, 136, 0, 0, 1, 0, 149, 254, 226, 4, 131, 4, 58, 0, 33, 0, 0, 65, 53, 33, 17, 33, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 39, 52, 38, 39, 38, 38, 35, 35, 53, 4, 56, 252, 93, 1, 21, 171, 64, 103, 37, 36, 39, 31, 31, 25, 73, 47, 112, 99, 142, 46, 45, 42, 1, 83, 74, 74, 204, 122, 171, 3, 88, 226, 251, 198, 1, 180, 33, 32, 32, 98, 64, 55, 89, 35, 29, 47, 19, 189, 31, 109, 64, 64, 136, 59, 121, 183, 61, 60, 61, 193, 0, 0, 1, 0, 134, 0, 0, 5, 23, 5, 176, 0, 20, 0, 0, 65, 33, 3, 35, 17, 35, 17, 35, 17, 33, 17, 33, 17, 51, 21, 51, 53, 51, 19, 33, 1, 4, 239, 254, 167, 237, 17, 167, 81, 254, 230, 1, 26, 81, 167, 29, 253, 1, 101, 254, 159, 5, 176, 253, 169, 1, 1, 254, 255, 2, 87, 250, 80, 2, 91, 229, 229, 253, 165, 3, 33, 0, 0, 1, 0, 132, 0, 0, 4, 191, 4, 58, 0, 20, 0, 0, 65, 33, 3, 35, 53, 35, 21, 35, 17, 33, 17, 33, 17, 51, 21, 51, 53, 51, 19, 33, 1, 4, 171, 254, 163, 169, 45, 153, 69, 254, 234, 1, 22, 69, 153, 50, 177, 1, 100, 254, 194, 4, 58, 254, 98, 192, 192, 1, 158, 251, 198, 1, 149, 172, 172, 254, 107, 2, 55, 0, 0, 1, 0, 15, 0, 0, 4, 207, 5, 176, 0, 14, 0, 0, 65, 19, 33, 1, 1, 33, 3, 35, 17, 33, 21, 33, 17, 33, 17, 2, 152, 244, 1, 67, 254, 175, 1, 45, 254, 187, 211, 53, 253, 177, 1, 55, 1, 24, 2, 79, 253, 177, 2, 246, 2, 186, 253, 189, 2, 67, 241, 251, 65, 2, 79, 0, 0, 1, 0, 27, 0, 0, 4, 201, 4, 58, 0, 14, 0, 0, 65, 19, 33, 1, 1, 33, 3, 35, 17, 33, 21, 33, 17, 33, 17, 2, 175, 166, 1, 116, 254, 208, 1, 19, 254, 158, 153, 70, 253, 176, 1, 51, 1, 29, 1, 137, 254, 119, 2, 58, 2, 0, 254, 110, 1, 146, 242, 252, 184, 1, 137, 0, 0, 1, 0, 63, 0, 0, 4, 172, 5, 176, 0, 13, 0, 0, 65, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 53, 33, 17, 1, 76, 254, 243, 1, 13, 1, 7, 1, 13, 1, 76, 253, 167, 3, 94, 2, 82, 250, 80, 2, 102, 253, 154, 4, 191, 241, 253, 174, 0, 0, 1, 0, 86, 0, 0, 4, 168, 4, 58, 0, 13, 0, 0, 65, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 53, 33, 17, 1, 116, 254, 226, 1, 30, 1, 10, 1, 30, 1, 12, 253, 214, 2, 139, 1, 175, 251, 198, 1, 156, 254, 100, 3, 73, 241, 254, 81, 0, 0, 1, 0, 50, 254, 164, 4, 173, 5, 176, 0, 47, 0, 0, 65, 17, 33, 17, 33, 17, 51, 17, 33, 17, 51, 22, 22, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 2, 239, 253, 67, 1, 12, 165, 1, 12, 19, 32, 46, 15, 15, 17, 5, 4, 2, 1, 3, 4, 17, 15, 16, 49, 37, 2, 80, 126, 48, 48, 67, 22, 21, 19, 19, 20, 11, 28, 18, 50, 162, 117, 3, 66, 2, 110, 250, 80, 4, 183, 251, 73, 2, 80, 1, 39, 31, 31, 78, 40, 40, 75, 27, 35, 79, 38, 39, 70, 27, 28, 33, 1, 228, 1, 47, 41, 40, 111, 66, 65, 147, 76, 69, 138, 63, 35, 65, 30, 83, 104, 1, 0, 1, 0, 84, 254, 235, 4, 171, 4, 58, 0, 35, 0, 0, 115, 33, 17, 51, 17, 33, 17, 51, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 35, 17, 33, 84, 1, 11, 143, 1, 12, 1, 42, 55, 16, 16, 11, 12, 15, 16, 54, 42, 117, 76, 118, 40, 40, 40, 60, 55, 56, 160, 101, 1, 253, 90, 3, 73, 252, 183, 1, 176, 4, 45, 34, 35, 84, 43, 41, 82, 36, 36, 57, 16, 196, 18, 99, 66, 65, 149, 67, 103, 175, 65, 65, 76, 3, 1, 152, 0, 2, 0, 88, 255, 235, 4, 174, 5, 197, 0, 77, 0, 103, 0, 0, 69, 53, 34, 38, 39, 54, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 23, 34, 34, 35, 38, 38, 39, 38, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 55, 54, 54, 51, 53, 34, 6, 7, 6, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 22, 22, 1, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 20, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 4, 174, 35, 62, 28, 26, 40, 15, 16, 17, 51, 46, 47, 129, 79, 73, 120, 42, 43, 46, 22, 21, 19, 55, 35, 4, 7, 3, 43, 49, 23, 47, 66, 18, 10, 10, 13, 12, 6, 14, 8, 9, 21, 12, 55, 98, 41, 46, 74, 24, 25, 27, 22, 19, 36, 147, 99, 53, 121, 66, 68, 120, 54, 68, 152, 254, 177, 9, 10, 7, 19, 12, 17, 26, 9, 9, 10, 7, 8, 6, 18, 11, 18, 28, 10, 11, 11, 17, 219, 8, 8, 40, 90, 49, 56, 124, 66, 1, 47, 116, 194, 71, 70, 78, 75, 65, 66, 178, 104, 254, 192, 71, 132, 58, 53, 97, 42, 1, 16, 14, 28, 99, 65, 37, 84, 45, 1, 68, 67, 115, 42, 20, 33, 11, 12, 13, 237, 34, 32, 33, 102, 62, 62, 147, 80, 254, 190, 66, 125, 56, 104, 175, 46, 25, 27, 33, 31, 29, 31, 2, 170, 1, 67, 79, 105, 28, 21, 19, 27, 30, 31, 102, 75, 254, 180, 41, 78, 35, 31, 57, 26, 28, 62, 33, 38, 84, 0, 2, 0, 67, 255, 232, 4, 212, 4, 78, 0, 77, 0, 109, 0, 0, 69, 53, 34, 38, 39, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 34, 34, 35, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 53, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 22, 22, 1, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 4, 212, 43, 79, 36, 27, 45, 16, 23, 23, 21, 20, 22, 66, 42, 38, 92, 52, 48, 86, 36, 41, 68, 22, 18, 20, 14, 15, 13, 38, 26, 2, 5, 2, 59, 94, 33, 35, 37, 17, 16, 16, 48, 30, 64, 113, 46, 50, 79, 25, 20, 22, 36, 34, 35, 98, 59, 62, 150, 85, 74, 133, 59, 72, 171, 254, 109, 6, 5, 6, 22, 13, 10, 25, 14, 14, 24, 10, 13, 20, 7, 6, 6, 14, 14, 13, 38, 24, 25, 38, 13, 11, 11, 24, 165, 8, 7, 29, 65, 36, 47, 108, 58, 143, 62, 115, 49, 56, 89, 30, 28, 30, 25, 24, 28, 82, 53, 44, 104, 57, 148, 49, 92, 42, 38, 71, 32, 2, 49, 41, 43, 118, 69, 95, 52, 85, 31, 32, 37, 4, 232, 34, 31, 34, 98, 59, 48, 111, 60, 93, 78, 144, 61, 61, 100, 35, 36, 40, 26, 24, 26, 27, 2, 36, 152, 26, 48, 20, 25, 42, 12, 10, 11, 11, 11, 13, 43, 27, 24, 54, 29, 145, 38, 69, 31, 28, 48, 20, 26, 60, 32, 29, 64, 0, 0, 1, 0, 1, 254, 161, 4, 240, 5, 176, 0, 15, 0, 0, 83, 17, 33, 17, 33, 19, 35, 17, 33, 17, 33, 17, 51, 53, 33, 21, 233, 2, 240, 1, 7, 16, 152, 254, 233, 254, 190, 221, 253, 37, 4, 191, 251, 65, 254, 161, 2, 85, 4, 186, 251, 72, 3, 199, 241, 241, 0, 1, 0, 33, 254, 191, 4, 191, 4, 58, 0, 15, 0, 0, 83, 17, 33, 17, 33, 19, 35, 17, 33, 17, 33, 17, 51, 53, 33, 21, 221, 2, 195, 1, 12, 19, 148, 254, 225, 254, 239, 172, 253, 122, 3, 73, 252, 183, 254, 191, 2, 47, 3, 76, 252, 182, 2, 89, 241, 241, 0, 2, 0, 133, 0, 0, 4, 71, 5, 176, 0, 3, 0, 35, 0, 0, 65, 17, 35, 17, 1, 33, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 17, 33, 2, 155, 165, 2, 81, 254, 230, 26, 56, 27, 28, 50, 20, 49, 72, 24, 24, 23, 254, 231, 67, 62, 61, 175, 108, 19, 51, 28, 27, 56, 26, 1, 26, 1, 31, 2, 244, 253, 12, 4, 145, 253, 93, 7, 10, 3, 4, 3, 23, 29, 28, 96, 73, 1, 197, 254, 59, 125, 181, 58, 58, 55, 4, 4, 3, 11, 7, 253, 213, 0, 0, 2, 0, 116, 0, 0, 4, 89, 4, 58, 0, 3, 0, 32, 0, 0, 101, 17, 35, 17, 5, 17, 33, 17, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 17, 2, 185, 165, 2, 69, 254, 233, 18, 36, 17, 34, 70, 37, 59, 86, 28, 28, 27, 254, 234, 70, 66, 65, 188, 117, 51, 109, 52, 165, 2, 128, 253, 128, 165, 4, 58, 254, 4, 4, 6, 3, 4, 5, 19, 22, 22, 73, 54, 1, 84, 254, 172, 108, 156, 50, 51, 49, 11, 10, 254, 163, 0, 1, 0, 119, 0, 0, 4, 94, 5, 176, 0, 25, 0, 0, 115, 33, 17, 54, 54, 51, 50, 22, 23, 22, 22, 21, 19, 33, 19, 38, 38, 39, 38, 38, 35, 34, 6, 7, 17, 33, 119, 1, 35, 52, 103, 56, 54, 74, 23, 22, 20, 6, 1, 36, 6, 1, 72, 65, 66, 182, 111, 57, 103, 51, 254, 221, 2, 146, 11, 16, 32, 30, 30, 88, 58, 254, 65, 1, 191, 118, 182, 62, 61, 63, 13, 11, 2, 35, 0, 2, 255, 213, 255, 233, 4, 140, 5, 195, 0, 57, 0, 78, 0, 0, 67, 6, 22, 23, 22, 22, 23, 21, 22, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 39, 53, 33, 55, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 7, 38, 38, 39, 38, 38, 55, 5, 53, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 34, 9, 28, 34, 33, 100, 63, 1, 71, 68, 67, 196, 128, 107, 186, 61, 49, 23, 59, 33, 33, 72, 36, 79, 106, 32, 32, 28, 1, 2, 133, 2, 20, 22, 22, 71, 51, 52, 138, 89, 60, 108, 47, 69, 109, 34, 23, 28, 4, 1, 14, 19, 6, 5, 5, 1, 1, 93, 2, 7, 7, 11, 44, 32, 17, 39, 23, 34, 52, 18, 29, 28, 5, 3, 2, 4, 58, 92, 144, 53, 53, 68, 16, 57, 131, 226, 84, 84, 97, 44, 32, 248, 11, 20, 7, 8, 9, 1, 59, 49, 49, 127, 68, 24, 196, 82, 161, 73, 72, 125, 46, 45, 52, 31, 28, 42, 135, 84, 55, 128, 68, 10, 13, 36, 23, 23, 58, 35, 210, 10, 37, 60, 31, 52, 90, 25, 13, 14, 21, 18, 27, 84, 44, 23, 46, 22, 47, 0, 2, 0, 21, 255, 236, 4, 145, 4, 78, 0, 44, 0, 58, 0, 0, 69, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 39, 39, 33, 55, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 38, 38, 39, 35, 6, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 19, 50, 22, 23, 22, 22, 23, 21, 33, 54, 54, 55, 54, 54, 2, 241, 122, 198, 69, 120, 47, 100, 89, 45, 71, 26, 25, 32, 7, 1, 2, 77, 1, 1, 55, 54, 54, 162, 106, 91, 151, 57, 57, 76, 16, 38, 38, 5, 185, 2, 34, 33, 33, 97, 61, 1, 6, 78, 61, 62, 168, 80, 36, 53, 18, 17, 17, 2, 254, 216, 6, 22, 18, 18, 53, 20, 93, 85, 156, 41, 54, 35, 31, 29, 80, 46, 6, 134, 108, 190, 71, 71, 82, 66, 57, 58, 158, 91, 26, 97, 69, 77, 130, 51, 51, 70, 17, 12, 96, 181, 62, 65, 72, 3, 113, 29, 25, 26, 69, 40, 26, 41, 78, 30, 30, 36, 0, 0, 1, 0, 164, 254, 174, 4, 196, 5, 176, 0, 38, 0, 0, 65, 1, 33, 1, 35, 17, 33, 17, 33, 17, 51, 50, 22, 23, 22, 22, 7, 20, 6, 7, 6, 6, 7, 6, 6, 35, 21, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 3, 40, 1, 112, 254, 166, 254, 243, 115, 254, 230, 1, 26, 211, 61, 97, 35, 44, 46, 1, 7, 10, 10, 35, 28, 29, 81, 56, 148, 204, 64, 64, 57, 58, 53, 54, 152, 92, 3, 51, 2, 125, 253, 175, 2, 81, 250, 80, 2, 92, 36, 35, 45, 150, 104, 38, 82, 39, 40, 72, 27, 27, 32, 215, 100, 83, 82, 209, 110, 123, 195, 72, 71, 91, 20, 0, 1, 0, 152, 254, 216, 4, 121, 4, 58, 0, 34, 0, 0, 65, 1, 33, 3, 35, 17, 33, 17, 33, 17, 51, 22, 22, 23, 22, 22, 21, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 39, 52, 38, 39, 38, 38, 3, 43, 1, 78, 254, 162, 248, 117, 254, 234, 1, 22, 179, 57, 93, 32, 32, 35, 1, 28, 26, 24, 67, 42, 112, 93, 135, 43, 43, 41, 1, 46, 42, 43, 120, 2, 90, 1, 224, 254, 98, 1, 158, 251, 198, 1, 149, 3, 33, 30, 31, 90, 60, 52, 84, 33, 29, 47, 20, 189, 31, 106, 63, 62, 133, 59, 90, 144, 56, 55, 77, 0, 1, 0, 141, 254, 75, 4, 56, 5, 176, 0, 29, 0, 0, 65, 33, 17, 33, 17, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 33, 17, 33, 1, 166, 254, 231, 1, 25, 1, 120, 16, 16, 15, 46, 29, 25, 52, 22, 14, 38, 65, 38, 87, 140, 49, 48, 52, 254, 230, 254, 136, 5, 176, 250, 80, 2, 92, 253, 125, 42, 64, 21, 21, 22, 5, 6, 222, 10, 7, 52, 51, 50, 149, 96, 5, 215, 253, 142, 0, 1, 0, 143, 254, 75, 4, 49, 4, 58, 0, 29, 0, 0, 65, 33, 17, 33, 17, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 33, 17, 33, 1, 165, 254, 234, 1, 22, 1, 118, 16, 16, 15, 46, 29, 25, 52, 21, 15, 38, 64, 38, 87, 139, 48, 48, 51, 254, 234, 254, 138, 4, 58, 251, 198, 1, 164, 254, 52, 42, 65, 22, 21, 22, 7, 6, 221, 10, 7, 52, 50, 50, 149, 96, 4, 98, 254, 74, 0, 2, 0, 78, 255, 234, 4, 116, 5, 197, 0, 52, 0, 72, 0, 0, 65, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 21, 21, 33, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 55, 54, 54, 53, 17, 52, 38, 39, 38, 38, 39, 38, 38, 3, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 33, 6, 6, 7, 6, 6, 7, 6, 6, 2, 51, 77, 124, 46, 47, 62, 14, 49, 24, 65, 41, 40, 95, 56, 46, 76, 31, 46, 60, 15, 12, 10, 252, 243, 31, 30, 30, 86, 55, 58, 145, 87, 74, 137, 58, 62, 100, 35, 36, 38, 24, 24, 37, 126, 89, 58, 139, 43, 39, 64, 25, 37, 49, 12, 8, 8, 1, 245, 1, 13, 12, 16, 47, 33, 28, 69, 5, 197, 19, 13, 14, 28, 8, 227, 10, 24, 10, 9, 13, 18, 17, 25, 83, 53, 37, 84, 44, 69, 204, 97, 169, 69, 67, 104, 38, 37, 40, 1, 39, 37, 37, 113, 68, 69, 164, 92, 1, 20, 76, 138, 61, 89, 142, 41, 28, 29, 251, 23, 15, 14, 20, 67, 43, 27, 60, 32, 91, 47, 89, 38, 47, 75, 27, 22, 24, 0, 0, 1, 0, 124, 255, 235, 4, 131, 5, 176, 0, 45, 0, 0, 65, 1, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 35, 1, 39, 33, 21, 3, 30, 254, 166, 137, 74, 112, 36, 31, 32, 33, 32, 32, 92, 58, 51, 82, 29, 29, 31, 254, 231, 88, 71, 71, 180, 93, 115, 193, 71, 70, 79, 58, 56, 50, 144, 91, 3, 1, 113, 1, 252, 87, 4, 204, 254, 150, 184, 35, 37, 32, 99, 68, 44, 75, 28, 28, 31, 31, 27, 27, 72, 42, 112, 161, 51, 52, 49, 57, 55, 55, 160, 102, 103, 162, 58, 52, 67, 14, 1, 152, 184, 228, 0, 0, 1, 0, 114, 254, 117, 4, 119, 4, 58, 0, 45, 0, 0, 65, 1, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 35, 1, 39, 33, 21, 3, 13, 254, 172, 138, 70, 107, 36, 36, 37, 34, 31, 32, 93, 58, 51, 83, 29, 29, 31, 254, 232, 88, 71, 71, 180, 93, 114, 193, 70, 70, 79, 62, 60, 49, 138, 86, 2, 1, 107, 1, 252, 84, 3, 88, 254, 146, 180, 31, 33, 33, 104, 73, 44, 75, 27, 28, 32, 31, 27, 27, 73, 41, 111, 161, 51, 52, 49, 57, 55, 55, 159, 102, 106, 167, 58, 49, 63, 14, 1, 153, 183, 226, 0, 255, 255, 0, 40, 254, 75, 4, 146, 5, 176, 4, 38, 1, 123, 87, 0, 0, 39, 2, 106, 254, 251, 0, 23, 0, 6, 2, 111, 189, 0, 255, 255, 0, 73, 254, 70, 4, 125, 4, 58, 4, 38, 1, 181, 75, 0, 0, 39, 2, 106, 255, 28, 255, 59, 0, 7, 2, 111, 255, 126, 255, 251, 0, 2, 0, 77, 0, 0, 4, 78, 5, 176, 0, 16, 0, 31, 0, 0, 65, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 33, 17, 33, 17, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 3, 53, 204, 126, 200, 70, 70, 74, 74, 70, 70, 200, 126, 1, 229, 254, 231, 204, 66, 97, 32, 32, 31, 31, 32, 32, 97, 66, 204, 3, 176, 70, 62, 62, 173, 102, 104, 174, 63, 63, 71, 5, 176, 251, 50, 42, 35, 34, 91, 49, 47, 87, 34, 34, 40, 0, 0, 2, 0, 92, 0, 0, 4, 242, 5, 176, 0, 36, 0, 51, 0, 0, 97, 33, 50, 54, 55, 54, 54, 55, 54, 2, 39, 33, 22, 18, 7, 6, 6, 7, 6, 6, 7, 35, 17, 33, 17, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 55, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 2, 19, 1, 59, 103, 155, 52, 52, 54, 2, 2, 43, 26, 254, 239, 30, 32, 2, 1, 14, 16, 16, 52, 39, 31, 254, 231, 3, 102, 162, 57, 57, 61, 61, 57, 57, 162, 105, 3, 40, 60, 19, 20, 20, 20, 20, 19, 60, 40, 3, 80, 73, 72, 203, 123, 95, 1, 11, 91, 91, 254, 239, 89, 59, 116, 46, 46, 57, 1, 4, 206, 254, 0, 70, 62, 62, 173, 102, 104, 174, 63, 63, 71, 226, 42, 35, 34, 91, 49, 47, 87, 34, 34, 40, 0, 2, 0, 91, 255, 233, 4, 163, 6, 24, 0, 79, 0, 114, 0, 0, 83, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 33, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 55, 17, 33, 17, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 37, 17, 22, 22, 23, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 91, 9, 8, 17, 68, 47, 32, 75, 44, 42, 71, 29, 13, 23, 10, 10, 22, 12, 41, 113, 70, 67, 121, 47, 28, 43, 14, 8, 10, 1, 1, 11, 9, 10, 25, 13, 254, 240, 15, 24, 8, 7, 7, 1, 1, 4, 4, 3, 11, 7, 6, 15, 9, 8, 15, 5, 5, 7, 2, 2, 2, 1, 254, 233, 8, 16, 9, 21, 49, 27, 43, 74, 31, 53, 72, 15, 7, 7, 1, 176, 1, 5, 4, 5, 12, 7, 10, 23, 13, 13, 22, 9, 18, 22, 4, 3, 3, 2, 3, 6, 18, 17, 10, 25, 15, 10, 19, 9, 5, 10, 2, 80, 141, 48, 89, 40, 80, 126, 38, 25, 26, 33, 30, 14, 32, 18, 16, 27, 12, 39, 35, 2, 68, 68, 41, 110, 67, 43, 99, 54, 51, 103, 51, 50, 99, 49, 51, 104, 51, 49, 99, 49, 48, 83, 35, 40, 61, 20, 17, 19, 1, 11, 11, 8, 23, 13, 13, 30, 17, 4, 205, 253, 254, 8, 13, 6, 14, 15, 27, 24, 43, 147, 97, 39, 87, 214, 253, 247, 27, 47, 21, 6, 9, 4, 6, 6, 9, 8, 17, 62, 42, 24, 54, 30, 141, 29, 57, 25, 48, 74, 23, 13, 15, 5, 4, 3, 7, 0, 1, 0, 63, 255, 233, 4, 161, 5, 176, 0, 83, 0, 0, 65, 21, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 33, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 53, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 21, 51, 50, 22, 23, 22, 22, 1, 191, 3, 47, 41, 40, 115, 72, 82, 150, 58, 32, 51, 17, 12, 15, 1, 2, 43, 26, 254, 238, 14, 23, 8, 8, 9, 1, 1, 7, 6, 7, 18, 12, 15, 37, 22, 12, 19, 6, 7, 6, 24, 27, 27, 86, 62, 38, 64, 26, 49, 53, 63, 59, 59, 173, 109, 206, 206, 46, 69, 22, 23, 22, 20, 20, 24, 81, 57, 114, 171, 31, 51, 19, 19, 21, 1, 126, 106, 80, 114, 36, 36, 33, 2, 67, 69, 38, 99, 60, 47, 109, 61, 103, 202, 98, 48, 97, 48, 52, 106, 52, 42, 75, 32, 37, 61, 22, 25, 27, 1, 10, 9, 10, 26, 14, 108, 57, 102, 42, 41, 62, 18, 17, 42, 25, 47, 126, 77, 102, 155, 53, 52, 54, 230, 25, 23, 24, 69, 43, 48, 74, 27, 32, 32, 229, 31, 28, 29, 81, 0, 1, 0, 75, 255, 227, 4, 159, 4, 58, 0, 80, 0, 0, 65, 52, 38, 39, 38, 38, 35, 35, 23, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 23, 51, 50, 22, 23, 22, 22, 21, 21, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 33, 22, 22, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 55, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 2, 236, 59, 56, 57, 166, 107, 228, 6, 222, 42, 62, 20, 22, 20, 15, 16, 19, 67, 49, 143, 2, 210, 31, 48, 15, 14, 15, 5, 44, 41, 44, 136, 92, 65, 116, 45, 24, 39, 13, 10, 12, 1, 1, 11, 10, 10, 25, 13, 254, 241, 30, 32, 2, 1, 8, 7, 7, 22, 14, 16, 23, 8, 13, 11, 1, 20, 22, 23, 73, 54, 30, 51, 19, 33, 33, 2, 247, 76, 121, 41, 41, 44, 226, 18, 16, 18, 50, 30, 24, 40, 15, 18, 20, 212, 15, 15, 13, 39, 24, 75, 62, 91, 29, 32, 29, 2, 55, 56, 31, 78, 48, 38, 90, 50, 40, 81, 40, 40, 79, 39, 78, 163, 78, 57, 92, 33, 37, 40, 1, 8, 8, 12, 42, 25, 48, 40, 72, 30, 29, 45, 13, 14, 32, 19, 31, 81, 0, 1, 0, 168, 254, 110, 4, 197, 5, 176, 0, 69, 0, 0, 83, 33, 50, 22, 23, 22, 22, 21, 21, 20, 22, 23, 22, 22, 23, 51, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 55, 35, 52, 52, 53, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 23, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 236, 1, 3, 57, 88, 29, 28, 29, 3, 6, 6, 25, 23, 171, 16, 10, 12, 33, 19, 147, 43, 75, 27, 27, 31, 1, 217, 25, 28, 28, 92, 67, 47, 76, 28, 41, 41, 72, 67, 68, 194, 123, 254, 207, 5, 1, 44, 63, 93, 30, 30, 30, 25, 26, 30, 101, 71, 232, 2, 71, 32, 31, 29, 85, 53, 104, 17, 67, 38, 38, 70, 19, 22, 40, 78, 35, 41, 74, 36, 76, 39, 100, 56, 56, 120, 57, 221, 11, 14, 14, 69, 60, 110, 45, 44, 67, 20, 21, 51, 30, 44, 112, 67, 102, 160, 55, 55, 58, 224, 32, 28, 29, 81, 48, 47, 73, 26, 30, 31, 0, 0, 1, 0, 192, 254, 96, 4, 149, 4, 58, 0, 73, 0, 0, 83, 33, 50, 22, 23, 22, 22, 21, 21, 20, 22, 23, 22, 22, 23, 51, 21, 20, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 53, 55, 34, 34, 35, 52, 52, 53, 38, 38, 39, 38, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 23, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 248, 1, 1, 48, 72, 23, 21, 22, 1, 3, 3, 12, 12, 190, 14, 12, 12, 33, 19, 147, 43, 75, 27, 27, 31, 1, 67, 127, 10, 5, 13, 20, 11, 27, 18, 16, 41, 24, 30, 50, 19, 32, 32, 65, 60, 60, 172, 107, 254, 211, 6, 1, 39, 46, 70, 23, 23, 23, 19, 19, 23, 73, 51, 246, 1, 135, 22, 21, 20, 57, 37, 75, 9, 45, 24, 25, 46, 10, 24, 30, 94, 41, 41, 74, 36, 76, 39, 100, 56, 56, 120, 57, 221, 3, 11, 4, 52, 56, 33, 17, 30, 13, 13, 22, 8, 16, 36, 21, 34, 84, 51, 80, 128, 45, 44, 48, 222, 22, 19, 20, 52, 30, 28, 45, 17, 19, 21, 0, 0, 1, 0, 15, 255, 233, 4, 179, 5, 176, 0, 78, 0, 0, 65, 17, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 35, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 35, 21, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 17, 2, 46, 1, 7, 5, 11, 37, 26, 39, 111, 69, 66, 121, 47, 29, 45, 13, 8, 8, 1, 1, 10, 8, 6, 16, 8, 243, 20, 23, 2, 1, 4, 2, 3, 8, 6, 9, 24, 16, 10, 15, 5, 3, 4, 1, 2, 1, 253, 105, 2, 2, 2, 6, 3, 4, 8, 5, 17, 54, 37, 21, 33, 93, 137, 49, 29, 47, 15, 10, 15, 5, 4, 4, 4, 202, 252, 91, 29, 53, 24, 44, 68, 25, 38, 35, 2, 67, 69, 44, 116, 72, 40, 92, 50, 58, 115, 56, 43, 88, 43, 100, 203, 100, 33, 60, 26, 36, 62, 24, 38, 42, 1, 10, 9, 5, 13, 8, 9, 20, 12, 4, 139, 253, 80, 52, 93, 41, 36, 65, 29, 27, 49, 21, 66, 61, 228, 64, 65, 41, 109, 68, 44, 100, 55, 50, 112, 60, 1, 202, 0, 1, 0, 40, 255, 233, 4, 176, 4, 58, 0, 75, 0, 0, 65, 33, 17, 20, 6, 7, 6, 6, 7, 6, 6, 35, 7, 7, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 53, 51, 17, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 33, 22, 22, 23, 22, 22, 7, 20, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 53, 3, 41, 253, 115, 2, 1, 3, 8, 6, 11, 35, 25, 21, 4, 51, 65, 103, 39, 17, 30, 13, 18, 28, 10, 10, 11, 95, 1, 8, 5, 11, 39, 27, 41, 114, 72, 69, 126, 48, 30, 46, 14, 8, 8, 1, 2, 42, 27, 254, 240, 14, 22, 7, 9, 9, 1, 3, 2, 3, 9, 6, 9, 25, 14, 8, 13, 5, 4, 5, 2, 1, 1, 4, 58, 254, 52, 44, 77, 33, 42, 68, 26, 47, 43, 1, 241, 38, 37, 17, 41, 24, 36, 89, 52, 60, 145, 83, 231, 253, 226, 30, 56, 24, 47, 73, 26, 41, 37, 2, 63, 63, 40, 108, 67, 37, 85, 46, 97, 191, 93, 43, 87, 43, 52, 104, 52, 28, 52, 23, 34, 56, 21, 32, 36, 1, 11, 9, 8, 20, 12, 10, 24, 12, 0, 0, 1, 0, 72, 255, 233, 4, 174, 5, 176, 0, 56, 0, 0, 65, 33, 17, 35, 17, 33, 17, 33, 17, 51, 17, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 33, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 52, 53, 3, 49, 254, 230, 181, 254, 230, 1, 26, 181, 2, 8, 7, 11, 36, 25, 39, 109, 69, 70, 128, 49, 26, 43, 14, 12, 13, 1, 1, 12, 11, 9, 24, 12, 254, 237, 30, 32, 1, 1, 3, 2, 3, 10, 6, 9, 24, 15, 5, 8, 3, 3, 4, 1, 2, 5, 176, 253, 142, 2, 114, 250, 80, 2, 92, 254, 241, 36, 64, 28, 46, 73, 27, 43, 39, 2, 68, 68, 37, 97, 59, 47, 112, 62, 55, 109, 53, 47, 93, 46, 100, 203, 100, 31, 56, 25, 40, 67, 25, 36, 39, 1, 7, 6, 5, 14, 8, 8, 18, 9, 0, 0, 1, 0, 68, 255, 234, 4, 138, 4, 58, 0, 53, 0, 0, 65, 21, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 33, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 55, 17, 33, 17, 35, 17, 33, 17, 33, 17, 1, 236, 3, 24, 21, 21, 57, 37, 36, 89, 50, 65, 118, 45, 23, 36, 14, 13, 15, 1, 2, 31, 19, 254, 242, 20, 21, 1, 1, 4, 4, 3, 10, 6, 5, 12, 7, 13, 20, 8, 4, 6, 3, 3, 4, 1, 254, 234, 145, 254, 233, 1, 23, 1, 173, 118, 60, 96, 37, 37, 53, 18, 18, 14, 1, 63, 63, 32, 79, 48, 47, 113, 64, 97, 191, 93, 94, 192, 95, 47, 80, 32, 32, 48, 16, 13, 14, 1, 12, 11, 6, 14, 7, 12, 29, 15, 3, 3, 254, 85, 1, 171, 251, 198, 1, 173, 0, 1, 0, 99, 255, 235, 4, 163, 5, 197, 0, 60, 0, 0, 69, 50, 54, 55, 54, 54, 55, 54, 38, 39, 33, 22, 22, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 53, 17, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 17, 20, 22, 23, 22, 22, 23, 22, 22, 2, 148, 104, 189, 72, 72, 86, 2, 2, 39, 20, 254, 238, 23, 29, 2, 1, 32, 29, 30, 92, 60, 66, 103, 36, 36, 38, 18, 17, 21, 67, 42, 25, 57, 32, 88, 143, 65, 63, 67, 176, 116, 69, 127, 55, 82, 127, 41, 29, 31, 35, 34, 32, 94, 60, 64, 154, 21, 56, 57, 56, 173, 117, 88, 174, 86, 86, 176, 86, 52, 85, 29, 31, 33, 1, 61, 53, 53, 142, 81, 1, 8, 54, 101, 43, 55, 81, 24, 13, 15, 35, 33, 209, 44, 45, 30, 27, 43, 136, 86, 64, 150, 82, 254, 250, 87, 159, 67, 68, 109, 38, 43, 47, 0, 1, 0, 133, 255, 235, 4, 137, 4, 78, 0, 54, 0, 0, 101, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 52, 38, 39, 33, 22, 22, 21, 6, 6, 7, 6, 6, 2, 197, 80, 112, 36, 36, 33, 31, 34, 33, 105, 73, 82, 141, 54, 46, 31, 82, 52, 34, 80, 44, 133, 207, 70, 71, 74, 76, 74, 73, 214, 139, 96, 163, 61, 60, 70, 2, 16, 11, 254, 241, 14, 5, 1, 17, 20, 20, 66, 205, 56, 45, 45, 112, 57, 42, 55, 112, 45, 44, 56, 30, 28, 220, 19, 27, 9, 5, 6, 88, 74, 74, 196, 108, 42, 108, 196, 74, 75, 88, 45, 46, 45, 138, 93, 46, 98, 47, 47, 98, 46, 33, 51, 18, 18, 20, 0, 0, 1, 0, 68, 255, 233, 4, 168, 5, 176, 0, 49, 0, 0, 65, 17, 22, 22, 23, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 33, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 39, 38, 38, 53, 17, 33, 53, 33, 21, 1, 130, 2, 12, 10, 14, 44, 29, 49, 138, 87, 82, 151, 58, 29, 47, 16, 16, 19, 1, 2, 42, 27, 254, 238, 29, 33, 2, 1, 6, 6, 7, 22, 15, 16, 40, 25, 16, 29, 12, 10, 16, 6, 7, 8, 1, 77, 252, 92, 4, 202, 252, 171, 44, 78, 33, 47, 74, 28, 48, 44, 2, 68, 68, 34, 87, 52, 51, 121, 69, 103, 202, 98, 100, 203, 100, 41, 74, 32, 39, 64, 22, 24, 25, 1, 11, 10, 9, 25, 15, 19, 49, 28, 3, 85, 230, 230, 0, 0, 1, 0, 66, 255, 233, 4, 134, 4, 58, 0, 40, 0, 0, 65, 17, 22, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 33, 22, 22, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 38, 38, 53, 17, 33, 53, 33, 21, 1, 93, 5, 58, 51, 51, 143, 89, 81, 148, 56, 56, 68, 2, 1, 11, 10, 10, 25, 13, 254, 242, 30, 32, 2, 1, 18, 15, 17, 49, 33, 28, 45, 15, 15, 16, 1, 90, 252, 117, 3, 88, 254, 27, 105, 150, 47, 48, 44, 2, 55, 56, 55, 167, 113, 36, 74, 37, 37, 73, 35, 71, 150, 71, 50, 79, 28, 30, 32, 1, 25, 22, 22, 61, 36, 1, 229, 226, 226, 0, 1, 0, 66, 255, 235, 4, 102, 5, 197, 0, 76, 0, 0, 83, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 33, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 51, 53, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 66, 83, 74, 74, 204, 121, 97, 191, 72, 65, 79, 254, 231, 33, 29, 29, 83, 49, 66, 102, 35, 35, 37, 24, 24, 32, 106, 72, 197, 197, 63, 90, 28, 29, 26, 30, 31, 31, 95, 66, 43, 74, 27, 27, 31, 1, 26, 78, 66, 66, 176, 98, 121, 197, 70, 70, 76, 31, 29, 29, 84, 53, 50, 81, 30, 42, 45, 1, 152, 102, 160, 55, 55, 57, 55, 58, 53, 154, 105, 42, 72, 27, 27, 31, 31, 28, 28, 75, 44, 50, 76, 27, 35, 33, 220, 29, 27, 27, 75, 46, 39, 71, 26, 26, 31, 26, 24, 24, 68, 42, 96, 152, 54, 53, 57, 54, 52, 53, 155, 102, 50, 92, 40, 41, 66, 24, 17, 50, 32, 45, 122, 255, 255, 0, 158, 254, 34, 4, 46, 0, 0, 4, 39, 0, 102, 0, 10, 254, 251, 0, 6, 0, 102, 10, 0, 0, 1, 1, 195, 3, 228, 2, 249, 6, 24, 0, 12, 0, 0, 65, 53, 51, 21, 20, 22, 23, 7, 38, 38, 39, 38, 38, 1, 195, 223, 49, 38, 127, 39, 66, 25, 25, 28, 5, 107, 173, 173, 97, 150, 65, 79, 35, 93, 52, 51, 109, 0, 255, 255, 0, 239, 255, 236, 4, 70, 1, 89, 4, 39, 0, 96, 255, 73, 0, 0, 0, 7, 0, 96, 1, 30, 0, 0, 0, 2, 1, 13, 2, 48, 4, 26, 5, 197, 0, 10, 0, 14, 0, 0, 65, 17, 35, 1, 23, 33, 21, 51, 53, 51, 53, 33, 19, 55, 17, 3, 134, 180, 254, 59, 4, 1, 198, 175, 148, 253, 180, 247, 18, 3, 108, 2, 89, 253, 133, 99, 183, 183, 133, 1, 87, 36, 254, 133, 0, 1, 1, 43, 2, 141, 3, 211, 5, 186, 0, 31, 0, 0, 65, 35, 17, 51, 17, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 17, 51, 17, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 1, 207, 164, 209, 9, 27, 18, 16, 40, 24, 31, 48, 17, 16, 17, 208, 36, 34, 34, 97, 61, 41, 71, 30, 24, 40, 16, 5, 173, 252, 224, 2, 39, 20, 32, 10, 10, 10, 20, 22, 22, 73, 52, 254, 68, 1, 250, 81, 116, 38, 37, 35, 22, 21, 17, 47, 28, 0, 0, 1, 0, 121, 255, 236, 4, 90, 5, 196, 0, 55, 0, 0, 65, 53, 33, 53, 33, 53, 33, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 35, 21, 51, 21, 35, 21, 51, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 3, 148, 254, 169, 1, 87, 254, 171, 36, 46, 36, 122, 74, 50, 100, 43, 32, 59, 117, 61, 123, 208, 76, 75, 101, 173, 171, 171, 171, 93, 74, 75, 205, 122, 66, 128, 59, 32, 45, 99, 53, 69, 112, 40, 40, 51, 2, 8, 148, 126, 147, 1, 37, 134, 52, 41, 43, 18, 14, 228, 14, 17, 68, 67, 66, 218, 111, 5, 147, 126, 148, 4, 120, 215, 65, 68, 68, 16, 14, 227, 17, 15, 33, 37, 36, 131, 75, 3, 0, 4, 0, 53, 255, 236, 4, 158, 5, 197, 0, 51, 0, 77, 0, 103, 0, 107, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 51, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 19, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 5, 1, 39, 1, 2, 90, 188, 10, 10, 11, 32, 22, 23, 33, 11, 11, 11, 11, 11, 11, 32, 22, 22, 33, 11, 10, 11, 188, 35, 34, 35, 103, 68, 66, 103, 34, 35, 36, 36, 35, 35, 103, 67, 67, 102, 35, 34, 35, 32, 36, 35, 34, 103, 67, 67, 103, 34, 34, 35, 35, 34, 35, 103, 68, 67, 102, 34, 35, 35, 186, 11, 11, 11, 32, 22, 22, 34, 11, 11, 11, 8, 9, 10, 34, 26, 20, 32, 12, 12, 13, 254, 136, 1, 255, 131, 254, 1, 4, 40, 18, 36, 14, 15, 19, 23, 19, 19, 49, 27, 77, 27, 51, 19, 19, 23, 18, 15, 15, 37, 19, 53, 97, 37, 36, 43, 48, 41, 41, 109, 62, 77, 61, 109, 40, 41, 48, 43, 37, 36, 95, 253, 114, 77, 62, 109, 40, 41, 48, 48, 41, 40, 109, 62, 77, 61, 110, 41, 40, 48, 48, 40, 41, 110, 138, 77, 27, 50, 19, 19, 23, 23, 19, 19, 50, 27, 77, 27, 50, 19, 19, 23, 23, 19, 19, 50, 26, 3, 170, 67, 252, 86, 0, 0, 2, 0, 160, 255, 235, 4, 40, 5, 145, 0, 44, 0, 64, 0, 0, 69, 17, 34, 38, 39, 38, 38, 53, 53, 54, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 17, 6, 6, 35, 21, 50, 54, 55, 21, 20, 22, 23, 22, 22, 3, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 3, 102, 66, 89, 27, 27, 23, 103, 159, 54, 54, 56, 49, 44, 45, 122, 72, 46, 83, 36, 33, 59, 24, 50, 54, 43, 93, 51, 49, 93, 45, 64, 65, 64, 197, 99, 18, 18, 12, 33, 20, 15, 26, 9, 10, 12, 24, 26, 21, 61, 21, 1, 3, 33, 32, 31, 91, 58, 47, 48, 127, 69, 69, 138, 59, 42, 80, 127, 45, 44, 47, 16, 16, 15, 43, 27, 58, 166, 105, 254, 163, 7, 6, 187, 7, 7, 13, 102, 167, 59, 60, 64, 2, 241, 1, 32, 51, 72, 20, 14, 14, 14, 14, 14, 41, 26, 44, 48, 91, 42, 34, 64, 0, 0, 4, 0, 119, 0, 0, 4, 120, 5, 192, 0, 9, 0, 35, 0, 61, 0, 65, 0, 0, 97, 17, 35, 17, 3, 35, 17, 51, 17, 19, 1, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 19, 53, 33, 21, 2, 236, 190, 249, 190, 190, 249, 1, 15, 25, 22, 21, 57, 33, 37, 58, 20, 20, 22, 22, 20, 20, 59, 37, 36, 59, 20, 20, 22, 106, 2, 3, 5, 22, 19, 14, 18, 6, 8, 6, 5, 7, 6, 19, 14, 14, 19, 6, 7, 6, 207, 254, 209, 5, 176, 252, 149, 3, 107, 250, 80, 3, 111, 252, 145, 5, 8, 214, 45, 70, 23, 22, 23, 27, 25, 24, 67, 40, 214, 40, 68, 25, 24, 27, 27, 24, 25, 68, 244, 194, 16, 28, 11, 18, 20, 9, 9, 11, 39, 25, 194, 25, 38, 11, 10, 9, 9, 9, 12, 38, 254, 187, 98, 98, 0, 2, 0, 148, 255, 236, 4, 143, 4, 78, 0, 33, 0, 42, 0, 0, 101, 39, 6, 6, 35, 34, 38, 39, 17, 33, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 1, 50, 22, 23, 17, 33, 17, 54, 54, 4, 18, 2, 89, 185, 94, 78, 140, 55, 3, 0, 78, 67, 67, 180, 103, 66, 128, 58, 59, 99, 36, 37, 41, 90, 72, 71, 186, 105, 99, 186, 254, 227, 77, 137, 53, 253, 228, 57, 141, 94, 104, 63, 59, 59, 51, 1, 72, 47, 117, 198, 72, 72, 82, 40, 37, 37, 102, 62, 63, 143, 77, 120, 211, 75, 71, 84, 61, 3, 199, 61, 52, 254, 226, 1, 21, 57, 65, 0, 0, 5, 0, 97, 255, 246, 4, 227, 5, 171, 0, 6, 0, 54, 0, 78, 0, 102, 0, 106, 0, 0, 65, 17, 35, 5, 21, 55, 17, 5, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 1, 192, 17, 254, 178, 172, 3, 198, 38, 35, 35, 96, 58, 56, 96, 34, 35, 39, 23, 20, 11, 31, 17, 20, 34, 14, 24, 26, 42, 37, 37, 103, 59, 60, 101, 37, 37, 41, 26, 24, 13, 34, 20, 17, 28, 10, 23, 23, 164, 12, 12, 12, 37, 23, 26, 40, 13, 9, 10, 9, 9, 13, 40, 25, 26, 39, 14, 9, 10, 17, 11, 13, 10, 27, 18, 20, 30, 10, 10, 11, 8, 8, 10, 32, 21, 23, 32, 10, 8, 8, 253, 163, 1, 255, 131, 254, 1, 2, 232, 2, 195, 108, 140, 39, 254, 14, 226, 49, 76, 26, 25, 26, 26, 25, 26, 76, 49, 33, 55, 22, 13, 21, 9, 9, 23, 14, 24, 62, 38, 51, 77, 26, 26, 25, 25, 26, 26, 77, 51, 38, 63, 24, 13, 23, 9, 8, 19, 12, 22, 57, 254, 242, 18, 28, 10, 11, 12, 15, 13, 10, 25, 16, 16, 25, 9, 12, 14, 13, 12, 9, 25, 1, 20, 17, 29, 9, 8, 8, 10, 10, 9, 26, 16, 14, 25, 8, 10, 12, 12, 9, 9, 25, 254, 219, 3, 170, 67, 252, 86, 0, 5, 0, 28, 255, 246, 4, 224, 5, 186, 0, 76, 0, 124, 0, 148, 0, 172, 0, 176, 0, 0, 83, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 51, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 1, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 228, 79, 34, 51, 14, 8, 9, 10, 12, 13, 39, 29, 27, 42, 14, 13, 14, 182, 51, 40, 40, 100, 50, 63, 108, 41, 39, 45, 24, 23, 17, 44, 27, 23, 37, 16, 21, 25, 42, 37, 37, 104, 63, 54, 97, 37, 37, 44, 181, 12, 12, 13, 36, 20, 27, 37, 12, 11, 11, 13, 13, 13, 40, 26, 3, 157, 38, 35, 35, 96, 58, 56, 96, 34, 35, 39, 23, 20, 11, 31, 17, 20, 34, 14, 24, 26, 42, 37, 37, 103, 59, 60, 101, 37, 37, 41, 26, 24, 13, 34, 20, 17, 28, 10, 23, 23, 164, 12, 12, 12, 37, 23, 26, 40, 13, 9, 10, 9, 9, 13, 40, 25, 26, 39, 14, 9, 10, 17, 11, 13, 10, 27, 18, 20, 30, 10, 10, 11, 8, 8, 10, 32, 21, 23, 32, 10, 8, 8, 253, 163, 1, 255, 131, 254, 1, 4, 144, 121, 15, 16, 10, 27, 18, 15, 29, 11, 11, 15, 14, 10, 11, 27, 15, 61, 83, 26, 27, 24, 28, 27, 26, 78, 50, 40, 60, 21, 15, 21, 8, 8, 22, 14, 21, 54, 34, 49, 77, 26, 25, 26, 26, 25, 26, 76, 49, 12, 21, 7, 8, 9, 12, 10, 11, 25, 14, 19, 30, 11, 10, 11, 253, 118, 49, 76, 26, 25, 26, 26, 25, 26, 76, 49, 33, 55, 22, 13, 21, 9, 9, 23, 14, 24, 62, 38, 51, 77, 26, 26, 25, 25, 26, 26, 77, 51, 38, 63, 24, 13, 23, 9, 8, 19, 12, 22, 57, 254, 242, 18, 28, 10, 11, 12, 15, 13, 10, 25, 16, 16, 25, 9, 12, 14, 13, 12, 9, 25, 1, 20, 17, 29, 9, 8, 8, 10, 10, 9, 26, 16, 14, 25, 8, 10, 12, 12, 9, 9, 25, 254, 210, 3, 170, 67, 252, 86, 0, 0, 5, 0, 27, 255, 243, 4, 190, 5, 183, 0, 45, 0, 93, 0, 117, 0, 141, 0, 145, 0, 0, 83, 23, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 35, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 55, 33, 53, 33, 1, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 43, 144, 13, 46, 46, 28, 43, 13, 13, 13, 9, 10, 12, 37, 28, 44, 52, 2, 181, 1, 48, 38, 39, 100, 53, 70, 105, 34, 34, 33, 29, 29, 31, 93, 62, 38, 68, 12, 19, 1, 47, 254, 61, 4, 83, 38, 35, 35, 96, 58, 56, 96, 34, 35, 39, 23, 20, 11, 31, 17, 20, 34, 14, 24, 26, 42, 37, 37, 103, 59, 60, 101, 37, 37, 41, 26, 24, 13, 34, 20, 17, 28, 10, 23, 23, 164, 12, 12, 12, 37, 23, 26, 40, 13, 9, 10, 9, 9, 13, 40, 25, 26, 39, 14, 9, 10, 17, 11, 13, 10, 27, 18, 20, 30, 10, 10, 11, 8, 8, 10, 32, 21, 23, 32, 10, 8, 8, 253, 183, 1, 255, 131, 254, 1, 4, 72, 35, 10, 24, 15, 15, 13, 37, 23, 21, 38, 14, 15, 17, 29, 37, 49, 78, 27, 27, 29, 42, 35, 34, 89, 48, 53, 83, 29, 31, 32, 18, 5, 124, 143, 252, 76, 49, 76, 26, 25, 26, 26, 25, 26, 76, 49, 33, 55, 22, 13, 21, 9, 9, 23, 14, 24, 62, 38, 51, 77, 26, 26, 25, 25, 26, 26, 77, 51, 38, 63, 24, 13, 23, 9, 8, 19, 12, 22, 57, 254, 242, 18, 28, 10, 11, 12, 15, 13, 10, 25, 16, 16, 25, 9, 12, 14, 13, 12, 9, 25, 1, 20, 17, 29, 9, 8, 8, 10, 10, 9, 26, 16, 14, 25, 8, 10, 12, 12, 9, 9, 25, 254, 222, 3, 170, 67, 252, 86, 0, 5, 0, 72, 255, 246, 4, 212, 5, 177, 0, 6, 0, 54, 0, 78, 0, 102, 0, 106, 0, 0, 65, 53, 33, 21, 33, 1, 51, 5, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 2, 134, 253, 194, 1, 128, 254, 212, 190, 3, 106, 38, 35, 35, 96, 58, 56, 96, 34, 35, 39, 23, 20, 11, 31, 17, 20, 34, 14, 24, 26, 42, 37, 37, 103, 59, 60, 101, 37, 37, 41, 26, 24, 13, 34, 20, 17, 28, 10, 23, 23, 164, 12, 12, 12, 37, 23, 26, 40, 13, 9, 10, 9, 9, 13, 40, 25, 26, 39, 14, 9, 10, 17, 11, 13, 10, 27, 18, 20, 30, 10, 10, 11, 8, 8, 10, 32, 21, 23, 32, 10, 8, 8, 253, 134, 1, 255, 131, 254, 1, 5, 75, 102, 146, 253, 204, 229, 49, 76, 26, 25, 26, 26, 25, 26, 76, 49, 33, 55, 22, 13, 21, 9, 9, 23, 14, 24, 62, 38, 51, 77, 26, 26, 25, 25, 26, 26, 77, 51, 38, 63, 24, 13, 23, 9, 8, 19, 12, 22, 57, 254, 242, 18, 28, 10, 11, 12, 15, 13, 10, 25, 16, 16, 25, 9, 12, 14, 13, 12, 9, 25, 1, 20, 17, 29, 9, 8, 8, 10, 10, 9, 26, 16, 14, 25, 8, 10, 12, 12, 9, 9, 25, 254, 219, 3, 170, 67, 252, 86, 0, 2, 0, 111, 255, 235, 4, 100, 5, 254, 0, 44, 0, 73, 0, 0, 65, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 53, 53, 52, 2, 39, 38, 38, 35, 34, 6, 7, 23, 54, 54, 51, 50, 22, 23, 22, 22, 23, 38, 38, 7, 50, 22, 23, 22, 22, 23, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 2, 73, 114, 177, 60, 61, 62, 67, 65, 64, 188, 122, 80, 137, 56, 70, 102, 27, 17, 18, 77, 73, 74, 212, 136, 114, 144, 53, 41, 68, 101, 78, 65, 112, 44, 43, 61, 15, 60, 143, 47, 49, 76, 28, 28, 36, 10, 4, 5, 6, 21, 15, 28, 87, 63, 62, 87, 27, 27, 25, 24, 28, 27, 88, 4, 10, 76, 67, 68, 184, 108, 21, 115, 194, 71, 71, 80, 45, 42, 51, 163, 99, 61, 136, 72, 59, 198, 1, 52, 106, 105, 110, 48, 26, 202, 26, 25, 56, 51, 51, 145, 89, 60, 57, 224, 27, 21, 21, 51, 23, 108, 32, 61, 29, 36, 66, 27, 49, 57, 46, 40, 40, 108, 61, 21, 58, 106, 41, 40, 47, 0, 1, 0, 156, 255, 9, 4, 37, 5, 176, 0, 7, 0, 0, 69, 17, 33, 17, 33, 17, 33, 17, 4, 37, 252, 119, 1, 24, 1, 90, 247, 6, 167, 249, 89, 5, 203, 250, 53, 0, 0, 1, 0, 37, 254, 243, 4, 186, 5, 176, 0, 12, 0, 0, 65, 53, 1, 33, 53, 33, 21, 1, 1, 21, 33, 53, 33, 3, 137, 254, 25, 2, 240, 251, 147, 2, 63, 253, 193, 4, 149, 252, 231, 2, 69, 33, 2, 105, 225, 152, 253, 62, 253, 52, 151, 225, 0, 1, 0, 37, 0, 0, 4, 99, 5, 176, 0, 10, 0, 0, 65, 3, 33, 21, 51, 19, 51, 1, 35, 1, 7, 2, 39, 133, 254, 131, 222, 193, 234, 1, 181, 227, 254, 204, 22, 1, 54, 1, 196, 227, 253, 233, 5, 176, 251, 146, 86, 0, 0, 3, 0, 56, 0, 246, 4, 202, 3, 212, 0, 64, 0, 102, 0, 140, 0, 0, 65, 53, 52, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 39, 21, 20, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 53, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 5, 53, 52, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 23, 21, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 4, 202, 13, 13, 16, 58, 40, 33, 83, 49, 31, 58, 25, 32, 56, 21, 17, 29, 12, 23, 57, 35, 35, 83, 47, 48, 81, 32, 39, 58, 17, 15, 14, 13, 14, 16, 56, 38, 33, 84, 51, 47, 82, 35, 35, 57, 23, 22, 57, 36, 35, 82, 48, 51, 85, 34, 40, 56, 17, 11, 12, 204, 4, 5, 7, 21, 16, 12, 31, 19, 18, 33, 15, 26, 39, 13, 8, 10, 1, 1, 8, 8, 11, 36, 25, 16, 38, 21, 33, 44, 13, 7, 10, 3, 2, 2, 253, 4, 4, 3, 6, 21, 17, 13, 31, 20, 26, 45, 19, 17, 26, 9, 10, 10, 1, 1, 8, 7, 12, 35, 26, 16, 37, 20, 16, 27, 11, 19, 24, 8, 6, 5, 2, 82, 36, 44, 81, 35, 47, 76, 25, 20, 22, 14, 12, 14, 44, 25, 18, 41, 21, 38, 68, 26, 26, 31, 21, 19, 23, 71, 45, 37, 86, 48, 36, 46, 83, 35, 45, 70, 25, 21, 23, 32, 27, 27, 72, 39, 39, 72, 27, 27, 32, 23, 22, 24, 78, 49, 33, 77, 78, 36, 23, 38, 17, 20, 31, 11, 6, 7, 13, 11, 18, 56, 24, 16, 26, 6, 16, 5, 21, 14, 21, 49, 19, 12, 16, 22, 20, 12, 27, 16, 13, 29, 51, 36, 20, 35, 16, 21, 36, 11, 7, 8, 23, 18, 17, 36, 17, 16, 25, 5, 16, 5, 22, 15, 21, 53, 24, 14, 16, 5, 4, 8, 30, 20, 17, 44, 0, 0, 1, 0, 232, 254, 75, 3, 245, 6, 45, 0, 40, 0, 0, 69, 49, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 2, 229, 17, 17, 20, 59, 39, 31, 44, 21, 24, 40, 77, 41, 92, 145, 50, 51, 54, 17, 17, 14, 40, 26, 25, 61, 20, 11, 37, 61, 38, 87, 139, 48, 48, 51, 34, 4, 210, 35, 56, 20, 22, 23, 5, 5, 214, 9, 12, 50, 48, 49, 142, 92, 251, 46, 45, 71, 22, 20, 20, 6, 7, 221, 10, 7, 54, 52, 51, 150, 0, 0, 2, 0, 130, 0, 0, 4, 86, 5, 176, 0, 5, 0, 13, 0, 0, 65, 1, 1, 51, 1, 1, 7, 23, 19, 3, 7, 39, 3, 19, 1, 245, 254, 141, 1, 117, 235, 1, 116, 254, 138, 116, 23, 189, 189, 22, 21, 193, 188, 5, 176, 253, 39, 253, 41, 2, 215, 2, 217, 232, 68, 254, 83, 254, 77, 64, 67, 1, 176, 1, 173, 0, 0, 22, 0, 87, 0, 10, 4, 130, 4, 6, 0, 13, 0, 28, 0, 42, 0, 58, 0, 64, 0, 70, 0, 76, 0, 82, 0, 91, 0, 95, 0, 99, 0, 103, 0, 107, 0, 111, 0, 115, 0, 124, 0, 128, 0, 132, 0, 136, 0, 140, 0, 144, 0, 148, 0, 0, 65, 21, 20, 6, 35, 34, 38, 53, 53, 52, 54, 51, 50, 22, 23, 35, 17, 51, 50, 22, 21, 20, 6, 7, 22, 22, 21, 20, 6, 37, 53, 52, 38, 35, 34, 6, 21, 21, 20, 22, 51, 50, 54, 37, 53, 51, 21, 20, 6, 35, 34, 38, 53, 51, 20, 22, 51, 50, 54, 1, 51, 53, 35, 53, 35, 5, 51, 53, 35, 21, 35, 1, 51, 53, 51, 53, 35, 5, 51, 21, 51, 53, 35, 1, 35, 21, 51, 50, 54, 53, 52, 38, 3, 51, 53, 35, 23, 51, 53, 35, 5, 51, 53, 35, 19, 51, 53, 35, 23, 51, 53, 35, 5, 51, 53, 35, 19, 21, 51, 50, 54, 53, 52, 38, 35, 5, 53, 35, 21, 23, 53, 35, 21, 19, 53, 35, 21, 5, 53, 35, 21, 23, 53, 35, 21, 19, 53, 35, 21, 1, 235, 69, 57, 57, 71, 70, 57, 57, 70, 159, 122, 103, 55, 62, 23, 23, 28, 28, 57, 254, 251, 41, 35, 35, 41, 41, 36, 35, 40, 2, 14, 50, 58, 45, 48, 60, 51, 31, 26, 23, 30, 252, 145, 170, 108, 62, 3, 129, 170, 61, 109, 252, 127, 62, 108, 170, 3, 129, 109, 61, 170, 254, 178, 70, 70, 29, 27, 27, 135, 153, 153, 220, 153, 153, 254, 73, 152, 152, 219, 153, 153, 220, 153, 153, 254, 73, 152, 152, 255, 51, 33, 32, 32, 33, 254, 30, 62, 62, 62, 62, 62, 4, 43, 61, 61, 61, 61, 61, 2, 37, 62, 54, 66, 66, 54, 62, 54, 66, 66, 235, 1, 47, 40, 43, 21, 34, 9, 8, 39, 23, 43, 43, 119, 62, 38, 43, 43, 38, 62, 38, 43, 43, 15, 208, 208, 45, 50, 45, 46, 26, 24, 30, 254, 82, 63, 111, 174, 174, 111, 3, 32, 93, 64, 64, 93, 157, 253, 241, 93, 24, 21, 22, 26, 1, 207, 64, 64, 64, 64, 64, 252, 4, 63, 63, 63, 63, 63, 2, 39, 83, 22, 22, 23, 16, 165, 138, 138, 207, 137, 137, 1, 159, 137, 137, 208, 138, 138, 207, 137, 137, 1, 159, 137, 137, 0, 5, 0, 15, 253, 213, 4, 175, 8, 98, 0, 3, 0, 47, 0, 51, 0, 55, 0, 59, 0, 0, 65, 9, 2, 5, 35, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 35, 34, 6, 7, 35, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 21, 21, 35, 53, 19, 21, 51, 53, 3, 21, 51, 53, 2, 98, 253, 173, 2, 83, 2, 77, 254, 26, 202, 8, 11, 10, 35, 29, 10, 27, 12, 12, 17, 32, 37, 24, 41, 2, 203, 1, 43, 37, 36, 97, 56, 64, 102, 35, 34, 37, 23, 18, 18, 45, 22, 11, 17, 6, 6, 6, 202, 94, 4, 6, 4, 6, 82, 252, 49, 252, 49, 3, 207, 251, 48, 50, 19, 19, 40, 36, 13, 39, 24, 23, 51, 26, 52, 64, 48, 55, 70, 101, 33, 32, 30, 39, 36, 37, 103, 64, 41, 64, 28, 29, 55, 31, 16, 29, 15, 16, 39, 116, 170, 170, 252, 172, 4, 4, 10, 137, 4, 4, 0, 0, 2, 1, 32, 4, 234, 3, 255, 6, 241, 0, 6, 0, 44, 0, 0, 65, 37, 35, 5, 51, 55, 23, 19, 39, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 255, 254, 232, 175, 254, 232, 204, 164, 164, 95, 99, 9, 7, 8, 22, 12, 26, 51, 26, 26, 53, 28, 31, 51, 18, 18, 20, 98, 9, 8, 7, 21, 12, 28, 47, 24, 24, 54, 34, 31, 51, 19, 18, 20, 4, 234, 248, 248, 150, 150, 1, 228, 35, 18, 35, 13, 14, 16, 20, 12, 12, 20, 31, 25, 25, 64, 33, 28, 18, 32, 13, 12, 15, 20, 12, 12, 20, 30, 25, 25, 64, 0, 0, 2, 1, 16, 4, 234, 4, 190, 6, 179, 0, 6, 0, 34, 0, 0, 65, 37, 35, 5, 51, 55, 23, 55, 51, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 7, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 3, 239, 254, 233, 177, 254, 233, 204, 164, 164, 198, 95, 1, 21, 43, 17, 16, 21, 53, 53, 28, 73, 44, 4, 35, 59, 21, 21, 24, 22, 20, 14, 39, 23, 4, 234, 235, 235, 141, 141, 129, 61, 3, 17, 15, 15, 44, 30, 43, 64, 17, 9, 10, 83, 7, 7, 8, 25, 18, 15, 22, 7, 4, 5, 0, 0, 2, 255, 246, 4, 247, 4, 15, 6, 145, 0, 6, 0, 10, 0, 0, 65, 37, 35, 5, 51, 55, 23, 37, 3, 35, 19, 4, 15, 254, 226, 162, 254, 225, 215, 153, 153, 254, 65, 160, 228, 224, 4, 247, 235, 235, 130, 130, 140, 1, 14, 254, 242, 0, 0, 2, 1, 16, 4, 234, 5, 43, 6, 133, 0, 6, 0, 10, 0, 0, 65, 5, 51, 55, 23, 51, 37, 37, 3, 51, 19, 2, 47, 254, 225, 215, 153, 153, 215, 254, 225, 1, 117, 160, 164, 225, 5, 213, 235, 130, 130, 235, 176, 254, 241, 1, 15, 0, 0, 2, 1, 43, 4, 201, 3, 214, 6, 113, 0, 3, 0, 29, 0, 0, 65, 39, 35, 23, 5, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 2, 205, 121, 198, 173, 1, 155, 188, 17, 18, 18, 58, 42, 42, 59, 18, 19, 16, 188, 48, 45, 44, 126, 79, 78, 127, 44, 44, 48, 5, 181, 188, 188, 5, 22, 41, 15, 16, 18, 18, 16, 15, 41, 22, 51, 85, 30, 31, 34, 34, 31, 30, 85, 0, 0, 1, 1, 216, 4, 80, 2, 250, 6, 26, 0, 9, 0, 0, 65, 21, 51, 55, 52, 54, 55, 39, 6, 6, 1, 216, 221, 2, 40, 27, 145, 62, 83, 4, 216, 136, 124, 79, 128, 49, 78, 42, 176, 0, 0, 2, 0, 22, 0, 0, 4, 184, 4, 141, 0, 7, 0, 12, 0, 0, 101, 23, 33, 1, 33, 1, 33, 55, 55, 19, 55, 23, 19, 3, 74, 83, 1, 27, 254, 51, 254, 242, 254, 57, 1, 28, 80, 75, 145, 6, 7, 147, 221, 221, 4, 141, 251, 115, 221, 204, 1, 142, 18, 18, 254, 114, 0, 3, 0, 161, 0, 0, 4, 106, 4, 141, 0, 26, 0, 41, 0, 56, 0, 0, 115, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 1, 51, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 161, 1, 250, 121, 189, 56, 53, 44, 24, 25, 26, 78, 55, 41, 64, 22, 27, 27, 69, 63, 63, 177, 107, 254, 49, 1, 23, 238, 49, 70, 21, 17, 16, 18, 17, 22, 75, 52, 227, 203, 42, 67, 23, 23, 25, 15, 15, 22, 72, 49, 49, 50, 48, 112, 75, 42, 81, 35, 35, 52, 13, 15, 44, 27, 34, 84, 46, 84, 122, 40, 39, 38, 253, 93, 1, 22, 21, 17, 48, 30, 24, 42, 16, 21, 25, 1, 200, 1, 4, 14, 15, 16, 51, 37, 26, 42, 14, 22, 22, 1, 0, 0, 1, 0, 84, 255, 240, 4, 86, 4, 157, 0, 51, 0, 0, 65, 33, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 83, 254, 234, 37, 31, 32, 82, 44, 52, 87, 32, 32, 37, 36, 31, 31, 84, 48, 60, 93, 31, 26, 27, 1, 24, 8, 81, 67, 67, 183, 111, 106, 185, 69, 69, 80, 77, 69, 69, 190, 114, 98, 179, 69, 68, 85, 1, 143, 54, 74, 23, 23, 21, 39, 37, 37, 107, 69, 178, 64, 105, 38, 38, 42, 31, 29, 25, 69, 43, 102, 157, 54, 53, 54, 74, 67, 68, 188, 114, 177, 113, 188, 67, 67, 74, 49, 51, 51, 157, 0, 2, 0, 157, 0, 0, 4, 111, 4, 141, 0, 15, 0, 31, 0, 0, 115, 33, 50, 54, 55, 54, 54, 53, 53, 52, 38, 39, 38, 38, 35, 33, 5, 51, 50, 22, 23, 22, 22, 21, 21, 20, 6, 7, 6, 6, 35, 35, 157, 1, 205, 104, 187, 71, 71, 84, 84, 71, 72, 192, 109, 254, 62, 1, 22, 172, 58, 92, 32, 32, 35, 36, 31, 32, 87, 52, 183, 75, 66, 66, 182, 108, 168, 107, 183, 67, 66, 77, 223, 42, 37, 37, 101, 59, 169, 64, 102, 35, 36, 39, 0, 1, 0, 160, 0, 0, 4, 56, 4, 141, 0, 11, 0, 0, 65, 53, 33, 53, 33, 53, 33, 17, 33, 53, 33, 17, 3, 220, 253, 219, 2, 129, 252, 104, 3, 146, 253, 133, 1, 238, 223, 225, 223, 251, 115, 221, 1, 17, 0, 1, 0, 168, 0, 0, 4, 49, 4, 141, 0, 9, 0, 0, 65, 53, 33, 17, 33, 53, 33, 17, 33, 17, 3, 241, 253, 207, 2, 113, 252, 119, 1, 24, 1, 205, 223, 1, 2, 223, 251, 115, 1, 205, 0, 1, 0, 94, 255, 240, 4, 90, 4, 157, 0, 55, 0, 0, 101, 17, 33, 21, 51, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 33, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 90, 254, 15, 219, 1, 12, 42, 27, 27, 65, 34, 66, 97, 31, 31, 31, 40, 34, 33, 88, 49, 49, 81, 30, 29, 33, 1, 1, 14, 1, 64, 62, 63, 186, 124, 107, 187, 69, 70, 82, 74, 68, 67, 192, 120, 90, 158, 65, 64, 95, 147, 1, 234, 205, 187, 9, 15, 5, 6, 6, 43, 38, 37, 102, 59, 199, 61, 102, 37, 36, 40, 18, 20, 20, 66, 49, 88, 146, 52, 52, 58, 73, 66, 66, 185, 111, 197, 111, 184, 66, 66, 72, 28, 23, 23, 58, 0, 0, 1, 0, 142, 0, 0, 4, 24, 4, 141, 0, 11, 0, 0, 97, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 4, 24, 254, 235, 254, 160, 254, 235, 1, 21, 1, 96, 4, 141, 254, 23, 1, 233, 251, 115, 1, 197, 254, 59, 0, 1, 0, 202, 0, 0, 4, 9, 4, 140, 0, 11, 0, 0, 83, 21, 33, 17, 33, 21, 33, 53, 33, 17, 33, 53, 202, 1, 16, 254, 240, 3, 63, 254, 233, 1, 23, 4, 140, 226, 253, 56, 226, 226, 2, 200, 226, 0, 0, 1, 0, 160, 255, 240, 4, 41, 4, 141, 0, 27, 0, 0, 65, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 17, 3, 18, 1, 1, 26, 23, 22, 61, 36, 48, 72, 22, 18, 19, 254, 233, 2, 66, 59, 59, 168, 104, 91, 162, 61, 61, 72, 4, 141, 253, 42, 58, 89, 30, 28, 30, 30, 31, 26, 73, 48, 110, 161, 53, 53, 51, 61, 59, 58, 169, 108, 2, 214, 0, 0, 1, 0, 154, 0, 0, 4, 165, 4, 141, 0, 12, 0, 0, 65, 1, 33, 1, 1, 33, 1, 7, 17, 33, 17, 33, 17, 2, 50, 1, 40, 1, 75, 254, 73, 1, 169, 254, 165, 254, 218, 101, 254, 233, 1, 23, 1, 188, 254, 68, 2, 130, 2, 11, 254, 151, 132, 1, 237, 251, 115, 1, 62, 0, 0, 1, 0, 161, 0, 0, 4, 103, 4, 141, 0, 5, 0, 0, 101, 17, 33, 17, 33, 53, 1, 186, 254, 231, 3, 198, 221, 3, 176, 251, 115, 221, 0, 1, 0, 120, 0, 0, 4, 94, 4, 141, 0, 12, 0, 0, 65, 3, 33, 17, 51, 17, 19, 23, 19, 17, 51, 17, 33, 2, 110, 186, 254, 196, 254, 158, 182, 150, 254, 254, 204, 2, 73, 2, 68, 251, 115, 2, 222, 254, 23, 1, 1, 214, 253, 54, 4, 141, 0, 1, 0, 159, 0, 0, 4, 20, 4, 141, 0, 9, 0, 0, 97, 17, 33, 19, 1, 33, 17, 33, 3, 1, 4, 20, 254, 235, 1, 254, 179, 254, 236, 1, 20, 1, 1, 78, 4, 141, 253, 69, 2, 187, 251, 115, 2, 186, 253, 70, 0, 2, 0, 104, 255, 240, 4, 99, 4, 157, 0, 25, 0, 51, 0, 0, 65, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 1, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 99, 75, 67, 68, 187, 113, 116, 187, 67, 67, 72, 73, 67, 67, 188, 116, 113, 187, 67, 67, 74, 254, 233, 30, 29, 29, 86, 55, 60, 87, 28, 29, 27, 27, 28, 28, 86, 60, 56, 86, 30, 29, 30, 1, 228, 195, 107, 184, 68, 67, 76, 76, 67, 68, 184, 107, 195, 107, 183, 67, 67, 76, 76, 67, 67, 183, 1, 47, 196, 59, 103, 38, 39, 44, 45, 38, 38, 103, 59, 196, 59, 103, 38, 38, 43, 43, 38, 38, 102, 0, 2, 0, 97, 255, 65, 4, 105, 4, 157, 0, 31, 0, 57, 0, 0, 65, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 23, 55, 39, 54, 54, 55, 54, 54, 1, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 4, 105, 77, 68, 69, 190, 113, 116, 190, 67, 68, 74, 74, 68, 68, 191, 116, 35, 66, 31, 207, 169, 178, 39, 64, 23, 28, 31, 254, 232, 32, 30, 30, 87, 56, 61, 89, 29, 30, 28, 28, 29, 29, 89, 60, 57, 88, 30, 30, 32, 1, 228, 195, 108, 184, 67, 67, 76, 76, 67, 67, 184, 108, 195, 108, 184, 66, 67, 75, 8, 7, 190, 119, 162, 31, 74, 43, 53, 124, 1, 9, 196, 60, 103, 38, 39, 43, 43, 39, 38, 103, 60, 196, 60, 103, 38, 37, 43, 42, 37, 38, 103, 0, 2, 0, 147, 0, 0, 4, 115, 4, 141, 0, 20, 0, 35, 0, 0, 65, 19, 33, 53, 1, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 17, 33, 17, 53, 17, 51, 50, 22, 23, 22, 22, 21, 6, 6, 7, 6, 6, 35, 2, 105, 223, 1, 43, 254, 245, 49, 82, 29, 29, 32, 68, 62, 62, 172, 103, 254, 33, 1, 23, 200, 42, 68, 24, 27, 29, 1, 26, 24, 25, 70, 44, 1, 151, 254, 105, 11, 1, 214, 22, 58, 40, 39, 105, 69, 88, 131, 44, 44, 44, 251, 115, 1, 151, 223, 1, 53, 17, 18, 19, 60, 40, 39, 58, 19, 19, 20, 0, 1, 0, 131, 255, 240, 4, 92, 4, 157, 0, 76, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 22, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 33, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 82, 26, 25, 26, 76, 51, 49, 86, 32, 32, 37, 254, 233, 1, 41, 36, 35, 96, 56, 55, 121, 61, 104, 177, 65, 64, 73, 62, 58, 58, 166, 103, 64, 88, 27, 28, 24, 26, 25, 25, 72, 47, 42, 72, 27, 27, 30, 1, 23, 2, 74, 64, 65, 174, 100, 96, 167, 62, 62, 71, 56, 55, 55, 161, 104, 61, 92, 31, 31, 31, 1, 60, 24, 46, 18, 18, 22, 18, 20, 20, 67, 50, 74, 113, 42, 42, 58, 17, 18, 15, 41, 42, 42, 127, 86, 88, 122, 43, 42, 59, 24, 15, 28, 17, 16, 43, 31, 24, 45, 18, 17, 20, 24, 21, 21, 59, 34, 99, 140, 44, 43, 40, 45, 43, 44, 127, 82, 87, 117, 40, 40, 55, 27, 14, 30, 18, 19, 46, 0, 1, 0, 84, 0, 0, 4, 154, 4, 141, 0, 7, 0, 0, 65, 53, 33, 21, 33, 17, 33, 17, 4, 154, 251, 186, 1, 146, 1, 25, 3, 174, 223, 223, 252, 82, 3, 174, 0, 1, 0, 157, 255, 240, 4, 67, 4, 141, 0, 29, 0, 0, 65, 33, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 4, 67, 254, 233, 1, 23, 22, 23, 71, 47, 50, 75, 24, 20, 22, 254, 235, 69, 62, 62, 172, 103, 103, 171, 62, 61, 69, 4, 141, 253, 9, 50, 75, 24, 25, 25, 27, 29, 24, 72, 47, 2, 247, 253, 9, 102, 157, 54, 54, 55, 55, 54, 54, 157, 102, 0, 0, 1, 0, 45, 0, 0, 4, 187, 4, 141, 0, 8, 0, 0, 65, 1, 33, 1, 33, 1, 33, 1, 7, 2, 101, 254, 237, 254, 219, 1, 177, 1, 42, 1, 179, 254, 219, 254, 234, 13, 1, 65, 3, 76, 251, 115, 4, 141, 252, 178, 62, 0, 0, 1, 0, 33, 0, 0, 4, 143, 4, 141, 0, 18, 0, 0, 115, 51, 19, 55, 23, 19, 51, 19, 33, 3, 7, 39, 3, 35, 3, 7, 39, 3, 33, 239, 254, 96, 9, 9, 102, 254, 204, 254, 252, 73, 9, 11, 89, 255, 86, 8, 7, 73, 254, 249, 2, 35, 47, 47, 253, 221, 4, 141, 253, 248, 62, 62, 2, 8, 253, 250, 49, 49, 2, 6, 0, 1, 0, 64, 0, 0, 4, 139, 4, 141, 0, 11, 0, 0, 65, 3, 33, 1, 1, 33, 19, 19, 33, 1, 1, 33, 2, 92, 211, 254, 194, 1, 105, 254, 140, 1, 66, 222, 228, 1, 71, 254, 128, 1, 105, 254, 191, 3, 14, 1, 127, 253, 190, 253, 181, 1, 134, 254, 122, 2, 75, 2, 66, 0, 0, 1, 0, 58, 0, 0, 4, 174, 4, 141, 0, 10, 0, 0, 97, 33, 17, 1, 33, 3, 7, 39, 3, 33, 1, 1, 229, 1, 24, 1, 177, 254, 209, 252, 15, 15, 251, 254, 208, 1, 171, 1, 151, 2, 246, 254, 20, 29, 29, 1, 236, 253, 19, 0, 0, 1, 0, 153, 0, 0, 4, 75, 4, 141, 0, 9, 0, 0, 101, 1, 53, 33, 21, 33, 1, 21, 33, 53, 2, 0, 2, 65, 252, 108, 2, 47, 253, 189, 3, 178, 221, 3, 37, 139, 223, 252, 224, 142, 221, 0, 0, 2, 1, 60, 4, 203, 3, 232, 6, 246, 0, 25, 0, 53, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 51, 39, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 7, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 3, 232, 188, 17, 18, 19, 58, 41, 42, 59, 18, 19, 17, 188, 48, 45, 44, 127, 79, 79, 126, 44, 44, 48, 254, 109, 98, 17, 27, 53, 20, 20, 25, 39, 39, 35, 103, 67, 7, 42, 71, 26, 25, 29, 24, 25, 16, 44, 27, 5, 176, 22, 39, 15, 15, 17, 17, 15, 15, 39, 22, 51, 85, 30, 30, 33, 33, 30, 30, 85, 79, 46, 3, 16, 13, 13, 39, 27, 34, 55, 18, 17, 17, 66, 6, 7, 7, 25, 18, 15, 21, 6, 3, 4, 1, 0, 0, 2, 1, 44, 4, 201, 3, 215, 6, 113, 0, 25, 0, 29, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 37, 7, 51, 55, 3, 215, 188, 17, 18, 18, 58, 42, 42, 59, 18, 19, 16, 188, 48, 45, 44, 126, 79, 78, 127, 44, 44, 48, 254, 215, 121, 146, 173, 5, 176, 22, 41, 15, 16, 18, 18, 16, 15, 41, 22, 51, 85, 30, 31, 34, 34, 31, 30, 85, 244, 188, 188, 0, 0, 1, 1, 45, 2, 136, 3, 225, 3, 60, 0, 3, 0, 0, 65, 53, 33, 21, 3, 225, 253, 76, 2, 136, 180, 180, 0, 3, 1, 193, 4, 84, 3, 253, 6, 182, 0, 3, 0, 27, 0, 39, 0, 0, 65, 7, 51, 37, 1, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 2, 246, 182, 182, 1, 7, 253, 196, 31, 27, 27, 73, 41, 41, 71, 27, 26, 30, 30, 26, 27, 71, 41, 41, 73, 27, 27, 31, 110, 51, 38, 38, 47, 47, 38, 38, 51, 6, 182, 204, 204, 254, 83, 40, 66, 24, 24, 27, 26, 24, 24, 67, 40, 39, 68, 25, 24, 28, 28, 24, 25, 68, 39, 40, 50, 50, 40, 38, 50, 50, 0, 2, 1, 244, 4, 131, 3, 197, 5, 196, 0, 5, 0, 21, 0, 0, 65, 21, 51, 19, 53, 35, 5, 21, 51, 53, 52, 54, 55, 54, 54, 55, 35, 6, 6, 7, 6, 6, 2, 180, 83, 190, 181, 254, 228, 130, 7, 7, 7, 19, 11, 78, 16, 35, 15, 16, 20, 4, 160, 27, 1, 42, 21, 208, 113, 107, 31, 62, 28, 27, 48, 18, 14, 41, 26, 26, 64, 0, 0, 2, 1, 92, 4, 198, 4, 2, 6, 226, 0, 25, 0, 51, 0, 0, 65, 35, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 39, 20, 6, 35, 34, 38, 39, 38, 38, 35, 34, 6, 21, 23, 52, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 4, 2, 187, 16, 18, 18, 58, 42, 42, 58, 18, 18, 16, 187, 47, 45, 44, 125, 78, 78, 126, 44, 44, 47, 48, 116, 40, 29, 31, 56, 27, 28, 57, 33, 74, 90, 116, 40, 29, 32, 50, 26, 25, 59, 39, 72, 93, 5, 176, 22, 39, 15, 15, 18, 18, 15, 15, 39, 22, 52, 86, 31, 31, 34, 34, 31, 31, 86, 1, 68, 34, 37, 49, 21, 13, 13, 21, 112, 71, 32, 37, 49, 21, 13, 13, 21, 109, 0, 0, 1, 1, 250, 254, 156, 3, 16, 0, 201, 0, 3, 0, 0, 65, 17, 33, 17, 3, 16, 254, 234, 254, 156, 2, 45, 253, 211, 0, 1, 1, 66, 254, 75, 3, 66, 0, 245, 0, 21, 0, 0, 101, 33, 17, 20, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 3, 66, 254, 234, 17, 17, 15, 45, 28, 25, 52, 21, 14, 36, 65, 38, 87, 139, 48, 48, 51, 245, 254, 227, 43, 65, 21, 20, 19, 6, 6, 224, 10, 7, 52, 50, 50, 149, 96, 0, 0, 2, 0, 161, 0, 0, 4, 88, 4, 141, 0, 16, 0, 31, 0, 0, 65, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 17, 33, 17, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 1, 183, 208, 104, 171, 62, 61, 67, 67, 61, 62, 171, 104, 254, 26, 1, 22, 208, 45, 69, 24, 23, 25, 25, 23, 24, 69, 45, 1, 121, 58, 51, 51, 141, 84, 89, 148, 54, 53, 59, 251, 115, 2, 87, 1, 87, 29, 25, 25, 66, 37, 31, 58, 22, 23, 27, 0, 1, 0, 151, 0, 0, 4, 200, 5, 176, 0, 12, 0, 0, 65, 1, 33, 1, 1, 33, 1, 35, 17, 33, 17, 33, 17, 2, 37, 1, 93, 1, 70, 254, 61, 1, 178, 254, 187, 254, 131, 69, 254, 231, 1, 25, 2, 86, 253, 170, 2, 243, 2, 189, 253, 127, 2, 129, 250, 80, 2, 86, 0, 1, 0, 147, 255, 235, 4, 105, 4, 156, 0, 62, 0, 0, 65, 7, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 39, 19, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 17, 33, 17, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 7, 21, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 2, 72, 85, 46, 118, 79, 79, 141, 53, 52, 62, 40, 38, 40, 111, 80, 4, 222, 48, 104, 58, 54, 122, 70, 109, 166, 54, 53, 53, 1, 19, 25, 23, 20, 55, 33, 22, 39, 17, 16, 28, 12, 168, 82, 51, 82, 29, 28, 31, 21, 18, 19, 51, 31, 40, 64, 1, 2, 220, 26, 33, 47, 47, 46, 141, 93, 64, 105, 39, 42, 54, 16, 1, 1, 7, 60, 94, 30, 29, 30, 57, 57, 54, 163, 106, 253, 25, 2, 231, 54, 81, 25, 22, 23, 10, 8, 8, 22, 12, 212, 184, 15, 16, 17, 53, 38, 33, 53, 18, 18, 20, 33, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 1, 0, 0, 255, 255, 1, 26, 2, 18, 4, 91, 2, 243, 6, 6, 0, 103, 0, 0, 255, 255, 0, 79, 255, 235, 4, 119, 7, 75, 6, 38, 0, 4, 0, 0, 0, 7, 1, 96, 0, 59, 1, 108, 255, 255, 0, 117, 255, 235, 4, 60, 6, 10, 6, 38, 0, 30, 0, 0, 0, 6, 1, 96, 4, 43, 255, 255, 0, 87, 255, 236, 4, 108, 7, 75, 6, 38, 0, 8, 0, 0, 0, 7, 1, 96, 0, 30, 1, 108, 255, 255, 0, 113, 254, 86, 4, 71, 6, 10, 6, 38, 0, 34, 0, 0, 0, 6, 1, 96, 232, 43, 255, 255, 255, 102, 0, 0, 4, 83, 6, 21, 6, 38, 0, 41, 0, 0, 0, 7, 0, 109, 253, 148, 255, 253, 255, 255, 0, 89, 254, 15, 4, 140, 5, 196, 6, 38, 0, 20, 0, 0, 0, 7, 1, 104, 0, 215, 254, 183, 255, 255, 0, 122, 254, 15, 4, 85, 4, 78, 6, 38, 0, 46, 0, 0, 0, 7, 1, 104, 0, 151, 254, 183, 255, 255, 0, 27, 254, 38, 4, 177, 5, 176, 6, 38, 0, 21, 0, 0, 0, 7, 1, 104, 0, 171, 254, 206, 255, 255, 0, 126, 254, 25, 4, 78, 5, 67, 6, 38, 0, 47, 0, 0, 0, 7, 1, 104, 0, 237, 254, 193, 255, 255, 0, 27, 254, 67, 4, 177, 5, 176, 6, 38, 0, 21, 0, 0, 0, 6, 1, 102, 42, 13, 255, 255, 0, 84, 254, 66, 4, 154, 4, 141, 6, 38, 2, 97, 0, 0, 0, 6, 1, 102, 49, 12, 255, 255, 0, 126, 254, 54, 4, 78, 5, 67, 6, 38, 0, 47, 0, 0, 0, 6, 1, 102, 108, 0, 255, 255, 255, 170, 0, 0, 4, 111, 4, 141, 6, 38, 2, 82, 0, 0, 0, 7, 2, 106, 254, 125, 255, 104, 255, 255, 255, 170, 0, 0, 4, 111, 4, 141, 6, 38, 2, 82, 0, 0, 0, 7, 2, 106, 254, 125, 255, 104, 255, 255, 0, 84, 0, 0, 4, 154, 4, 141, 6, 38, 2, 97, 0, 0, 0, 6, 2, 106, 239, 181, 255, 255, 0, 22, 0, 0, 4, 184, 5, 229, 6, 38, 2, 79, 0, 0, 0, 7, 1, 90, 255, 88, 0, 31, 255, 255, 0, 22, 0, 0, 4, 184, 5, 226, 6, 38, 2, 79, 0, 0, 0, 6, 1, 91, 114, 28, 255, 255, 0, 22, 0, 0, 4, 184, 6, 12, 6, 38, 2, 79, 0, 0, 0, 6, 1, 92, 114, 32, 255, 255, 0, 22, 0, 0, 4, 184, 6, 39, 6, 38, 2, 79, 0, 0, 0, 6, 1, 93, 121, 33, 255, 255, 0, 22, 0, 0, 4, 184, 5, 242, 6, 38, 2, 79, 0, 0, 0, 6, 1, 97, 223, 32, 255, 255, 0, 22, 0, 0, 4, 184, 6, 75, 6, 38, 2, 79, 0, 0, 0, 7, 1, 98, 255, 255, 0, 184, 255, 255, 0, 22, 0, 0, 4, 184, 7, 25, 6, 38, 2, 79, 0, 0, 0, 6, 2, 107, 222, 99, 255, 255, 0, 84, 254, 54, 4, 86, 4, 157, 6, 38, 2, 81, 0, 0, 0, 6, 1, 102, 20, 0, 255, 255, 0, 160, 0, 0, 4, 56, 5, 229, 6, 38, 2, 83, 0, 0, 0, 7, 1, 90, 255, 71, 0, 31, 255, 255, 0, 160, 0, 0, 4, 56, 5, 226, 6, 38, 2, 83, 0, 0, 0, 6, 1, 91, 97, 28, 255, 255, 0, 160, 0, 0, 4, 56, 6, 12, 6, 38, 2, 83, 0, 0, 0, 6, 1, 92, 97, 32, 255, 255, 0, 160, 0, 0, 4, 56, 5, 242, 6, 38, 2, 83, 0, 0, 0, 6, 1, 97, 206, 32, 255, 255, 0, 202, 0, 0, 4, 9, 5, 223, 6, 38, 2, 87, 0, 0, 0, 7, 1, 90, 255, 109, 0, 25, 255, 255, 0, 202, 0, 0, 4, 9, 5, 220, 6, 38, 2, 87, 0, 0, 0, 7, 1, 91, 0, 135, 0, 22, 255, 255, 0, 202, 0, 0, 4, 9, 6, 6, 6, 38, 2, 87, 0, 0, 0, 7, 1, 92, 0, 135, 0, 26, 255, 255, 0, 202, 0, 0, 4, 9, 5, 236, 6, 38, 2, 87, 0, 0, 0, 6, 1, 97, 244, 26, 255, 255, 0, 159, 0, 0, 4, 20, 6, 39, 6, 38, 2, 92, 0, 0, 0, 7, 1, 93, 0, 130, 0, 33, 255, 255, 0, 104, 255, 240, 4, 99, 5, 241, 6, 38, 2, 93, 0, 0, 0, 7, 1, 90, 255, 80, 0, 43, 255, 255, 0, 104, 255, 240, 4, 99, 5, 238, 6, 38, 2, 93, 0, 0, 0, 6, 1, 91, 106, 40, 255, 255, 0, 104, 255, 240, 4, 99, 6, 24, 6, 38, 2, 93, 0, 0, 0, 6, 1, 92, 106, 44, 255, 255, 0, 104, 255, 240, 4, 99, 6, 51, 6, 38, 2, 93, 0, 0, 0, 6, 1, 93, 113, 45, 255, 255, 0, 104, 255, 240, 4, 99, 5, 254, 6, 38, 2, 93, 0, 0, 0, 6, 1, 97, 215, 44, 255, 255, 0, 157, 255, 240, 4, 67, 5, 254, 6, 38, 2, 98, 0, 0, 0, 7, 1, 90, 255, 115, 0, 56, 255, 255, 0, 157, 255, 240, 4, 67, 5, 251, 6, 38, 2, 98, 0, 0, 0, 7, 1, 91, 0, 141, 0, 53, 255, 255, 0, 157, 255, 240, 4, 67, 6, 37, 6, 38, 2, 98, 0, 0, 0, 7, 1, 92, 0, 141, 0, 57, 255, 255, 0, 157, 255, 240, 4, 67, 6, 11, 6, 38, 2, 98, 0, 0, 0, 6, 1, 97, 250, 57, 255, 255, 0, 58, 0, 0, 4, 174, 5, 226, 6, 38, 2, 102, 0, 0, 0, 6, 1, 91, 110, 28, 255, 255, 0, 22, 0, 0, 4, 184, 5, 181, 6, 38, 2, 79, 0, 0, 0, 6, 1, 94, 234, 5, 255, 255, 0, 22, 0, 0, 4, 184, 6, 4, 6, 38, 2, 79, 0, 0, 0, 6, 1, 95, 237, 98, 0, 2, 0, 22, 254, 88, 4, 184, 4, 141, 0, 35, 0, 40, 0, 0, 65, 33, 1, 33, 55, 33, 23, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 1, 19, 55, 23, 19, 2, 235, 254, 242, 254, 57, 1, 28, 80, 1, 200, 78, 30, 46, 17, 21, 22, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 45, 57, 253, 20, 145, 6, 6, 149, 4, 141, 251, 115, 221, 207, 21, 48, 25, 33, 69, 35, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 18, 1, 169, 1, 144, 16, 16, 254, 112, 255, 255, 0, 84, 255, 240, 4, 86, 5, 238, 6, 38, 2, 81, 0, 0, 0, 6, 1, 91, 93, 40, 255, 255, 0, 84, 255, 240, 4, 86, 6, 24, 6, 38, 2, 81, 0, 0, 0, 6, 1, 92, 93, 44, 255, 255, 0, 84, 255, 240, 4, 86, 6, 25, 6, 38, 2, 81, 0, 0, 0, 6, 1, 100, 216, 44, 255, 255, 0, 80, 0, 0, 4, 111, 6, 13, 6, 38, 2, 82, 0, 0, 0, 7, 1, 100, 255, 87, 0, 32, 255, 255, 0, 160, 0, 0, 4, 56, 5, 181, 6, 38, 2, 83, 0, 0, 0, 6, 1, 94, 217, 5, 255, 255, 0, 160, 0, 0, 4, 56, 6, 4, 6, 38, 2, 83, 0, 0, 0, 6, 1, 95, 220, 98, 255, 255, 0, 160, 0, 0, 4, 56, 6, 15, 6, 38, 2, 83, 0, 0, 0, 6, 1, 96, 229, 48, 0, 1, 0, 160, 254, 88, 4, 56, 4, 141, 0, 40, 0, 0, 65, 53, 33, 53, 33, 53, 33, 17, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 51, 53, 33, 17, 3, 220, 253, 219, 2, 129, 252, 104, 2, 21, 26, 40, 14, 19, 18, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 45, 131, 253, 133, 1, 238, 223, 225, 223, 251, 115, 21, 46, 24, 30, 64, 32, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 18, 221, 1, 17, 255, 255, 0, 160, 0, 0, 4, 56, 6, 13, 6, 38, 2, 83, 0, 0, 0, 6, 1, 100, 220, 32, 255, 255, 0, 94, 255, 240, 4, 90, 6, 24, 6, 38, 2, 85, 0, 0, 0, 6, 1, 92, 122, 44, 255, 255, 0, 94, 255, 240, 4, 90, 6, 16, 6, 38, 2, 85, 0, 0, 0, 6, 1, 95, 245, 110, 255, 255, 0, 94, 254, 25, 4, 90, 4, 157, 6, 38, 2, 85, 0, 0, 0, 7, 1, 104, 0, 195, 254, 193, 255, 255, 0, 142, 0, 0, 4, 24, 6, 12, 6, 38, 2, 86, 0, 0, 0, 7, 1, 92, 0, 146, 0, 32, 255, 255, 0, 202, 0, 0, 4, 9, 6, 33, 6, 38, 2, 87, 0, 0, 0, 7, 1, 93, 0, 142, 0, 27, 255, 255, 0, 202, 0, 0, 4, 9, 5, 176, 6, 38, 2, 87, 0, 0, 0, 6, 1, 94, 255, 0, 255, 255, 0, 202, 0, 0, 4, 9, 5, 254, 6, 38, 2, 87, 0, 0, 0, 6, 1, 95, 1, 92, 0, 1, 0, 202, 254, 88, 4, 9, 4, 140, 0, 40, 0, 0, 83, 21, 33, 17, 33, 21, 33, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 33, 53, 33, 17, 33, 53, 202, 1, 16, 254, 240, 1, 69, 23, 38, 14, 21, 21, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 15, 18, 18, 60, 45, 1, 0, 254, 233, 1, 23, 4, 140, 226, 253, 56, 226, 19, 42, 21, 32, 69, 34, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 27, 49, 22, 22, 40, 18, 226, 2, 200, 226, 255, 255, 0, 202, 0, 0, 4, 9, 6, 9, 6, 38, 2, 87, 0, 0, 0, 6, 1, 96, 10, 42, 255, 255, 0, 160, 255, 240, 5, 13, 6, 5, 6, 38, 2, 88, 0, 0, 0, 7, 1, 92, 1, 163, 0, 25, 255, 255, 0, 154, 254, 32, 4, 165, 4, 141, 6, 38, 2, 89, 0, 0, 0, 7, 1, 104, 0, 121, 254, 200, 255, 255, 0, 161, 0, 0, 4, 103, 5, 203, 6, 38, 2, 90, 0, 0, 0, 7, 1, 91, 255, 62, 0, 5, 255, 255, 0, 161, 254, 33, 4, 103, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 1, 104, 0, 65, 254, 201, 255, 255, 0, 161, 0, 0, 4, 103, 4, 144, 6, 38, 2, 90, 0, 0, 0, 7, 0, 109, 0, 92, 254, 120, 255, 255, 0, 161, 0, 0, 4, 103, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 1, 96, 0, 31, 253, 65, 255, 255, 0, 159, 0, 0, 4, 20, 5, 226, 6, 38, 2, 92, 0, 0, 0, 6, 1, 91, 123, 28, 255, 255, 0, 159, 254, 25, 4, 20, 4, 141, 6, 38, 2, 92, 0, 0, 0, 7, 1, 104, 0, 189, 254, 193, 255, 255, 0, 159, 0, 0, 4, 20, 6, 13, 6, 38, 2, 92, 0, 0, 0, 6, 1, 100, 246, 32, 255, 255, 0, 104, 255, 240, 4, 99, 5, 193, 6, 38, 2, 93, 0, 0, 0, 6, 1, 94, 226, 17, 255, 255, 0, 104, 255, 240, 4, 99, 6, 16, 6, 38, 2, 93, 0, 0, 0, 6, 1, 95, 229, 110, 255, 255, 0, 104, 255, 240, 4, 143, 6, 26, 6, 38, 2, 93, 0, 0, 0, 6, 1, 99, 114, 44, 255, 255, 0, 147, 0, 0, 4, 115, 5, 251, 6, 38, 2, 95, 0, 0, 0, 6, 1, 91, 55, 53, 255, 255, 0, 147, 254, 33, 4, 115, 4, 141, 6, 38, 2, 95, 0, 0, 0, 7, 1, 104, 0, 129, 254, 201, 255, 255, 0, 147, 0, 0, 4, 115, 6, 38, 6, 38, 2, 95, 0, 0, 0, 6, 1, 100, 178, 57, 255, 255, 0, 131, 255, 240, 4, 92, 5, 238, 6, 38, 2, 96, 0, 0, 0, 7, 1, 91, 0, 131, 0, 40, 255, 255, 0, 131, 255, 240, 4, 92, 6, 24, 6, 38, 2, 96, 0, 0, 0, 7, 1, 92, 0, 131, 0, 44, 255, 255, 0, 131, 254, 50, 4, 92, 4, 157, 6, 38, 2, 96, 0, 0, 0, 6, 1, 102, 53, 252, 255, 255, 0, 131, 255, 240, 4, 92, 6, 25, 6, 38, 2, 96, 0, 0, 0, 6, 1, 100, 254, 44, 255, 255, 0, 84, 0, 0, 4, 154, 6, 13, 6, 38, 2, 97, 0, 0, 0, 6, 1, 100, 243, 32, 255, 255, 0, 157, 255, 240, 4, 67, 6, 64, 6, 38, 2, 98, 0, 0, 0, 7, 1, 93, 0, 148, 0, 58, 255, 255, 0, 157, 255, 240, 4, 67, 5, 206, 6, 38, 2, 98, 0, 0, 0, 6, 1, 94, 4, 30, 255, 255, 0, 157, 255, 240, 4, 67, 6, 29, 6, 38, 2, 98, 0, 0, 0, 6, 1, 95, 7, 123, 255, 255, 0, 157, 255, 240, 4, 67, 6, 100, 6, 38, 2, 98, 0, 0, 0, 7, 1, 98, 0, 25, 0, 209, 255, 255, 0, 157, 255, 240, 4, 178, 6, 39, 6, 38, 2, 98, 0, 0, 0, 7, 1, 99, 0, 149, 0, 57, 0, 1, 0, 157, 254, 166, 4, 67, 4, 141, 0, 57, 0, 0, 65, 33, 3, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 17, 33, 17, 20, 22, 23, 22, 22, 23, 50, 50, 51, 6, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 54, 54, 53, 4, 67, 254, 233, 1, 23, 22, 23, 71, 47, 46, 72, 24, 23, 26, 254, 235, 66, 59, 57, 159, 95, 3, 5, 3, 8, 12, 5, 5, 5, 35, 30, 30, 81, 46, 69, 89, 28, 47, 14, 40, 29, 37, 30, 7, 8, 6, 19, 13, 119, 139, 4, 141, 253, 9, 51, 74, 24, 26, 24, 24, 24, 24, 76, 51, 2, 247, 253, 9, 99, 155, 53, 52, 57, 5, 14, 28, 14, 17, 34, 17, 51, 77, 26, 26, 27, 29, 15, 154, 6, 14, 39, 29, 19, 34, 16, 13, 24, 12, 45, 195, 148, 255, 255, 0, 33, 0, 0, 4, 143, 6, 12, 6, 38, 2, 100, 0, 0, 0, 7, 1, 92, 0, 130, 0, 32, 255, 255, 0, 58, 0, 0, 4, 174, 6, 12, 6, 38, 2, 102, 0, 0, 0, 6, 1, 92, 110, 32, 255, 255, 0, 58, 0, 0, 4, 174, 5, 242, 6, 38, 2, 102, 0, 0, 0, 6, 1, 97, 219, 32, 255, 255, 0, 153, 0, 0, 4, 75, 5, 226, 6, 38, 2, 103, 0, 0, 0, 6, 1, 91, 115, 28, 255, 255, 0, 153, 0, 0, 4, 75, 6, 15, 6, 38, 2, 103, 0, 0, 0, 6, 1, 96, 247, 48, 255, 255, 0, 153, 0, 0, 4, 75, 6, 13, 6, 38, 2, 103, 0, 0, 0, 6, 1, 100, 238, 32, 255, 255, 0, 28, 0, 0, 4, 204, 6, 129, 6, 38, 0, 2, 0, 0, 0, 7, 1, 120, 253, 225, 0, 0, 255, 255, 255, 152, 0, 0, 4, 184, 6, 131, 4, 38, 0, 6, 80, 0, 0, 7, 1, 120, 253, 83, 0, 2, 255, 255, 255, 172, 0, 0, 4, 162, 6, 127, 4, 38, 0, 9, 94, 0, 0, 7, 1, 120, 253, 103, 255, 254, 255, 255, 255, 172, 0, 0, 4, 38, 6, 131, 4, 38, 0, 10, 27, 0, 0, 7, 1, 120, 253, 103, 0, 2, 255, 255, 255, 144, 255, 236, 4, 133, 6, 129, 4, 38, 0, 16, 10, 0, 0, 7, 1, 120, 253, 75, 0, 0, 255, 255, 255, 122, 0, 1, 5, 48, 6, 130, 4, 38, 0, 26, 104, 1, 0, 7, 1, 120, 253, 53, 0, 1, 255, 255, 255, 171, 0, 0, 4, 140, 6, 129, 4, 38, 1, 132, 10, 0, 0, 7, 1, 120, 253, 102, 0, 0, 255, 255, 0, 179, 255, 235, 4, 63, 6, 192, 6, 38, 1, 141, 0, 0, 0, 6, 1, 121, 212, 183, 255, 255, 0, 28, 0, 0, 4, 204, 5, 176, 6, 6, 0, 2, 0, 0, 255, 255, 0, 129, 0, 0, 4, 154, 5, 176, 6, 6, 0, 3, 0, 0, 255, 255, 0, 147, 0, 0, 4, 104, 5, 176, 6, 6, 0, 6, 0, 0, 255, 255, 0, 89, 0, 0, 4, 129, 5, 176, 6, 6, 0, 27, 0, 0, 255, 255, 0, 123, 0, 0, 4, 68, 5, 176, 6, 6, 0, 9, 0, 0, 255, 255, 0, 193, 0, 0, 4, 11, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 129, 0, 0, 4, 235, 5, 176, 6, 6, 0, 12, 0, 0, 255, 255, 0, 127, 0, 0, 4, 96, 5, 176, 6, 6, 0, 14, 0, 0, 255, 255, 0, 123, 0, 0, 4, 67, 5, 176, 6, 6, 0, 15, 0, 0, 255, 255, 0, 80, 255, 236, 4, 123, 5, 196, 6, 6, 0, 16, 0, 0, 255, 255, 0, 149, 0, 0, 4, 142, 5, 176, 6, 6, 0, 17, 0, 0, 255, 255, 0, 27, 0, 0, 4, 177, 5, 176, 6, 6, 0, 21, 0, 0, 255, 255, 0, 33, 0, 0, 4, 200, 5, 176, 6, 6, 0, 26, 0, 0, 255, 255, 0, 30, 0, 0, 4, 199, 5, 176, 6, 6, 0, 25, 0, 0, 255, 255, 0, 193, 0, 0, 4, 11, 7, 47, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 255, 210, 1, 93, 255, 255, 0, 33, 0, 0, 4, 200, 7, 47, 6, 38, 0, 26, 0, 0, 0, 7, 1, 97, 255, 237, 1, 93, 255, 255, 0, 106, 255, 235, 4, 143, 6, 140, 6, 38, 1, 133, 0, 0, 0, 6, 1, 120, 210, 11, 255, 255, 0, 132, 255, 236, 4, 156, 6, 139, 6, 38, 1, 137, 0, 0, 0, 6, 1, 120, 243, 10, 255, 255, 0, 129, 254, 97, 4, 76, 6, 140, 6, 38, 1, 139, 0, 0, 0, 6, 1, 120, 226, 11, 255, 255, 0, 179, 255, 235, 4, 63, 6, 120, 6, 38, 1, 141, 0, 0, 0, 6, 1, 120, 214, 247, 255, 255, 0, 126, 255, 235, 4, 84, 6, 204, 6, 38, 1, 149, 0, 0, 0, 6, 1, 121, 189, 195, 255, 255, 0, 159, 0, 0, 4, 183, 4, 58, 6, 6, 0, 79, 0, 0, 255, 255, 0, 103, 255, 235, 4, 100, 4, 78, 6, 6, 0, 42, 0, 0, 255, 255, 0, 172, 254, 96, 4, 99, 4, 58, 6, 6, 1, 107, 0, 0, 255, 255, 0, 72, 0, 0, 4, 133, 4, 58, 6, 6, 0, 49, 0, 0, 255, 255, 0, 89, 0, 0, 4, 162, 4, 58, 6, 6, 0, 51, 0, 0, 255, 255, 0, 179, 255, 235, 4, 63, 5, 216, 6, 38, 1, 141, 0, 0, 0, 6, 1, 97, 234, 6, 255, 255, 0, 126, 255, 235, 4, 84, 5, 228, 6, 38, 1, 149, 0, 0, 0, 6, 1, 97, 211, 18, 255, 255, 0, 103, 255, 235, 4, 100, 6, 140, 6, 38, 0, 42, 0, 0, 0, 6, 1, 120, 210, 11, 255, 255, 0, 126, 255, 235, 4, 84, 6, 131, 6, 38, 1, 149, 0, 0, 0, 6, 1, 120, 191, 2, 255, 255, 0, 46, 255, 236, 4, 171, 6, 134, 6, 38, 1, 152, 0, 0, 0, 6, 1, 120, 211, 5, 255, 255, 0, 147, 0, 0, 4, 104, 7, 38, 6, 38, 0, 6, 0, 0, 0, 7, 1, 97, 255, 252, 1, 84, 255, 255, 0, 141, 0, 0, 4, 59, 7, 22, 6, 38, 1, 123, 0, 0, 0, 7, 1, 91, 0, 118, 1, 80, 0, 1, 0, 89, 255, 237, 4, 140, 5, 196, 0, 79, 0, 0, 65, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 33, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 33, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 119, 32, 30, 30, 87, 56, 63, 105, 37, 38, 42, 2, 254, 236, 85, 71, 82, 214, 111, 111, 188, 68, 68, 77, 67, 60, 61, 168, 100, 70, 111, 39, 19, 29, 10, 11, 11, 31, 30, 30, 87, 56, 61, 91, 31, 30, 31, 2, 1, 18, 76, 68, 68, 189, 114, 110, 188, 69, 69, 78, 19, 17, 19, 55, 35, 66, 173, 95, 78, 105, 33, 32, 27, 1, 124, 39, 65, 23, 23, 26, 28, 30, 30, 94, 66, 111, 170, 57, 66, 67, 53, 52, 51, 149, 96, 90, 147, 58, 57, 84, 29, 19, 44, 27, 13, 28, 16, 17, 38, 21, 39, 67, 25, 24, 27, 33, 29, 30, 82, 49, 98, 164, 60, 59, 66, 57, 53, 53, 150, 92, 45, 81, 35, 39, 67, 29, 55, 78, 26, 21, 49, 29, 30, 68, 0, 255, 255, 0, 193, 0, 0, 4, 11, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 193, 0, 0, 4, 11, 7, 47, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 255, 210, 1, 93, 255, 255, 0, 111, 255, 236, 4, 76, 5, 176, 6, 6, 0, 11, 0, 0, 255, 255, 0, 151, 0, 0, 4, 200, 5, 176, 6, 6, 2, 113, 0, 0, 255, 255, 0, 129, 0, 0, 4, 235, 7, 19, 6, 38, 0, 12, 0, 0, 0, 7, 1, 91, 0, 95, 1, 77, 255, 255, 0, 2, 255, 235, 4, 213, 7, 56, 6, 38, 1, 168, 0, 0, 0, 7, 1, 95, 0, 32, 1, 150, 255, 255, 0, 28, 0, 0, 4, 204, 5, 176, 6, 6, 0, 2, 0, 0, 255, 255, 0, 129, 0, 0, 4, 154, 5, 176, 6, 6, 0, 3, 0, 0, 255, 255, 0, 141, 0, 0, 4, 59, 5, 176, 6, 6, 1, 123, 0, 0, 255, 255, 0, 147, 0, 0, 4, 104, 5, 176, 6, 6, 0, 6, 0, 0, 255, 255, 0, 111, 0, 0, 4, 63, 7, 43, 6, 38, 1, 166, 0, 0, 0, 7, 1, 95, 255, 214, 1, 137, 255, 255, 0, 127, 0, 0, 4, 96, 5, 176, 6, 6, 0, 14, 0, 0, 255, 255, 0, 123, 0, 0, 4, 68, 5, 176, 6, 6, 0, 9, 0, 0, 255, 255, 0, 80, 255, 236, 4, 123, 5, 196, 6, 6, 0, 16, 0, 0, 255, 255, 0, 121, 0, 0, 4, 71, 5, 176, 6, 6, 1, 128, 0, 0, 255, 255, 0, 149, 0, 0, 4, 142, 5, 176, 6, 6, 0, 17, 0, 0, 255, 255, 0, 79, 255, 235, 4, 119, 5, 197, 6, 6, 0, 4, 0, 0, 255, 255, 0, 27, 0, 0, 4, 177, 5, 176, 6, 6, 0, 21, 0, 0, 255, 255, 0, 65, 0, 0, 4, 238, 5, 176, 6, 6, 1, 130, 0, 0, 255, 255, 0, 30, 0, 0, 4, 199, 5, 176, 6, 6, 0, 25, 0, 0, 255, 255, 0, 115, 255, 236, 4, 75, 4, 78, 6, 6, 0, 28, 0, 0, 255, 255, 0, 112, 255, 236, 4, 104, 4, 78, 6, 6, 0, 32, 0, 0, 255, 255, 0, 121, 0, 0, 4, 60, 5, 246, 6, 38, 1, 185, 0, 0, 0, 6, 1, 95, 216, 84, 255, 255, 0, 103, 255, 235, 4, 100, 4, 78, 6, 6, 0, 42, 0, 0, 255, 255, 0, 145, 254, 96, 4, 89, 4, 78, 6, 6, 0, 43, 0, 0, 0, 1, 0, 117, 255, 235, 4, 60, 4, 78, 0, 51, 0, 0, 101, 34, 38, 39, 38, 38, 53, 53, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 33, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 39, 33, 22, 6, 7, 6, 6, 2, 108, 67, 87, 25, 26, 20, 21, 26, 25, 86, 66, 45, 76, 27, 27, 28, 2, 1, 6, 2, 68, 61, 62, 170, 100, 125, 189, 64, 64, 64, 65, 64, 63, 190, 126, 93, 167, 63, 63, 73, 2, 254, 250, 2, 31, 28, 28, 74, 202, 54, 45, 44, 117, 63, 30, 62, 116, 45, 45, 54, 31, 26, 26, 72, 40, 96, 155, 55, 54, 60, 86, 74, 74, 199, 114, 30, 114, 199, 74, 74, 85, 59, 52, 52, 144, 84, 38, 62, 22, 22, 24, 255, 255, 0, 52, 254, 75, 4, 205, 4, 58, 6, 6, 0, 52, 0, 0, 255, 255, 0, 89, 0, 0, 4, 162, 4, 58, 6, 6, 0, 51, 0, 0, 255, 255, 0, 112, 255, 236, 4, 104, 5, 238, 6, 38, 0, 32, 0, 0, 0, 6, 1, 97, 211, 28, 255, 255, 0, 143, 0, 0, 4, 50, 5, 212, 6, 38, 1, 181, 0, 0, 0, 6, 1, 91, 117, 14, 255, 255, 0, 122, 255, 235, 4, 85, 4, 78, 6, 6, 0, 46, 0, 0, 255, 255, 0, 215, 0, 0, 4, 73, 5, 227, 6, 6, 0, 36, 0, 0, 255, 255, 0, 199, 0, 0, 4, 90, 5, 211, 6, 38, 1, 109, 0, 0, 0, 6, 1, 97, 20, 1, 255, 255, 0, 223, 254, 75, 3, 113, 5, 227, 6, 6, 0, 37, 0, 0, 255, 255, 0, 133, 0, 0, 4, 204, 5, 212, 6, 38, 1, 186, 0, 0, 0, 6, 1, 91, 75, 14, 255, 255, 0, 52, 254, 75, 4, 205, 5, 234, 6, 38, 0, 52, 0, 0, 0, 6, 1, 95, 13, 72, 255, 255, 0, 59, 255, 241, 4, 159, 5, 176, 4, 39, 0, 91, 254, 119, 0, 0, 0, 7, 0, 91, 1, 151, 0, 0, 255, 255, 0, 226, 254, 75, 4, 93, 5, 224, 6, 38, 1, 113, 0, 0, 0, 6, 1, 100, 101, 243, 255, 255, 1, 210, 3, 228, 3, 8, 6, 24, 6, 6, 0, 109, 0, 0, 255, 255, 0, 127, 0, 0, 4, 96, 7, 31, 6, 38, 0, 14, 0, 0, 0, 7, 1, 91, 0, 114, 1, 89, 255, 255, 0, 75, 0, 0, 4, 120, 5, 221, 6, 38, 0, 40, 0, 0, 0, 7, 1, 91, 0, 151, 0, 23, 255, 255, 0, 28, 254, 147, 4, 204, 5, 176, 6, 38, 0, 2, 0, 0, 0, 6, 1, 114, 1, 5, 255, 255, 0, 115, 254, 155, 4, 75, 4, 78, 6, 38, 0, 28, 0, 0, 0, 6, 1, 114, 189, 13, 255, 255, 255, 76, 255, 236, 4, 123, 6, 84, 6, 38, 0, 16, 0, 0, 0, 7, 2, 108, 253, 88, 0, 144, 255, 255, 0, 147, 0, 0, 4, 104, 7, 25, 6, 38, 0, 6, 0, 0, 0, 7, 1, 90, 255, 117, 1, 83, 255, 255, 0, 111, 0, 0, 4, 63, 7, 12, 6, 38, 1, 166, 0, 0, 0, 7, 1, 90, 255, 65, 1, 70, 255, 255, 0, 112, 255, 236, 4, 104, 5, 225, 6, 38, 0, 32, 0, 0, 0, 7, 1, 90, 255, 76, 0, 27, 255, 255, 0, 121, 0, 0, 4, 60, 5, 215, 6, 38, 1, 185, 0, 0, 0, 7, 1, 90, 255, 67, 0, 17, 255, 255, 0, 69, 0, 0, 4, 219, 5, 176, 6, 6, 1, 131, 0, 0, 255, 255, 0, 69, 254, 34, 4, 220, 4, 58, 6, 6, 1, 151, 0, 0, 255, 255, 0, 12, 0, 0, 5, 3, 7, 112, 6, 38, 1, 226, 0, 0, 0, 7, 1, 119, 4, 88, 1, 130, 255, 255, 0, 44, 0, 0, 4, 117, 6, 63, 6, 38, 1, 227, 0, 0, 0, 7, 1, 119, 4, 53, 0, 81, 255, 255, 0, 78, 254, 3, 4, 148, 5, 196, 6, 38, 1, 165, 0, 0, 0, 7, 2, 110, 255, 221, 255, 103, 255, 255, 0, 114, 254, 13, 4, 94, 4, 77, 6, 38, 1, 184, 0, 0, 0, 7, 2, 110, 255, 221, 255, 113, 255, 255, 0, 79, 254, 18, 4, 119, 5, 197, 6, 38, 0, 4, 0, 0, 0, 7, 2, 110, 255, 226, 255, 118, 255, 255, 0, 117, 254, 18, 4, 60, 4, 78, 6, 38, 0, 30, 0, 0, 0, 7, 2, 110, 255, 226, 255, 118, 255, 255, 0, 33, 0, 0, 4, 200, 5, 176, 6, 6, 0, 26, 0, 0, 255, 255, 0, 40, 254, 95, 4, 182, 4, 58, 6, 6, 1, 135, 0, 0, 255, 255, 0, 193, 0, 0, 4, 11, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 255, 248, 0, 0, 4, 195, 7, 56, 6, 38, 1, 164, 0, 0, 0, 7, 1, 95, 255, 245, 1, 150, 255, 255, 0, 34, 0, 0, 4, 164, 5, 246, 6, 38, 1, 183, 0, 0, 0, 6, 1, 95, 237, 84, 255, 255, 0, 193, 0, 0, 4, 11, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 28, 0, 0, 4, 204, 7, 65, 6, 38, 0, 2, 0, 0, 0, 7, 1, 95, 0, 0, 1, 159, 255, 255, 0, 115, 255, 236, 4, 75, 5, 255, 6, 38, 0, 28, 0, 0, 0, 6, 1, 95, 220, 93, 255, 255, 0, 28, 0, 0, 4, 204, 7, 47, 6, 38, 0, 2, 0, 0, 0, 7, 1, 97, 255, 243, 1, 93, 255, 255, 0, 115, 255, 236, 4, 75, 5, 237, 6, 38, 0, 28, 0, 0, 0, 6, 1, 97, 206, 27, 255, 255, 0, 48, 0, 0, 4, 153, 5, 176, 6, 6, 0, 72, 0, 0, 255, 255, 0, 46, 255, 236, 4, 170, 4, 79, 6, 6, 0, 73, 0, 0, 255, 255, 0, 147, 0, 0, 4, 104, 7, 56, 6, 38, 0, 6, 0, 0, 0, 7, 1, 95, 0, 9, 1, 150, 255, 255, 0, 112, 255, 236, 4, 104, 6, 0, 6, 38, 0, 32, 0, 0, 0, 6, 1, 95, 225, 94, 255, 255, 0, 78, 255, 234, 4, 116, 6, 248, 6, 38, 2, 16, 0, 0, 0, 7, 1, 97, 255, 241, 1, 38, 255, 255, 0, 156, 255, 236, 4, 115, 4, 79, 6, 6, 0, 81, 0, 0, 255, 255, 0, 156, 255, 236, 4, 115, 5, 238, 6, 38, 0, 81, 0, 0, 0, 6, 1, 97, 253, 28, 255, 255, 255, 248, 0, 0, 4, 195, 7, 38, 6, 38, 1, 164, 0, 0, 0, 7, 1, 97, 255, 231, 1, 84, 255, 255, 0, 34, 0, 0, 4, 164, 5, 228, 6, 38, 1, 183, 0, 0, 0, 6, 1, 97, 223, 18, 255, 255, 0, 78, 255, 236, 4, 148, 7, 46, 6, 38, 1, 165, 0, 0, 0, 7, 1, 97, 255, 231, 1, 92, 255, 255, 0, 114, 255, 236, 4, 94, 5, 236, 6, 38, 1, 184, 0, 0, 0, 6, 1, 97, 227, 26, 255, 255, 0, 111, 0, 0, 4, 63, 6, 220, 6, 38, 1, 166, 0, 0, 0, 7, 1, 94, 255, 211, 1, 44, 255, 255, 0, 121, 0, 0, 4, 60, 5, 168, 6, 38, 1, 185, 0, 0, 0, 6, 1, 94, 213, 248, 255, 255, 0, 111, 0, 0, 4, 63, 7, 25, 6, 38, 1, 166, 0, 0, 0, 7, 1, 97, 255, 200, 1, 71, 255, 255, 0, 121, 0, 0, 4, 60, 5, 228, 6, 38, 1, 185, 0, 0, 0, 6, 1, 97, 202, 18, 255, 255, 0, 80, 255, 236, 4, 123, 7, 68, 6, 38, 0, 16, 0, 0, 0, 7, 1, 97, 255, 225, 1, 114, 255, 255, 0, 103, 255, 235, 4, 100, 5, 237, 6, 38, 0, 42, 0, 0, 0, 6, 1, 97, 230, 27, 255, 255, 0, 78, 255, 236, 4, 121, 5, 196, 6, 6, 1, 224, 0, 0, 255, 255, 0, 97, 255, 235, 4, 94, 4, 78, 6, 6, 1, 225, 0, 0, 255, 255, 0, 78, 255, 236, 4, 121, 7, 37, 6, 38, 1, 224, 0, 0, 0, 7, 1, 97, 255, 232, 1, 83, 255, 255, 0, 97, 255, 235, 4, 94, 5, 247, 6, 38, 1, 225, 0, 0, 0, 6, 1, 97, 210, 37, 255, 255, 0, 32, 255, 236, 4, 62, 7, 46, 6, 38, 1, 176, 0, 0, 0, 7, 1, 97, 255, 174, 1, 92, 255, 255, 0, 111, 255, 236, 4, 84, 5, 237, 6, 38, 1, 200, 0, 0, 0, 6, 1, 97, 212, 27, 255, 255, 0, 2, 255, 235, 4, 213, 6, 233, 6, 38, 1, 168, 0, 0, 0, 7, 1, 94, 0, 29, 1, 57, 255, 255, 0, 52, 254, 75, 4, 205, 5, 156, 6, 38, 0, 52, 0, 0, 0, 6, 1, 94, 10, 236, 255, 255, 0, 2, 255, 235, 4, 213, 7, 38, 6, 38, 1, 168, 0, 0, 0, 7, 1, 97, 0, 18, 1, 84, 255, 255, 0, 52, 254, 75, 4, 205, 5, 216, 6, 38, 0, 52, 0, 0, 0, 6, 1, 97, 0, 6, 255, 255, 0, 2, 255, 235, 4, 213, 7, 66, 6, 38, 1, 168, 0, 0, 0, 7, 1, 99, 0, 174, 1, 84, 255, 255, 0, 52, 254, 75, 4, 205, 5, 244, 6, 38, 0, 52, 0, 0, 0, 7, 1, 99, 0, 155, 0, 6, 255, 255, 0, 157, 0, 0, 4, 95, 7, 38, 6, 38, 1, 170, 0, 0, 0, 7, 1, 97, 255, 192, 1, 84, 255, 255, 0, 124, 0, 0, 4, 97, 5, 228, 6, 38, 1, 194, 0, 0, 0, 6, 1, 97, 27, 18, 255, 255, 0, 74, 0, 0, 4, 128, 7, 47, 6, 38, 1, 174, 0, 0, 0, 7, 1, 97, 255, 188, 1, 93, 255, 255, 0, 99, 0, 0, 4, 124, 5, 216, 6, 38, 1, 198, 0, 0, 0, 6, 1, 97, 24, 6, 255, 255, 0, 30, 254, 75, 5, 80, 5, 176, 6, 38, 0, 25, 0, 0, 0, 7, 2, 111, 2, 14, 0, 0, 255, 255, 0, 89, 254, 75, 4, 255, 4, 58, 6, 38, 0, 51, 0, 0, 0, 7, 2, 111, 1, 189, 0, 0, 255, 255, 0, 112, 255, 236, 4, 56, 6, 0, 6, 6, 0, 31, 0, 0, 255, 255, 0, 39, 254, 75, 5, 99, 5, 176, 6, 38, 1, 167, 0, 0, 0, 7, 2, 111, 2, 33, 0, 0, 255, 255, 0, 34, 254, 75, 5, 81, 4, 58, 6, 38, 1, 187, 0, 0, 0, 7, 2, 111, 2, 15, 0, 0, 255, 255, 0, 28, 254, 153, 4, 204, 5, 176, 6, 38, 0, 2, 0, 0, 0, 7, 1, 101, 4, 196, 0, 5, 255, 255, 0, 115, 254, 161, 4, 75, 4, 78, 6, 38, 0, 28, 0, 0, 0, 7, 1, 101, 4, 127, 0, 13, 255, 255, 0, 28, 0, 0, 4, 204, 7, 199, 6, 38, 0, 2, 0, 0, 0, 7, 1, 118, 4, 216, 1, 66, 255, 255, 0, 115, 255, 236, 4, 75, 6, 133, 6, 38, 0, 28, 0, 0, 0, 7, 1, 118, 4, 179, 0, 0, 255, 255, 0, 28, 0, 0, 5, 28, 7, 227, 6, 38, 0, 2, 0, 0, 0, 7, 2, 76, 255, 241, 1, 94, 255, 255, 0, 115, 255, 236, 4, 247, 6, 161, 6, 38, 0, 28, 0, 0, 0, 6, 2, 76, 204, 28, 255, 255, 255, 210, 0, 0, 4, 204, 7, 210, 6, 38, 0, 2, 0, 0, 0, 7, 2, 75, 255, 220, 1, 65, 255, 255, 255, 173, 255, 236, 4, 75, 6, 145, 6, 38, 0, 28, 0, 0, 0, 6, 2, 75, 183, 0, 255, 255, 0, 28, 0, 0, 4, 204, 7, 240, 6, 38, 0, 2, 0, 0, 0, 7, 2, 74, 255, 242, 1, 61, 255, 255, 0, 115, 255, 236, 4, 139, 6, 175, 6, 38, 0, 28, 0, 0, 0, 6, 2, 74, 205, 252, 255, 255, 0, 28, 0, 0, 4, 204, 8, 44, 6, 38, 0, 2, 0, 0, 0, 7, 2, 73, 255, 232, 1, 59, 255, 255, 0, 115, 255, 236, 4, 75, 6, 235, 6, 38, 0, 28, 0, 0, 0, 6, 2, 73, 195, 250, 255, 255, 0, 28, 254, 153, 4, 204, 7, 73, 6, 38, 0, 2, 0, 0, 0, 39, 1, 92, 0, 134, 1, 93, 0, 7, 1, 101, 4, 196, 0, 5, 255, 255, 0, 115, 254, 161, 4, 75, 6, 7, 6, 38, 0, 28, 0, 0, 0, 38, 1, 92, 97, 27, 0, 7, 1, 101, 4, 127, 0, 13, 255, 255, 0, 28, 0, 0, 4, 204, 7, 189, 6, 38, 0, 2, 0, 0, 0, 7, 2, 105, 255, 245, 1, 76, 255, 255, 0, 115, 255, 236, 4, 75, 6, 123, 6, 38, 0, 28, 0, 0, 0, 6, 2, 105, 208, 10, 255, 255, 0, 28, 0, 0, 4, 204, 8, 28, 6, 38, 0, 2, 0, 0, 0, 7, 2, 77, 255, 252, 1, 171, 255, 255, 0, 115, 255, 236, 4, 75, 6, 218, 6, 38, 0, 28, 0, 0, 0, 6, 2, 77, 215, 105, 255, 255, 0, 28, 0, 0, 4, 204, 8, 51, 6, 38, 0, 2, 0, 0, 0, 7, 2, 104, 255, 224, 1, 61, 255, 255, 0, 115, 255, 236, 4, 75, 6, 242, 6, 38, 0, 28, 0, 0, 0, 6, 2, 104, 187, 252, 255, 255, 0, 28, 0, 0, 4, 204, 8, 35, 6, 38, 0, 2, 0, 0, 0, 7, 2, 109, 255, 198, 1, 65, 255, 255, 0, 115, 255, 236, 4, 75, 6, 226, 6, 38, 0, 28, 0, 0, 0, 6, 2, 109, 161, 0, 255, 255, 0, 28, 254, 153, 4, 204, 7, 65, 6, 38, 0, 2, 0, 0, 0, 39, 1, 95, 0, 0, 1, 159, 0, 7, 1, 101, 4, 196, 0, 5, 255, 255, 0, 115, 254, 161, 4, 75, 5, 255, 6, 38, 0, 28, 0, 0, 0, 38, 1, 95, 220, 93, 0, 7, 1, 101, 4, 127, 0, 13, 255, 255, 0, 147, 254, 158, 4, 104, 5, 176, 6, 38, 0, 6, 0, 0, 0, 7, 1, 101, 4, 220, 0, 10, 255, 255, 0, 112, 254, 148, 4, 104, 4, 78, 6, 38, 0, 32, 0, 0, 0, 7, 1, 101, 4, 211, 0, 0, 255, 255, 0, 147, 0, 0, 4, 104, 7, 190, 6, 38, 0, 6, 0, 0, 0, 7, 1, 118, 4, 225, 1, 57, 255, 255, 0, 112, 255, 236, 4, 104, 6, 134, 6, 38, 0, 32, 0, 0, 0, 7, 1, 118, 4, 184, 0, 1, 255, 255, 0, 147, 0, 0, 4, 104, 7, 91, 6, 38, 0, 6, 0, 0, 0, 7, 1, 93, 0, 150, 1, 85, 255, 255, 0, 112, 255, 236, 4, 104, 6, 35, 6, 38, 0, 32, 0, 0, 0, 6, 1, 93, 109, 29, 255, 255, 0, 147, 0, 0, 5, 37, 7, 218, 6, 38, 0, 6, 0, 0, 0, 7, 2, 76, 255, 250, 1, 85, 255, 255, 0, 112, 255, 236, 4, 252, 6, 162, 6, 38, 0, 32, 0, 0, 0, 6, 2, 76, 209, 29, 255, 255, 255, 219, 0, 0, 4, 104, 7, 201, 6, 38, 0, 6, 0, 0, 0, 7, 2, 75, 255, 229, 1, 56, 255, 255, 255, 178, 255, 236, 4, 104, 6, 145, 6, 38, 0, 32, 0, 0, 0, 6, 2, 75, 188, 0, 255, 255, 0, 147, 0, 0, 4, 185, 7, 231, 6, 38, 0, 6, 0, 0, 0, 7, 2, 74, 255, 251, 1, 52, 255, 255, 0, 112, 255, 236, 4, 144, 6, 176, 6, 38, 0, 32, 0, 0, 0, 6, 2, 74, 210, 253, 255, 255, 0, 147, 0, 0, 4, 104, 8, 35, 6, 38, 0, 6, 0, 0, 0, 7, 2, 73, 255, 241, 1, 50, 255, 255, 0, 112, 255, 236, 4, 104, 6, 236, 6, 38, 0, 32, 0, 0, 0, 6, 2, 73, 200, 251, 255, 255, 0, 147, 254, 158, 4, 104, 7, 64, 6, 38, 0, 6, 0, 0, 0, 39, 1, 92, 0, 143, 1, 84, 0, 7, 1, 101, 4, 220, 0, 10, 255, 255, 0, 112, 254, 148, 4, 104, 6, 8, 6, 38, 0, 32, 0, 0, 0, 38, 1, 92, 102, 28, 0, 7, 1, 101, 4, 211, 0, 0, 255, 255, 0, 193, 0, 0, 4, 11, 7, 199, 6, 38, 0, 10, 0, 0, 0, 7, 1, 118, 4, 183, 1, 66, 255, 255, 0, 199, 0, 0, 4, 90, 6, 108, 6, 38, 1, 109, 0, 0, 0, 7, 1, 118, 4, 250, 255, 231, 255, 255, 0, 193, 254, 158, 4, 11, 5, 176, 6, 38, 0, 10, 0, 0, 0, 7, 1, 101, 4, 175, 0, 10, 255, 255, 0, 215, 254, 158, 4, 73, 5, 227, 6, 38, 0, 36, 0, 0, 0, 7, 1, 101, 4, 239, 0, 10, 255, 255, 0, 80, 254, 139, 4, 123, 5, 196, 6, 38, 0, 16, 0, 0, 0, 7, 1, 101, 4, 194, 255, 247, 255, 255, 0, 103, 254, 134, 4, 100, 4, 78, 6, 38, 0, 42, 0, 0, 0, 7, 1, 101, 4, 189, 255, 242, 255, 255, 0, 80, 255, 236, 4, 123, 7, 220, 6, 38, 0, 16, 0, 0, 0, 7, 1, 118, 4, 198, 1, 87, 255, 255, 0, 103, 255, 235, 4, 100, 6, 133, 6, 38, 0, 42, 0, 0, 0, 7, 1, 118, 4, 203, 0, 0, 255, 255, 0, 80, 255, 236, 5, 10, 7, 248, 6, 38, 0, 16, 0, 0, 0, 7, 2, 76, 255, 223, 1, 115, 255, 255, 0, 103, 255, 235, 5, 15, 6, 161, 6, 38, 0, 42, 0, 0, 0, 6, 2, 76, 228, 28, 255, 255, 255, 192, 255, 236, 4, 123, 7, 231, 6, 38, 0, 16, 0, 0, 0, 7, 2, 75, 255, 202, 1, 86, 255, 255, 255, 197, 255, 235, 4, 100, 6, 145, 6, 38, 0, 42, 0, 0, 0, 6, 2, 75, 207, 0, 255, 255, 0, 80, 255, 236, 4, 158, 8, 5, 6, 38, 0, 16, 0, 0, 0, 7, 2, 74, 255, 224, 1, 82, 255, 255, 0, 103, 255, 235, 4, 163, 6, 175, 6, 38, 0, 42, 0, 0, 0, 6, 2, 74, 229, 252, 255, 255, 0, 80, 255, 236, 4, 123, 8, 65, 6, 38, 0, 16, 0, 0, 0, 7, 2, 73, 255, 214, 1, 80, 255, 255, 0, 103, 255, 235, 4, 100, 6, 235, 6, 38, 0, 42, 0, 0, 0, 6, 2, 73, 219, 250, 255, 255, 0, 80, 254, 139, 4, 123, 7, 94, 6, 38, 0, 16, 0, 0, 0, 39, 1, 92, 0, 116, 1, 114, 0, 7, 1, 101, 4, 194, 255, 247, 255, 255, 0, 103, 254, 134, 4, 100, 6, 7, 6, 38, 0, 42, 0, 0, 0, 38, 1, 92, 121, 27, 0, 7, 1, 101, 4, 189, 255, 242, 255, 255, 0, 93, 255, 236, 4, 224, 7, 39, 6, 38, 0, 216, 0, 0, 0, 7, 1, 91, 0, 127, 1, 97, 255, 255, 0, 95, 255, 235, 4, 166, 5, 221, 6, 38, 1, 53, 0, 0, 0, 6, 1, 91, 111, 23, 255, 255, 0, 93, 255, 236, 4, 224, 7, 42, 6, 38, 0, 216, 0, 0, 0, 7, 1, 90, 255, 101, 1, 100, 255, 255, 0, 95, 255, 235, 4, 166, 5, 224, 6, 38, 1, 53, 0, 0, 0, 7, 1, 90, 255, 85, 0, 26, 255, 255, 0, 93, 255, 236, 4, 224, 7, 207, 6, 38, 0, 216, 0, 0, 0, 7, 1, 118, 4, 209, 1, 74, 255, 255, 0, 95, 255, 235, 4, 166, 6, 133, 6, 38, 1, 53, 0, 0, 0, 7, 1, 118, 4, 193, 0, 0, 255, 255, 0, 93, 255, 236, 4, 224, 7, 108, 6, 38, 0, 216, 0, 0, 0, 7, 1, 93, 0, 134, 1, 102, 255, 255, 0, 95, 255, 235, 4, 166, 6, 34, 6, 38, 1, 53, 0, 0, 0, 6, 1, 93, 118, 28, 255, 255, 0, 93, 254, 148, 4, 224, 5, 223, 6, 38, 0, 216, 0, 0, 0, 7, 1, 101, 4, 180, 0, 0, 255, 255, 0, 95, 254, 139, 4, 166, 4, 155, 6, 38, 1, 53, 0, 0, 0, 7, 1, 101, 4, 185, 255, 247, 255, 255, 0, 126, 254, 141, 4, 78, 5, 176, 6, 38, 0, 22, 0, 0, 0, 7, 1, 101, 4, 187, 255, 249, 255, 255, 0, 150, 254, 148, 4, 75, 4, 58, 6, 38, 0, 48, 0, 0, 0, 7, 1, 101, 4, 93, 0, 0, 255, 255, 0, 126, 255, 236, 4, 78, 7, 196, 6, 38, 0, 22, 0, 0, 0, 7, 1, 118, 4, 206, 1, 63, 255, 255, 0, 150, 255, 235, 4, 75, 6, 113, 6, 38, 0, 48, 0, 0, 0, 7, 1, 118, 4, 205, 255, 236, 255, 255, 0, 133, 255, 236, 5, 183, 7, 31, 6, 38, 0, 236, 0, 0, 0, 7, 1, 91, 0, 133, 1, 89, 255, 255, 0, 118, 255, 235, 5, 95, 5, 200, 6, 38, 1, 73, 0, 0, 0, 6, 1, 91, 115, 2, 255, 255, 0, 133, 255, 236, 5, 183, 7, 34, 6, 38, 0, 236, 0, 0, 0, 7, 1, 90, 255, 107, 1, 92, 255, 255, 0, 118, 255, 235, 5, 95, 5, 203, 6, 38, 1, 73, 0, 0, 0, 7, 1, 90, 255, 89, 0, 5, 255, 255, 0, 133, 255, 236, 5, 183, 7, 199, 6, 38, 0, 236, 0, 0, 0, 7, 1, 118, 4, 215, 1, 66, 255, 255, 0, 118, 255, 235, 5, 95, 6, 113, 6, 38, 1, 73, 0, 0, 0, 7, 1, 118, 4, 197, 255, 236, 255, 255, 0, 133, 255, 236, 5, 183, 7, 100, 6, 38, 0, 236, 0, 0, 0, 7, 1, 93, 0, 140, 1, 94, 255, 255, 0, 118, 255, 235, 5, 95, 6, 13, 6, 38, 1, 73, 0, 0, 0, 6, 1, 93, 122, 7, 255, 255, 0, 133, 254, 139, 5, 183, 5, 229, 6, 38, 0, 236, 0, 0, 0, 7, 1, 101, 4, 207, 255, 247, 255, 255, 0, 118, 254, 148, 5, 95, 4, 154, 6, 38, 1, 73, 0, 0, 0, 7, 1, 101, 4, 90, 0, 0, 255, 255, 0, 33, 254, 187, 4, 200, 5, 176, 6, 38, 0, 26, 0, 0, 0, 7, 1, 101, 4, 202, 0, 39, 255, 255, 0, 52, 254, 34, 4, 205, 4, 58, 6, 38, 0, 52, 0, 0, 0, 7, 1, 101, 5, 229, 255, 142, 255, 255, 0, 33, 0, 0, 4, 200, 7, 199, 6, 38, 0, 26, 0, 0, 0, 7, 1, 118, 4, 210, 1, 66, 255, 255, 0, 52, 254, 75, 4, 205, 6, 113, 6, 38, 0, 52, 0, 0, 0, 7, 1, 118, 4, 229, 255, 236, 255, 255, 0, 33, 0, 0, 4, 200, 7, 100, 6, 38, 0, 26, 0, 0, 0, 7, 1, 93, 0, 135, 1, 94, 255, 255, 0, 52, 254, 75, 4, 205, 6, 13, 6, 38, 0, 52, 0, 0, 0, 7, 1, 93, 0, 154, 0, 7, 255, 255, 0, 97, 254, 190, 4, 210, 6, 0, 4, 38, 0, 31, 241, 0, 0, 39, 2, 106, 0, 241, 2, 60, 0, 6, 0, 102, 35, 151, 255, 255, 0, 151, 254, 157, 5, 16, 5, 176, 6, 38, 2, 113, 0, 0, 0, 7, 2, 110, 2, 0, 0, 1, 255, 255, 0, 133, 254, 156, 5, 70, 4, 58, 6, 38, 1, 186, 0, 0, 0, 7, 2, 110, 2, 54, 0, 0, 255, 255, 0, 123, 254, 156, 4, 247, 5, 176, 6, 38, 0, 9, 0, 0, 0, 7, 2, 110, 1, 231, 0, 0, 255, 255, 0, 121, 254, 156, 4, 247, 4, 58, 6, 38, 1, 189, 0, 0, 0, 7, 2, 110, 1, 231, 0, 0, 255, 255, 0, 27, 254, 156, 4, 177, 5, 176, 6, 38, 0, 21, 0, 0, 0, 7, 2, 110, 0, 134, 0, 0, 255, 255, 0, 93, 254, 156, 4, 178, 4, 58, 6, 38, 1, 191, 0, 0, 0, 7, 2, 110, 0, 189, 0, 0, 255, 255, 0, 30, 254, 156, 4, 246, 5, 176, 6, 38, 0, 25, 0, 0, 0, 7, 2, 110, 1, 230, 0, 0, 255, 255, 0, 89, 254, 156, 4, 165, 4, 58, 6, 38, 0, 51, 0, 0, 0, 7, 2, 110, 1, 149, 0, 0, 255, 255, 0, 157, 254, 156, 5, 25, 5, 176, 6, 38, 1, 170, 0, 0, 0, 7, 2, 110, 2, 9, 0, 0, 255, 255, 0, 124, 254, 156, 5, 29, 4, 58, 6, 38, 1, 194, 0, 0, 0, 7, 2, 110, 2, 13, 0, 0, 255, 255, 0, 157, 254, 156, 4, 95, 5, 176, 6, 38, 1, 170, 0, 0, 0, 7, 2, 110, 0, 140, 0, 0, 255, 255, 0, 124, 254, 156, 4, 97, 4, 58, 6, 38, 1, 194, 0, 0, 0, 7, 2, 110, 0, 143, 0, 0, 255, 255, 0, 141, 254, 156, 4, 59, 5, 176, 6, 38, 1, 123, 0, 0, 0, 7, 2, 110, 255, 81, 0, 0, 255, 255, 0, 143, 254, 156, 4, 50, 4, 58, 6, 38, 1, 181, 0, 0, 0, 7, 2, 110, 255, 27, 0, 0, 255, 255, 255, 248, 254, 156, 5, 62, 5, 176, 6, 38, 1, 164, 0, 0, 0, 7, 2, 110, 2, 46, 0, 0, 255, 255, 0, 34, 254, 156, 5, 54, 4, 58, 6, 38, 1, 183, 0, 0, 0, 7, 2, 110, 2, 38, 0, 0, 255, 255, 255, 213, 254, 16, 4, 140, 5, 195, 6, 38, 2, 10, 0, 0, 0, 7, 2, 110, 0, 96, 255, 116, 255, 255, 0, 21, 254, 19, 4, 145, 4, 78, 6, 38, 2, 11, 0, 0, 0, 7, 2, 110, 0, 104, 255, 119, 255, 255, 0, 141, 0, 0, 4, 86, 6, 0, 6, 6, 0, 35, 0, 0, 0, 2, 0, 21, 0, 0, 4, 125, 4, 58, 0, 24, 0, 39, 0, 0, 65, 53, 33, 53, 33, 21, 35, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 33, 53, 17, 33, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 33, 2, 201, 254, 215, 254, 234, 117, 117, 2, 39, 109, 172, 59, 58, 62, 62, 58, 59, 172, 109, 254, 239, 1, 17, 49, 69, 22, 22, 20, 20, 22, 22, 69, 49, 254, 239, 3, 35, 180, 99, 99, 180, 252, 221, 54, 48, 47, 131, 77, 80, 133, 48, 47, 53, 85, 254, 204, 22, 19, 19, 51, 28, 27, 48, 18, 19, 22, 0, 0, 2, 255, 211, 0, 0, 4, 93, 5, 176, 0, 24, 0, 39, 0, 0, 65, 53, 35, 53, 33, 21, 35, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 53, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 2, 135, 234, 254, 230, 176, 176, 1, 190, 126, 201, 70, 69, 74, 74, 69, 70, 201, 126, 164, 164, 66, 97, 33, 32, 31, 31, 32, 33, 97, 66, 164, 4, 66, 180, 186, 186, 180, 251, 190, 68, 61, 61, 171, 104, 102, 168, 59, 59, 65, 172, 254, 114, 35, 30, 31, 82, 47, 49, 88, 33, 33, 38, 0, 0, 2, 255, 211, 0, 0, 4, 93, 5, 176, 0, 24, 0, 39, 0, 0, 65, 53, 35, 53, 33, 21, 35, 21, 51, 17, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 35, 53, 17, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 35, 2, 135, 234, 254, 230, 176, 176, 1, 190, 126, 201, 70, 69, 74, 74, 69, 70, 201, 126, 164, 164, 66, 97, 33, 32, 31, 31, 32, 33, 97, 66, 164, 4, 66, 180, 186, 186, 180, 251, 190, 68, 61, 61, 171, 104, 102, 168, 59, 59, 65, 172, 254, 114, 35, 30, 31, 82, 47, 49, 88, 33, 33, 38, 0, 0, 1, 255, 231, 0, 0, 4, 59, 5, 176, 0, 13, 0, 0, 65, 53, 35, 17, 33, 53, 33, 17, 35, 21, 51, 17, 33, 17, 2, 155, 245, 2, 149, 252, 82, 166, 166, 1, 25, 2, 151, 180, 1, 129, 228, 253, 155, 180, 253, 105, 2, 151, 0, 1, 255, 211, 0, 0, 4, 50, 4, 58, 0, 13, 0, 0, 65, 53, 35, 53, 33, 53, 33, 17, 35, 21, 51, 17, 33, 17, 2, 135, 227, 2, 142, 252, 93, 188, 188, 1, 21, 1, 199, 180, 221, 226, 254, 65, 180, 254, 57, 1, 199, 0, 0, 1, 255, 227, 0, 0, 4, 210, 5, 176, 0, 20, 0, 0, 65, 1, 33, 1, 1, 33, 1, 35, 17, 51, 53, 35, 53, 33, 21, 35, 21, 51, 17, 33, 17, 2, 47, 1, 93, 1, 70, 254, 61, 1, 178, 254, 187, 254, 131, 69, 221, 221, 254, 231, 190, 190, 1, 25, 2, 86, 253, 170, 2, 243, 2, 189, 253, 127, 1, 66, 180, 139, 139, 180, 251, 143, 2, 86, 0, 1, 255, 211, 0, 0, 4, 182, 6, 0, 0, 20, 0, 0, 115, 33, 17, 55, 1, 33, 1, 1, 33, 1, 7, 17, 51, 53, 35, 53, 33, 21, 35, 21, 51, 154, 1, 22, 126, 1, 51, 1, 85, 254, 47, 1, 152, 254, 178, 254, 213, 84, 215, 215, 254, 234, 199, 199, 1, 74, 117, 254, 65, 2, 119, 1, 195, 254, 184, 96, 2, 38, 180, 148, 148, 180, 255, 255, 0, 111, 254, 91, 5, 32, 7, 43, 6, 38, 1, 166, 0, 0, 0, 39, 1, 95, 255, 214, 1, 137, 0, 7, 0, 95, 2, 89, 255, 241, 255, 255, 0, 121, 254, 91, 5, 30, 5, 246, 6, 38, 1, 185, 0, 0, 0, 38, 1, 95, 216, 84, 0, 7, 0, 95, 2, 87, 255, 241, 255, 255, 0, 123, 254, 91, 5, 29, 5, 176, 6, 38, 0, 9, 0, 0, 0, 7, 0, 95, 2, 86, 255, 241, 255, 255, 0, 121, 254, 91, 5, 29, 4, 58, 6, 38, 1, 189, 0, 0, 0, 7, 0, 95, 2, 86, 255, 241, 255, 255, 0, 127, 254, 91, 5, 73, 5, 176, 6, 38, 0, 14, 0, 0, 0, 7, 0, 95, 2, 130, 255, 241, 255, 255, 0, 113, 254, 91, 5, 57, 4, 58, 6, 38, 1, 188, 0, 0, 0, 7, 0, 95, 2, 114, 255, 241, 255, 255, 0, 39, 254, 91, 5, 47, 5, 176, 6, 38, 1, 167, 0, 0, 0, 7, 0, 95, 2, 104, 255, 241, 255, 255, 0, 34, 254, 91, 5, 29, 4, 58, 6, 38, 1, 187, 0, 0, 0, 7, 0, 95, 2, 86, 255, 241, 0, 1, 0, 33, 0, 0, 4, 200, 5, 176, 0, 17, 0, 0, 65, 53, 35, 1, 33, 1, 35, 1, 33, 1, 35, 21, 51, 23, 19, 33, 19, 55, 3, 198, 105, 1, 107, 254, 203, 254, 226, 2, 254, 226, 254, 204, 1, 105, 120, 206, 4, 1, 1, 24, 1, 9, 2, 11, 180, 2, 241, 253, 97, 2, 159, 253, 15, 180, 7, 253, 252, 1, 248, 19, 0, 1, 0, 40, 254, 95, 4, 182, 4, 58, 0, 17, 0, 0, 101, 53, 35, 1, 33, 1, 7, 35, 39, 1, 33, 1, 35, 21, 51, 17, 33, 17, 3, 208, 145, 1, 119, 254, 222, 254, 238, 14, 1, 15, 254, 231, 254, 221, 1, 118, 130, 199, 1, 22, 7, 180, 3, 127, 252, 251, 65, 65, 3, 5, 252, 129, 180, 254, 88, 1, 168, 0, 0, 1, 0, 30, 0, 0, 4, 199, 5, 176, 0, 17, 0, 0, 65, 53, 35, 1, 33, 1, 3, 33, 1, 35, 21, 51, 1, 33, 1, 1, 33, 1, 3, 210, 117, 1, 96, 254, 182, 254, 253, 255, 254, 184, 1, 95, 106, 119, 254, 137, 1, 76, 1, 10, 1, 11, 1, 72, 254, 136, 2, 144, 180, 2, 108, 253, 246, 2, 10, 253, 148, 180, 253, 112, 2, 18, 253, 238, 2, 144, 0, 1, 0, 89, 0, 0, 4, 162, 4, 58, 0, 17, 0, 0, 65, 53, 35, 1, 33, 3, 3, 33, 1, 35, 21, 51, 1, 33, 19, 19, 33, 1, 3, 206, 100, 1, 43, 254, 213, 238, 234, 254, 213, 1, 42, 119, 124, 254, 195, 1, 45, 247, 249, 1, 44, 254, 194, 1, 209, 180, 1, 181, 254, 174, 1, 82, 254, 75, 180, 254, 47, 1, 98, 254, 158, 1, 209, 0, 255, 255, 0, 132, 255, 236, 4, 156, 4, 77, 6, 6, 1, 137, 0, 0, 0, 1, 0, 57, 2, 89, 4, 151, 3, 60, 0, 3, 0, 0, 65, 53, 33, 21, 4, 151, 251, 162, 2, 89, 227, 227, 0, 1, 0, 0, 3, 231, 0, 177, 0, 22, 0, 135, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 29, 0, 119, 0, 216, 1, 28, 1, 53, 1, 75, 1, 178, 1, 203, 1, 227, 2, 19, 2, 51, 2, 67, 2, 100, 2, 125, 2, 240, 3, 36, 3, 157, 3, 217, 4, 72, 4, 91, 4, 143, 4, 166, 4, 203, 4, 236, 5, 6, 5, 29, 5, 137, 5, 242, 6, 65, 6, 134, 6, 210, 7, 6, 7, 125, 7, 178, 7, 225, 8, 35, 8, 67, 8, 88, 8, 176, 8, 227, 9, 49, 9, 136, 9, 223, 10, 7, 10, 117, 10, 174, 10, 221, 10, 244, 11, 24, 11, 56, 11, 107, 11, 130, 11, 222, 11, 240, 12, 52, 12, 164, 12, 197, 13, 16, 13, 115, 13, 134, 14, 21, 14, 120, 14, 138, 14, 205, 15, 60, 15, 167, 15, 245, 16, 77, 16, 128, 17, 15, 17, 51, 17, 240, 18, 61, 18, 235, 19, 88, 19, 142, 19, 230, 20, 5, 20, 124, 20, 212, 21, 74, 21, 161, 21, 239, 22, 29, 22, 100, 22, 112, 22, 200, 23, 35, 23, 127, 23, 158, 23, 189, 24, 27, 24, 122, 24, 144, 24, 166, 24, 178, 24, 190, 24, 206, 24, 229, 25, 16, 25, 29, 25, 42, 25, 55, 25, 68, 25, 83, 25, 107, 25, 133, 25, 159, 25, 184, 25, 197, 25, 210, 25, 255, 26, 7, 26, 15, 26, 81, 26, 147, 26, 166, 26, 184, 26, 249, 27, 75, 27, 95, 27, 114, 27, 139, 27, 152, 27, 183, 27, 216, 28, 6, 28, 26, 28, 61, 28, 142, 28, 165, 28, 188, 28, 217, 28, 247, 29, 8, 29, 24, 29, 40, 29, 56, 29, 215, 30, 191, 30, 205, 30, 225, 30, 250, 31, 29, 31, 173, 32, 26, 32, 65, 32, 139, 32, 175, 32, 230, 33, 126, 34, 48, 34, 255, 35, 29, 35, 51, 35, 129, 35, 141, 35, 153, 35, 165, 35, 177, 35, 189, 35, 201, 36, 12, 36, 24, 36, 36, 36, 48, 36, 60, 36, 72, 36, 84, 36, 95, 36, 107, 36, 119, 36, 178, 36, 190, 36, 202, 36, 214, 36, 226, 36, 238, 36, 250, 37, 6, 37, 18, 37, 70, 37, 134, 37, 193, 37, 205, 37, 217, 37, 229, 38, 14, 38, 26, 38, 38, 38, 50, 38, 62, 38, 74, 38, 86, 38, 98, 38, 110, 38, 173, 38, 185, 38, 197, 38, 209, 38, 221, 38, 233, 38, 245, 39, 1, 39, 29, 39, 41, 39, 53, 39, 65, 39, 77, 39, 89, 39, 101, 39, 113, 39, 125, 39, 137, 39, 239, 39, 251, 40, 7, 40, 119, 40, 131, 40, 143, 40, 155, 40, 167, 40, 179, 40, 191, 40, 203, 40, 214, 40, 226, 40, 255, 41, 11, 41, 23, 41, 35, 41, 47, 41, 59, 41, 71, 41, 142, 41, 154, 41, 166, 42, 3, 42, 15, 42, 27, 42, 39, 42, 51, 42, 63, 42, 75, 42, 87, 42, 99, 42, 111, 42, 123, 42, 135, 42, 147, 42, 159, 42, 170, 42, 181, 42, 192, 42, 203, 42, 215, 42, 226, 43, 116, 43, 128, 43, 139, 43, 150, 43, 162, 43, 174, 43, 185, 43, 196, 43, 208, 43, 220, 44, 59, 44, 70, 44, 81, 44, 92, 44, 103, 44, 114, 44, 125, 44, 137, 44, 148, 44, 225, 45, 85, 45, 96, 45, 107, 45, 119, 45, 181, 45, 193, 45, 205, 45, 216, 45, 228, 45, 239, 45, 250, 46, 5, 46, 82, 46, 94, 46, 106, 46, 118, 46, 130, 46, 142, 46, 154, 46, 166, 46, 200, 46, 211, 46, 222, 46, 234, 46, 245, 47, 0, 47, 11, 47, 22, 47, 33, 47, 45, 47, 141, 47, 153, 47, 164, 48, 10, 48, 21, 48, 33, 48, 44, 48, 55, 48, 67, 48, 78, 48, 89, 48, 100, 48, 111, 48, 175, 48, 187, 48, 198, 48, 209, 48, 220, 48, 231, 48, 243, 49, 50, 49, 62, 49, 73, 49, 158, 49, 170, 49, 182, 49, 193, 49, 204, 49, 215, 49, 227, 49, 239, 49, 251, 50, 6, 50, 18, 50, 30, 50, 41, 50, 52, 50, 68, 50, 83, 50, 104, 50, 164, 50, 177, 50, 220, 50, 243, 51, 26, 51, 100, 51, 123, 51, 143, 51, 165, 51, 211, 52, 2, 52, 23, 52, 23, 52, 36, 52, 88, 52, 101, 52, 122, 52, 170, 53, 8, 53, 45, 53, 95, 53, 151, 53, 166, 53, 181, 53, 190, 53, 236, 54, 4, 54, 19, 54, 66, 54, 74, 54, 91, 54, 118, 54, 204, 54, 226, 54, 252, 55, 15, 55, 43, 55, 134, 55, 194, 56, 27, 56, 142, 57, 4, 57, 34, 57, 158, 58, 22, 58, 112, 58, 165, 58, 250, 59, 39, 59, 114, 59, 248, 60, 40, 60, 123, 60, 221, 61, 48, 61, 96, 61, 156, 62, 2, 62, 68, 62, 194, 63, 52, 63, 130, 64, 8, 64, 70, 64, 155, 64, 247, 65, 52, 65, 101, 65, 127, 65, 181, 65, 242, 66, 29, 66, 149, 66, 174, 66, 227, 67, 22, 67, 48, 67, 92, 67, 117, 67, 148, 67, 201, 68, 6, 68, 58, 68, 142, 68, 232, 69, 35, 69, 154, 69, 242, 70, 3, 70, 54, 70, 97, 70, 217, 70, 242, 71, 17, 71, 64, 71, 92, 71, 117, 71, 136, 71, 155, 71, 251, 72, 21, 72, 69, 72, 94, 72, 125, 72, 179, 72, 240, 73, 38, 73, 120, 73, 208, 74, 8, 74, 95, 74, 178, 75, 8, 75, 72, 75, 134, 75, 160, 75, 247, 76, 77, 76, 139, 77, 7, 77, 118, 77, 156, 77, 193, 77, 239, 78, 28, 78, 102, 78, 179, 79, 5, 79, 88, 79, 237, 80, 139, 81, 2, 81, 85, 81, 130, 81, 178, 82, 45, 82, 165, 83, 39, 83, 132, 84, 89, 85, 26, 85, 133, 85, 230, 86, 41, 86, 111, 86, 155, 86, 175, 86, 232, 86, 249, 87, 10, 87, 234, 88, 62, 88, 124, 88, 221, 88, 241, 89, 5, 89, 59, 89, 114, 89, 152, 89, 189, 89, 222, 89, 255, 90, 28, 90, 57, 90, 134, 90, 191, 91, 88, 91, 248, 92, 22, 92, 52, 92, 113, 92, 168, 92, 212, 93, 77, 93, 171, 93, 235, 94, 39, 94, 89, 94, 139, 94, 252, 95, 68, 95, 140, 95, 155, 95, 171, 95, 223, 96, 48, 96, 222, 97, 90, 97, 211, 98, 57, 98, 165, 99, 30, 99, 147, 99, 238, 100, 69, 100, 163, 100, 246, 101, 71, 101, 138, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 101, 249, 102, 5, 102, 31, 102, 44, 102, 74, 102, 126, 102, 205, 103, 107, 103, 204, 104, 48, 104, 117, 105, 25, 106, 26, 106, 242, 107, 150, 108, 4, 108, 24, 108, 52, 108, 78, 109, 31, 109, 94, 109, 130, 109, 130, 110, 84, 110, 180, 110, 252, 111, 54, 111, 81, 111, 108, 111, 158, 111, 180, 111, 211, 112, 43, 112, 121, 112, 171, 112, 195, 112, 217, 113, 45, 113, 70, 113, 94, 113, 142, 113, 174, 113, 190, 113, 218, 113, 243, 114, 66, 114, 154, 114, 214, 115, 73, 115, 92, 115, 142, 115, 168, 115, 205, 115, 237, 116, 8, 116, 31, 116, 114, 116, 164, 116, 177, 116, 241, 117, 24, 117, 102, 117, 116, 117, 154, 117, 206, 117, 237, 118, 76, 118, 84, 118, 92, 118, 104, 118, 115, 118, 127, 118, 138, 118, 150, 118, 162, 118, 174, 118, 186, 118, 198, 118, 209, 118, 220, 118, 231, 118, 243, 118, 255, 119, 10, 119, 22, 119, 33, 119, 44, 119, 55, 119, 66, 119, 78, 119, 89, 119, 100, 119, 112, 119, 123, 119, 134, 119, 145, 119, 157, 119, 169, 119, 181, 119, 192, 119, 204, 119, 216, 119, 227, 119, 238, 119, 249, 120, 4, 120, 16, 120, 28, 120, 40, 120, 51, 120, 62, 120, 73, 120, 84, 120, 153, 120, 164, 120, 175, 120, 186, 120, 198, 120, 209, 120, 220, 120, 231, 121, 38, 121, 49, 121, 60, 121, 71, 121, 83, 121, 95, 121, 107, 121, 118, 121, 129, 121, 192, 121, 203, 121, 215, 121, 227, 121, 239, 121, 251, 122, 7, 122, 19, 122, 30, 122, 42, 122, 53, 122, 64, 122, 75, 122, 86, 122, 97, 122, 109, 122, 120, 122, 132, 122, 144, 122, 155, 122, 166, 122, 177, 122, 189, 122, 200, 122, 211, 122, 223, 122, 235, 123, 66, 123, 78, 123, 89, 123, 100, 123, 111, 123, 122, 123, 133, 123, 145, 123, 157, 123, 169, 123, 181, 123, 193, 123, 205, 123, 217, 123, 228, 123, 236, 123, 244, 123, 252, 124, 4, 124, 12, 124, 20, 124, 28, 124, 36, 124, 44, 124, 52, 124, 60, 124, 68, 124, 76, 124, 84, 124, 96, 124, 108, 124, 119, 124, 130, 124, 141, 124, 152, 124, 163, 124, 171, 124, 179, 124, 187, 124, 195, 124, 203, 124, 214, 124, 225, 124, 236, 124, 247, 125, 2, 125, 14, 125, 26, 125, 146, 125, 154, 125, 166, 125, 174, 125, 182, 125, 194, 125, 206, 125, 214, 125, 222, 125, 230, 125, 238, 125, 250, 126, 2, 126, 10, 126, 18, 126, 26, 126, 34, 126, 42, 126, 50, 126, 58, 126, 66, 126, 74, 126, 82, 126, 93, 126, 101, 126, 109, 126, 188, 126, 196, 126, 204, 126, 215, 126, 226, 126, 234, 126, 242, 126, 253, 127, 5, 127, 16, 127, 27, 127, 40, 127, 51, 127, 59, 127, 71, 127, 83, 127, 94, 127, 105, 127, 117, 127, 129, 127, 141, 127, 153, 127, 165, 127, 173, 127, 181, 127, 193, 127, 205, 127, 217, 127, 229, 127, 241, 127, 253, 128, 5, 128, 13, 128, 21, 128, 33, 128, 44, 128, 52, 128, 64, 128, 75, 128, 87, 128, 98, 128, 106, 128, 114, 128, 126, 128, 137, 128, 149, 128, 157, 128, 168, 128, 180, 128, 191, 128, 203, 128, 214, 128, 226, 128, 237, 128, 249, 129, 4, 129, 16, 129, 27, 129, 35, 129, 43, 129, 55, 129, 66, 129, 78, 129, 89, 129, 101, 129, 112, 129, 124, 129, 135, 129, 147, 129, 159, 129, 171, 129, 182, 129, 194, 129, 205, 129, 217, 129, 229, 129, 237, 129, 249, 130, 5, 130, 17, 130, 29, 130, 41, 130, 53, 130, 65, 130, 76, 130, 88, 130, 99, 130, 111, 130, 122, 130, 134, 130, 145, 130, 161, 130, 176, 130, 188, 130, 199, 130, 211, 130, 222, 130, 234, 130, 245, 131, 1, 131, 12, 131, 28, 131, 43, 131, 55, 131, 67, 131, 79, 131, 91, 131, 103, 131, 114, 131, 126, 131, 137, 131, 149, 131, 160, 131, 172, 131, 183, 131, 195, 131, 206, 131, 222, 131, 237, 131, 249, 132, 5, 132, 17, 132, 29, 132, 41, 132, 53, 132, 65, 132, 77, 132, 89, 132, 100, 132, 112, 132, 123, 132, 135, 132, 146, 132, 158, 132, 169, 132, 185, 132, 200, 132, 212, 132, 223, 132, 235, 132, 247, 133, 3, 133, 15, 133, 27, 133, 38, 133, 50, 133, 62, 133, 74, 133, 86, 133, 98, 133, 110, 133, 122, 133, 133, 133, 145, 133, 157, 133, 169, 133, 181, 133, 193, 133, 204, 133, 216, 133, 228, 133, 240, 133, 252, 134, 8, 134, 20, 134, 32, 134, 44, 134, 59, 134, 71, 134, 83, 134, 95, 134, 107, 134, 119, 134, 131, 134, 143, 134, 155, 134, 167, 134, 179, 134, 191, 134, 203, 134, 215, 134, 227, 134, 239, 134, 251, 135, 7, 135, 19, 135, 27, 135, 89, 135, 149, 135, 209, 135, 235, 136, 5, 136, 44, 136, 82, 136, 98, 136, 113, 136, 125, 136, 137, 136, 149, 136, 161, 136, 173, 136, 185, 136, 222, 137, 2, 137, 42, 137, 81, 137, 89, 137, 102, 0, 1, 0, 0, 0, 3, 0, 0, 86, 234, 239, 68, 95, 15, 60, 245, 0, 11, 8, 0, 0, 0, 0, 0, 196, 240, 17, 46, 0, 0, 0, 0, 218, 216, 63, 171, 252, 5, 253, 213, 6, 71, 8, 98, 0, 1, 0, 9, 0, 2, 0, 0, 0, 0, 0, 0, 4, 205, 0, 0, 0, 0, 0, 28, 0, 129, 0, 79, 0, 125, 0, 147, 0, 149, 0, 87, 0, 123, 0, 193, 0, 111, 0, 129, 0, 150, 0, 127, 0, 123, 0, 80, 0, 149, 0, 85, 0, 131, 0, 89, 0, 27, 0, 126, 0, 31, 0, 26, 0, 30, 0, 33, 0, 89, 0, 115, 0, 147, 0, 117, 0, 112, 0, 112, 0, 126, 0, 113, 0, 141, 0, 215, 0, 223, 0, 144, 0, 199, 0, 75, 0, 141, 0, 103, 0, 145, 0, 113, 1, 31, 0, 122, 0, 126, 0, 150, 0, 72, 0, 27, 0, 89, 0, 52, 0, 118, 0, 141, 0, 173, 0, 70, 0, 96, 0, 59, 0, 117, 0, 105, 0, 69, 0, 109, 0, 97, 1, 138, 1, 42, 1, 37, 1, 17, 1, 10, 0, 24, 0, 65, 0, 33, 0, 48, 0, 46, 0, 71, 0, 38, 0, 38, 0, 136, 0, 145, 0, 159, 0, 162, 0, 156, 0, 127, 0, 142, 0, 115, 0, 21, 0, 148, 0, 0, 0, 111, 0, 123, 0, 83, 1, 196, 1, 226, 0, 160, 0, 202, 1, 104, 1, 166, 1, 180, 1, 180, 0, 101, 1, 238, 1, 148, 0, 148, 1, 26, 0, 61, 0, 57, 1, 201, 1, 25, 1, 235, 1, 210, 1, 208, 1, 70, 1, 44, 1, 65, 1, 201, 1, 25, 1, 89, 1, 60, 1, 144, 1, 144, 1, 53, 1, 76, 1, 136, 1, 129, 0, 99, 0, 149, 0, 147, 0, 157, 0, 108, 0, 158, 0, 152, 0, 142, 0, 156, 0, 161, 0, 170, 0, 171, 0, 185, 0, 220, 0, 240, 1, 24, 0, 35, 0, 75, 2, 21, 1, 232, 0, 106, 0, 128, 0, 89, 0, 88, 0, 115, 1, 101, 0, 154, 0, 41, 0, 75, 0, 37, 0, 86, 0, 216, 0, 213, 0, 26, 0, 28, 0, 28, 0, 28, 0, 28, 0, 28, 0, 28, 0, 28, 0, 28, 0, 28, 0, 28, 0, 48, 0, 79, 0, 79, 0, 79, 0, 79, 0, 125, 255, 214, 0, 147, 0, 147, 0, 147, 0, 147, 0, 147, 0, 147, 0, 147, 0, 147, 0, 148, 0, 147, 255, 214, 0, 87, 0, 87, 0, 87, 0, 23, 0, 123, 0, 193, 0, 193, 0, 193, 0, 193, 0, 193, 0, 193, 0, 193, 0, 193, 0, 193, 0, 111, 0, 129, 0, 150, 0, 150, 0, 150, 0, 150, 0, 51, 0, 123, 0, 123, 0, 123, 0, 123, 0, 80, 0, 80, 0, 80, 0, 80, 0, 80, 0, 93, 0, 80, 0, 80, 0, 48, 0, 48, 0, 80, 0, 131, 0, 131, 0, 131, 0, 89, 0, 89, 0, 89, 0, 89, 0, 27, 0, 27, 0, 126, 0, 126, 0, 126, 0, 126, 0, 126, 0, 133, 0, 126, 0, 126, 0, 126, 0, 126, 0, 126, 0, 26, 0, 26, 0, 26, 0, 26, 0, 33, 0, 33, 0, 33, 0, 33, 0, 89, 0, 89, 0, 89, 0, 115, 0, 115, 0, 115, 0, 115, 0, 115, 0, 115, 0, 115, 0, 115, 0, 115, 0, 115, 0, 46, 0, 117, 0, 117, 0, 117, 0, 117, 0, 40, 0, 97, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 149, 0, 112, 0, 113, 0, 113, 0, 113, 255, 252, 255, 163, 0, 199, 0, 199, 0, 199, 0, 199, 0, 199, 0, 199, 0, 215, 0, 199, 0, 226, 0, 144, 0, 199, 0, 129, 0, 199, 0, 129, 0, 213, 0, 141, 0, 141, 0, 141, 0, 141, 0, 103, 0, 103, 0, 103, 0, 103, 0, 103, 0, 95, 0, 103, 0, 103, 0, 103, 0, 103, 0, 103, 1, 31, 0, 197, 1, 11, 0, 122, 0, 122, 0, 122, 0, 122, 0, 126, 0, 103, 0, 150, 0, 150, 0, 150, 0, 150, 0, 150, 0, 118, 0, 150, 0, 150, 0, 150, 0, 150, 0, 150, 0, 27, 0, 27, 0, 27, 0, 27, 0, 52, 0, 52, 0, 52, 0, 52, 0, 118, 0, 118, 0, 118, 1, 155, 1, 126, 0, 129, 0, 128, 1, 17, 1, 37, 1, 216, 1, 9, 1, 147, 0, 210, 0, 249, 253, 13, 1, 182, 1, 125, 1, 20, 0, 0, 0, 187, 0, 172, 0, 227, 0, 199, 0, 126, 0, 75, 1, 156, 0, 226, 1, 185, 252, 152, 253, 112, 252, 111, 253, 38, 251, 247, 2, 69, 1, 3, 2, 45, 0, 141, 0, 35, 0, 91, 0, 23, 0, 121, 0, 121, 0, 111, 0, 65, 0, 69, 0, 86, 0, 106, 0, 158, 0, 40, 0, 93, 0, 132, 0, 80, 0, 129, 0, 176, 0, 179, 0, 32, 0, 176, 0, 100, 0, 133, 0, 86, 0, 79, 0, 65, 0, 126, 0, 77, 0, 69, 0, 46, 0, 148, 0, 66, 255, 255, 0, 31, 0, 95, 0, 38, 0, 91, 0, 39, 0, 109, 0, 131, 0, 45, 255, 248, 0, 78, 0, 111, 0, 39, 0, 2, 0, 109, 0, 157, 0, 81, 0, 81, 0, 51, 0, 74, 0, 131, 0, 32, 0, 84, 255, 217, 0, 115, 0, 138, 0, 143, 0, 33, 0, 34, 0, 114, 0, 121, 0, 133, 0, 34, 0, 113, 0, 121, 0, 121, 0, 93, 0, 55, 0, 121, 0, 124, 0, 83, 0, 79, 0, 56, 0, 99, 0, 138, 0, 111, 0, 54, 0, 77, 255, 206, 0, 107, 0, 21, 0, 91, 255, 249, 0, 121, 0, 71, 0, 69, 0, 35, 0, 56, 0, 77, 0, 13, 0, 77, 0, 82, 0, 82, 0, 46, 0, 65, 0, 54, 0, 60, 0, 145, 0, 181, 0, 78, 0, 97, 0, 12, 0, 54, 0, 69, 0, 52, 0, 80, 0, 104, 0, 47, 0, 74, 0, 77, 0, 69, 0, 125, 0, 177, 0, 107, 253, 39, 252, 251, 253, 246, 253, 212, 254, 158, 254, 209, 0, 149, 0, 145, 0, 152, 0, 149, 0, 141, 0, 149, 0, 134, 0, 132, 0, 15, 0, 27, 0, 63, 0, 86, 0, 50, 0, 84, 0, 88, 0, 67, 0, 1, 0, 33, 0, 133, 0, 116, 0, 119, 255, 213, 0, 21, 0, 164, 0, 152, 0, 141, 0, 143, 0, 78, 0, 124, 0, 114, 0, 40, 0, 73, 0, 77, 0, 92, 0, 91, 0, 63, 0, 75, 0, 168, 0, 192, 0, 15, 0, 40, 0, 72, 0, 68, 0, 99, 0, 133, 0, 68, 0, 66, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 1, 195, 0, 239, 1, 13, 1, 43, 0, 121, 0, 53, 0, 160, 0, 119, 0, 148, 0, 97, 0, 28, 0, 27, 0, 72, 0, 111, 0, 156, 0, 37, 0, 37, 0, 56, 0, 232, 0, 130, 0, 0, 0, 87, 0, 15, 1, 32, 1, 16, 255, 246, 1, 16, 1, 43, 1, 216, 0, 22, 0, 161, 0, 84, 0, 157, 0, 160, 0, 168, 0, 94, 0, 142, 0, 202, 0, 160, 0, 154, 0, 161, 0, 120, 0, 159, 0, 104, 0, 97, 0, 147, 0, 131, 0, 84, 0, 157, 0, 45, 0, 33, 0, 64, 0, 58, 0, 153, 1, 60, 1, 44, 1, 45, 1, 193, 1, 244, 1, 92, 1, 250, 1, 66, 0, 161, 0, 151, 0, 147, 0, 0, 1, 26, 0, 79, 0, 117, 0, 87, 0, 113, 255, 102, 0, 89, 0, 122, 0, 27, 0, 126, 0, 27, 0, 84, 0, 126, 255, 170, 255, 170, 0, 84, 0, 22, 0, 22, 0, 22, 0, 22, 0, 22, 0, 22, 0, 22, 0, 84, 0, 160, 0, 160, 0, 160, 0, 160, 0, 202, 0, 202, 0, 202, 0, 202, 0, 159, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 157, 0, 157, 0, 157, 0, 157, 0, 58, 0, 22, 0, 22, 0, 22, 0, 84, 0, 84, 0, 84, 0, 80, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 94, 0, 94, 0, 94, 0, 142, 0, 202, 0, 202, 0, 202, 0, 202, 0, 202, 0, 160, 0, 154, 0, 161, 0, 161, 0, 161, 0, 161, 0, 159, 0, 159, 0, 159, 0, 104, 0, 104, 0, 104, 0, 147, 0, 147, 0, 147, 0, 131, 0, 131, 0, 131, 0, 131, 0, 84, 0, 157, 0, 157, 0, 157, 0, 157, 0, 157, 0, 157, 0, 33, 0, 58, 0, 58, 0, 153, 0, 153, 0, 153, 0, 28, 255, 152, 255, 172, 255, 172, 255, 144, 255, 122, 255, 171, 0, 179, 0, 28, 0, 129, 0, 147, 0, 89, 0, 123, 0, 193, 0, 129, 0, 127, 0, 123, 0, 80, 0, 149, 0, 27, 0, 33, 0, 30, 0, 193, 0, 33, 0, 106, 0, 132, 0, 129, 0, 179, 0, 126, 0, 159, 0, 103, 0, 172, 0, 72, 0, 89, 0, 179, 0, 126, 0, 103, 0, 126, 0, 46, 0, 147, 0, 141, 0, 89, 0, 193, 0, 193, 0, 111, 0, 151, 0, 129, 0, 2, 0, 28, 0, 129, 0, 141, 0, 147, 0, 111, 0, 127, 0, 123, 0, 80, 0, 121, 0, 149, 0, 79, 0, 27, 0, 65, 0, 30, 0, 115, 0, 112, 0, 121, 0, 103, 0, 145, 0, 117, 0, 52, 0, 89, 0, 112, 0, 143, 0, 122, 0, 215, 0, 199, 0, 223, 0, 133, 0, 52, 0, 59, 0, 226, 1, 210, 0, 127, 0, 75, 0, 28, 0, 115, 255, 76, 0, 147, 0, 111, 0, 112, 0, 121, 0, 69, 0, 69, 0, 12, 0, 44, 0, 78, 0, 114, 0, 79, 0, 117, 0, 33, 0, 40, 0, 193, 255, 248, 0, 34, 0, 193, 0, 28, 0, 115, 0, 28, 0, 115, 0, 48, 0, 46, 0, 147, 0, 112, 0, 78, 0, 156, 0, 156, 255, 248, 0, 34, 0, 78, 0, 114, 0, 111, 0, 121, 0, 111, 0, 121, 0, 80, 0, 103, 0, 78, 0, 97, 0, 78, 0, 97, 0, 32, 0, 111, 0, 2, 0, 52, 0, 2, 0, 52, 0, 2, 0, 52, 0, 157, 0, 124, 0, 74, 0, 99, 0, 30, 0, 89, 0, 112, 0, 39, 0, 34, 0, 28, 0, 115, 0, 28, 0, 115, 0, 28, 0, 115, 255, 210, 255, 173, 0, 28, 0, 115, 0, 28, 0, 115, 0, 28, 0, 115, 0, 28, 0, 115, 0, 28, 0, 115, 0, 28, 0, 115, 0, 28, 0, 115, 0, 28, 0, 115, 0, 147, 0, 112, 0, 147, 0, 112, 0, 147, 0, 112, 0, 147, 0, 112, 255, 219, 255, 178, 0, 147, 0, 112, 0, 147, 0, 112, 0, 147, 0, 112, 0, 193, 0, 199, 0, 193, 0, 215, 0, 80, 0, 103, 0, 80, 0, 103, 0, 80, 0, 103, 255, 192, 255, 197, 0, 80, 0, 103, 0, 80, 0, 103, 0, 80, 0, 103, 0, 93, 0, 95, 0, 93, 0, 95, 0, 93, 0, 95, 0, 93, 0, 95, 0, 93, 0, 95, 0, 126, 0, 150, 0, 126, 0, 150, 0, 133, 0, 118, 0, 133, 0, 118, 0, 133, 0, 118, 0, 133, 0, 118, 0, 133, 0, 118, 0, 33, 0, 52, 0, 33, 0, 52, 0, 33, 0, 52, 0, 97, 0, 151, 0, 133, 0, 123, 0, 121, 0, 27, 0, 93, 0, 30, 0, 89, 0, 157, 0, 124, 0, 157, 0, 124, 0, 141, 0, 143, 255, 248, 0, 34, 255, 213, 0, 21, 0, 141, 0, 21, 255, 211, 255, 211, 255, 231, 255, 211, 255, 227, 255, 211, 0, 111, 0, 121, 0, 123, 0, 121, 0, 127, 0, 113, 0, 39, 0, 34, 0, 33, 0, 40, 0, 30, 0, 89, 0, 132, 0, 57, 0, 1, 0, 0, 8, 98, 253, 213, 0, 0, 4, 205, 252, 5, 254, 134, 6, 71, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 205, 2, 188, 0, 5, 0, 0, 5, 154, 5, 51, 0, 0, 1, 31, 5, 154, 5, 51, 0, 0, 3, 209, 0, 102, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 224, 0, 2, 255, 16, 0, 32, 91, 0, 0, 0, 32, 0, 0, 0, 0, 71, 79, 79, 71, 0, 32, 0, 13, 255, 253, 8, 98, 253, 213, 0, 0, 8, 98, 2, 43, 32, 0, 1, 159, 79, 1, 0, 0, 4, 58, 5, 176, 0, 0, 0, 32, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 20, 0, 3, 0, 1, 0, 0, 0, 20, 0, 4, 7, 76, 0, 0, 0, 194, 0, 128, 0, 6, 0, 66, 0, 13, 0, 47, 0, 57, 0, 64, 0, 90, 0, 96, 0, 122, 0, 126, 1, 127, 1, 146, 1, 161, 1, 176, 1, 240, 1, 255, 2, 27, 2, 55, 2, 89, 2, 188, 2, 199, 2, 201, 2, 221, 2, 243, 3, 1, 3, 3, 3, 9, 3, 15, 3, 35, 3, 138, 3, 140, 3, 146, 3, 161, 3, 176, 3, 185, 3, 201, 3, 206, 3, 210, 3, 214, 4, 37, 4, 47, 4, 69, 4, 79, 4, 98, 4, 111, 4, 119, 4, 134, 4, 206, 4, 215, 4, 225, 4, 245, 5, 1, 5, 16, 5, 19, 30, 1, 30, 63, 30, 133, 30, 241, 30, 243, 30, 249, 31, 77, 32, 11, 32, 21, 32, 30, 32, 34, 32, 38, 32, 48, 32, 51, 32, 58, 32, 60, 32, 68, 32, 116, 32, 127, 32, 164, 32, 167, 32, 172, 33, 5, 33, 19, 33, 22, 33, 34, 33, 38, 33, 46, 33, 94, 34, 2, 34, 6, 34, 15, 34, 18, 34, 21, 34, 26, 34, 30, 34, 43, 34, 72, 34, 96, 34, 101, 37, 202, 246, 195, 254, 255, 255, 253, 255, 255, 0, 0, 0, 13, 0, 32, 0, 48, 0, 58, 0, 65, 0, 91, 0, 97, 0, 123, 0, 160, 1, 146, 1, 160, 1, 175, 1, 240, 1, 250, 2, 24, 2, 55, 2, 89, 2, 188, 2, 198, 2, 201, 2, 216, 2, 243, 3, 0, 3, 3, 3, 9, 3, 15, 3, 35, 3, 132, 3, 140, 3, 142, 3, 147, 3, 163, 3, 177, 3, 186, 3, 202, 3, 209, 3, 214, 4, 0, 4, 38, 4, 48, 4, 70, 4, 80, 4, 99, 4, 112, 4, 120, 4, 136, 4, 207, 4, 216, 4, 226, 4, 246, 5, 2, 5, 17, 30, 0, 30, 62, 30, 128, 30, 160, 30, 242, 30, 244, 31, 77, 32, 0, 32, 19, 32, 23, 32, 32, 32, 37, 32, 48, 32, 50, 32, 57, 32, 60, 32, 68, 32, 116, 32, 127, 32, 163, 32, 167, 32, 171, 33, 5, 33, 19, 33, 22, 33, 34, 33, 38, 33, 46, 33, 91, 34, 2, 34, 6, 34, 15, 34, 17, 34, 21, 34, 26, 34, 30, 34, 43, 34, 72, 34, 96, 34, 100, 37, 202, 246, 195, 254, 255, 255, 252, 255, 255, 1, 92, 0, 0, 0, 6, 0, 0, 255, 193, 0, 0, 255, 187, 0, 0, 0, 0, 254, 196, 0, 0, 0, 0, 1, 51, 0, 0, 0, 98, 255, 58, 253, 248, 0, 104, 0, 0, 254, 149, 0, 0, 254, 127, 254, 115, 254, 114, 254, 109, 254, 104, 254, 66, 0, 0, 255, 76, 255, 75, 0, 0, 0, 0, 253, 212, 0, 0, 255, 44, 253, 200, 253, 197, 0, 0, 253, 131, 0, 0, 253, 123, 0, 0, 253, 112, 0, 0, 253, 108, 0, 0, 254, 108, 0, 0, 254, 105, 0, 0, 253, 20, 0, 0, 229, 39, 228, 231, 0, 0, 228, 198, 0, 0, 228, 196, 227, 220, 226, 37, 0, 0, 0, 0, 0, 0, 0, 0, 224, 93, 224, 64, 224, 65, 226, 230, 224, 71, 225, 192, 225, 182, 223, 180, 223, 178, 0, 0, 225, 50, 225, 37, 225, 35, 223, 114, 224, 94, 225, 12, 224, 224, 224, 61, 223, 118, 224, 49, 0, 0, 222, 116, 224, 40, 224, 37, 224, 25, 222, 59, 222, 34, 222, 34, 220, 123, 10, 165, 3, 71, 2, 75, 0, 1, 0, 0, 0, 192, 0, 0, 0, 220, 0, 0, 0, 230, 0, 0, 0, 238, 0, 244, 0, 0, 2, 176, 2, 178, 0, 0, 2, 178, 0, 0, 0, 0, 0, 0, 0, 0, 2, 180, 0, 0, 2, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 178, 0, 0, 0, 0, 2, 186, 2, 214, 0, 0, 2, 238, 0, 0, 0, 0, 0, 0, 3, 6, 0, 0, 3, 78, 0, 0, 3, 118, 0, 0, 3, 152, 0, 0, 3, 164, 0, 0, 4, 46, 0, 0, 4, 62, 0, 0, 4, 82, 0, 0, 0, 0, 4, 82, 0, 0, 4, 90, 0, 0, 0, 0, 0, 0, 4, 86, 4, 90, 4, 104, 4, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 91, 0, 107, 0, 151, 0, 82, 0, 140, 0, 152, 0, 106, 0, 116, 0, 117, 0, 150, 0, 124, 0, 95, 0, 103, 0, 96, 0, 137, 0, 97, 0, 98, 0, 132, 0, 129, 0, 133, 0, 93, 0, 153, 0, 118, 0, 138, 0, 119, 0, 156, 0, 102, 1, 90, 0, 120, 0, 142, 0, 121, 0, 157, 2, 115, 0, 92, 0, 83, 0, 84, 0, 90, 0, 85, 0, 143, 0, 154, 1, 97, 0, 146, 0, 67, 1, 106, 0, 136, 2, 116, 0, 147, 1, 94, 0, 149, 0, 126, 0, 65, 0, 66, 1, 91, 1, 107, 0, 155, 0, 100, 1, 102, 0, 64, 0, 68, 1, 108, 0, 70, 0, 69, 0, 71, 0, 94, 0, 162, 0, 158, 0, 160, 0, 167, 0, 161, 0, 165, 0, 72, 0, 171, 0, 181, 0, 175, 0, 178, 0, 179, 0, 196, 0, 191, 0, 193, 0, 194, 0, 185, 0, 210, 0, 215, 0, 211, 0, 213, 0, 221, 0, 214, 0, 127, 0, 219, 0, 235, 0, 231, 0, 233, 0, 234, 0, 246, 0, 77, 0, 80, 1, 1, 0, 253, 0, 255, 1, 6, 1, 0, 1, 4, 0, 73, 1, 10, 1, 20, 1, 14, 1, 17, 1, 18, 1, 33, 1, 29, 1, 31, 1, 32, 0, 76, 1, 47, 1, 52, 1, 48, 1, 50, 1, 58, 1, 51, 0, 128, 1, 56, 1, 72, 1, 68, 1, 70, 1, 71, 1, 83, 0, 78, 1, 85, 0, 163, 1, 2, 0, 159, 0, 254, 0, 164, 1, 3, 0, 169, 1, 8, 0, 172, 1, 11, 2, 117, 2, 118, 0, 170, 1, 9, 0, 173, 1, 12, 0, 174, 1, 13, 0, 182, 1, 21, 0, 176, 1, 15, 0, 180, 1, 19, 0, 184, 1, 23, 0, 177, 1, 16, 0, 187, 1, 25, 0, 186, 1, 24, 2, 119, 2, 120, 0, 188, 1, 26, 0, 190, 1, 28, 0, 189, 1, 27, 0, 199, 1, 36, 0, 197, 1, 34, 0, 192, 1, 30, 0, 198, 1, 35, 0, 195, 1, 109, 1, 110, 1, 111, 0, 200, 1, 37, 0, 201, 1, 38, 0, 79, 0, 202, 1, 39, 0, 204, 1, 41, 0, 203, 1, 40, 0, 205, 1, 42, 0, 206, 1, 43, 0, 207, 1, 44, 0, 209, 1, 46, 0, 208, 1, 45, 2, 121, 0, 183, 1, 22, 0, 218, 1, 55, 0, 212, 1, 49, 0, 217, 1, 54, 0, 74, 0, 75, 0, 222, 1, 59, 0, 224, 1, 61, 0, 223, 1, 60, 0, 225, 1, 62, 0, 228, 1, 65, 0, 227, 1, 64, 0, 226, 1, 63, 2, 126, 2, 128, 0, 230, 1, 67, 0, 229, 1, 66, 0, 241, 1, 78, 0, 238, 1, 75, 0, 232, 1, 69, 0, 240, 1, 77, 0, 237, 1, 74, 0, 239, 1, 76, 0, 243, 1, 80, 0, 247, 1, 84, 0, 248, 0, 250, 1, 87, 0, 252, 1, 89, 0, 251, 1, 88, 1, 112, 0, 216, 1, 53, 0, 236, 1, 73, 0, 166, 1, 5, 0, 168, 1, 7, 0, 220, 1, 57, 1, 92, 1, 100, 1, 95, 1, 96, 1, 98, 1, 103, 1, 93, 1, 99, 1, 120, 1, 121, 2, 212, 1, 122, 2, 213, 2, 214, 2, 215, 1, 123, 1, 124, 2, 222, 2, 223, 2, 224, 1, 125, 2, 225, 2, 226, 1, 126, 2, 227, 2, 228, 1, 127, 2, 229, 1, 128, 2, 230, 1, 129, 2, 231, 2, 232, 1, 130, 2, 233, 1, 131, 1, 132, 2, 234, 2, 235, 2, 236, 2, 237, 2, 238, 2, 239, 2, 240, 2, 241, 1, 142, 2, 243, 2, 244, 1, 143, 2, 242, 1, 144, 1, 145, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 2, 245, 1, 151, 1, 152, 3, 42, 2, 251, 1, 156, 2, 252, 1, 157, 2, 253, 2, 254, 2, 255, 3, 0, 1, 158, 1, 159, 1, 160, 3, 2, 3, 43, 3, 3, 1, 161, 3, 4, 1, 162, 3, 5, 3, 6, 1, 163, 3, 7, 1, 164, 1, 165, 1, 166, 3, 8, 3, 1, 1, 167, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 1, 168, 3, 16, 3, 17, 3, 18, 1, 179, 1, 180, 1, 181, 1, 182, 3, 19, 1, 183, 1, 184, 1, 185, 3, 20, 1, 186, 1, 187, 1, 188, 1, 189, 3, 21, 1, 190, 3, 22, 3, 23, 1, 191, 3, 24, 1, 192, 3, 25, 3, 44, 3, 26, 1, 203, 3, 27, 1, 204, 3, 28, 3, 29, 3, 30, 3, 31, 1, 205, 1, 206, 1, 207, 3, 32, 3, 45, 3, 33, 1, 208, 1, 209, 1, 210, 3, 212, 3, 46, 3, 47, 1, 224, 1, 225, 1, 226, 1, 227, 3, 48, 3, 49, 1, 243, 1, 244, 3, 217, 3, 218, 3, 211, 3, 210, 1, 245, 1, 246, 1, 247, 1, 248, 3, 213, 3, 214, 1, 249, 1, 250, 3, 205, 3, 206, 3, 50, 3, 51, 3, 191, 3, 192, 1, 251, 1, 252, 3, 215, 3, 216, 1, 253, 1, 254, 3, 193, 3, 194, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 3, 52, 3, 53, 3, 195, 3, 196, 3, 54, 3, 55, 3, 225, 3, 226, 3, 197, 3, 198, 2, 5, 2, 6, 3, 199, 3, 200, 2, 7, 2, 8, 2, 9, 3, 209, 2, 10, 2, 11, 3, 207, 3, 208, 3, 56, 3, 57, 3, 58, 2, 12, 2, 13, 3, 223, 3, 224, 2, 14, 2, 15, 3, 219, 3, 220, 3, 201, 3, 202, 3, 221, 3, 222, 2, 16, 3, 69, 3, 68, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 2, 17, 2, 18, 3, 203, 3, 204, 3, 95, 3, 96, 2, 19, 2, 20, 3, 97, 3, 98, 3, 227, 3, 228, 2, 21, 3, 99, 3, 229, 3, 100, 3, 101, 0, 245, 1, 82, 0, 242, 1, 79, 0, 244, 1, 81, 0, 249, 1, 86, 0, 104, 0, 105, 3, 230, 2, 49, 0, 108, 0, 109, 0, 110, 2, 50, 0, 111, 0, 112, 0, 113, 0, 144, 0, 145, 0, 101, 2, 51, 0, 99, 3, 190, 2, 54, 2, 65, 0, 125, 184, 1, 255, 133, 176, 4, 141, 0, 0, 0, 0, 17, 0, 210, 0, 3, 0, 1, 4, 9, 0, 0, 0, 180, 0, 0, 0, 3, 0, 1, 4, 9, 0, 1, 0, 22, 0, 180, 0, 3, 0, 1, 4, 9, 0, 2, 0, 8, 0, 202, 0, 3, 0, 1, 4, 9, 0, 3, 0, 52, 0, 210, 0, 3, 0, 1, 4, 9, 0, 4, 0, 32, 1, 6, 0, 3, 0, 1, 4, 9, 0, 5, 0, 26, 1, 38, 0, 3, 0, 1, 4, 9, 0, 6, 0, 30, 1, 64, 0, 3, 0, 1, 4, 9, 0, 7, 0, 74, 1, 94, 0, 3, 0, 1, 4, 9, 0, 9, 0, 12, 1, 168, 0, 3, 0, 1, 4, 9, 0, 11, 0, 20, 1, 180, 0, 3, 0, 1, 4, 9, 0, 12, 0, 38, 1, 200, 0, 3, 0, 1, 4, 9, 0, 13, 0, 92, 1, 238, 0, 3, 0, 1, 4, 9, 0, 14, 0, 84, 2, 74, 0, 3, 0, 1, 4, 9, 1, 0, 0, 12, 2, 158, 0, 3, 0, 1, 4, 9, 1, 11, 0, 12, 2, 170, 0, 3, 0, 1, 4, 9, 1, 16, 0, 8, 0, 202, 0, 3, 0, 1, 4, 9, 1, 17, 0, 12, 2, 182, 0, 67, 0, 111, 0, 112, 0, 121, 0, 114, 0, 105, 0, 103, 0, 104, 0, 116, 0, 32, 0, 50, 0, 48, 0, 49, 0, 53, 0, 32, 0, 84, 0, 104, 0, 101, 0, 32, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 80, 0, 114, 0, 111, 0, 106, 0, 101, 0, 99, 0, 116, 0, 32, 0, 65, 0, 117, 0, 116, 0, 104, 0, 111, 0, 114, 0, 115, 0, 32, 0, 40, 0, 104, 0, 116, 0, 116, 0, 112, 0, 115, 0, 58, 0, 47, 0, 47, 0, 103, 0, 105, 0, 116, 0, 104, 0, 117, 0, 98, 0, 46, 0, 99, 0, 111, 0, 109, 0, 47, 0, 103, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 102, 0, 111, 0, 110, 0, 116, 0, 115, 0, 47, 0, 114, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 109, 0, 111, 0, 110, 0, 111, 0, 41, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 66, 0, 111, 0, 108, 0, 100, 0, 51, 0, 46, 0, 48, 0, 48, 0, 48, 0, 59, 0, 71, 0, 79, 0, 79, 0, 71, 0, 59, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 77, 0, 111, 0, 110, 0, 111, 0, 45, 0, 66, 0, 111, 0, 108, 0, 100, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 66, 0, 111, 0, 108, 0, 100, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 51, 0, 46, 0, 48, 0, 48, 0, 48, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 77, 0, 111, 0, 110, 0, 111, 0, 45, 0, 66, 0, 111, 0, 108, 0, 100, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 105, 0, 115, 0, 32, 0, 97, 0, 32, 0, 116, 0, 114, 0, 97, 0, 100, 0, 101, 0, 109, 0, 97, 0, 114, 0, 107, 0, 32, 0, 111, 0, 102, 0, 32, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 46, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 46, 0, 99, 0, 111, 0, 109, 0, 67, 0, 104, 0, 114, 0, 105, 0, 115, 0, 116, 0, 105, 0, 97, 0, 110, 0, 32, 0, 82, 0, 111, 0, 98, 0, 101, 0, 114, 0, 116, 0, 115, 0, 111, 0, 110, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 100, 0, 32, 0, 117, 0, 110, 0, 100, 0, 101, 0, 114, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 65, 0, 112, 0, 97, 0, 99, 0, 104, 0, 101, 0, 32, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 44, 0, 32, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 50, 0, 46, 0, 48, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47, 0, 119, 0, 119, 0, 119, 0, 46, 0, 97, 0, 112, 0, 97, 0, 99, 0, 104, 0, 101, 0, 46, 0, 111, 0, 114, 0, 103, 0, 47, 0, 108, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 115, 0, 47, 0, 76, 0, 73, 0, 67, 0, 69, 0, 78, 0, 83, 0, 69, 0, 45, 0, 50, 0, 46, 0, 48, 0, 87, 0, 101, 0, 105, 0, 103, 0, 104, 0, 116, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 78, 0, 111, 0, 114, 0, 109, 0, 97, 0, 108, 0, 2, 0, 0, 0, 0, 0, 0, 255, 106, 0, 100, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 231, 0, 0, 0, 3, 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 68, 0, 69, 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, 0, 92, 0, 93, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 241, 0, 242, 0, 243, 0, 157, 0, 158, 0, 244, 0, 245, 0, 246, 0, 144, 0, 160, 0, 176, 0, 177, 0, 234, 0, 237, 0, 238, 1, 2, 0, 137, 1, 3, 0, 7, 0, 132, 0, 133, 0, 150, 0, 166, 0, 247, 1, 4, 1, 5, 0, 189, 0, 4, 0, 163, 0, 34, 0, 162, 0, 15, 0, 17, 0, 29, 0, 30, 0, 171, 0, 195, 0, 135, 0, 66, 0, 16, 0, 178, 0, 179, 0, 10, 0, 5, 0, 182, 0, 183, 0, 196, 0, 180, 0, 181, 0, 197, 1, 6, 1, 7, 0, 11, 0, 12, 0, 62, 0, 64, 0, 94, 0, 96, 0, 190, 0, 191, 0, 14, 0, 239, 0, 147, 0, 240, 0, 184, 0, 32, 0, 143, 0, 167, 0, 31, 0, 33, 0, 148, 0, 149, 0, 164, 0, 18, 0, 63, 0, 188, 0, 8, 0, 198, 0, 95, 0, 232, 0, 130, 0, 194, 0, 139, 0, 138, 0, 140, 0, 131, 0, 13, 0, 6, 0, 9, 0, 35, 0, 134, 0, 136, 0, 65, 0, 97, 0, 201, 1, 8, 0, 199, 0, 98, 0, 173, 1, 9, 1, 10, 0, 99, 1, 11, 0, 174, 1, 12, 0, 253, 0, 255, 0, 100, 1, 13, 1, 14, 1, 15, 0, 101, 1, 16, 1, 17, 0, 200, 0, 202, 1, 18, 0, 203, 1, 19, 1, 20, 1, 21, 0, 233, 0, 248, 1, 22, 1, 23, 1, 24, 1, 25, 0, 204, 1, 26, 0, 205, 0, 206, 0, 250, 0, 207, 1, 27, 1, 28, 1, 29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 34, 1, 35, 0, 226, 1, 36, 1, 37, 1, 38, 0, 102, 0, 208, 1, 39, 0, 209, 0, 103, 0, 211, 1, 40, 1, 41, 1, 42, 0, 145, 1, 43, 0, 175, 1, 44, 1, 45, 1, 46, 1, 47, 0, 228, 0, 251, 1, 48, 1, 49, 1, 50, 0, 212, 1, 51, 0, 213, 0, 104, 0, 214, 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, 0, 235, 1, 62, 0, 187, 1, 63, 1, 64, 0, 230, 1, 65, 0, 105, 1, 66, 0, 107, 0, 108, 0, 106, 1, 67, 1, 68, 0, 110, 1, 69, 0, 109, 1, 70, 0, 254, 1, 0, 0, 111, 1, 71, 1, 72, 1, 1, 0, 112, 1, 73, 1, 74, 0, 114, 0, 115, 1, 75, 0, 113, 1, 76, 1, 77, 1, 78, 0, 249, 1, 79, 1, 80, 1, 81, 1, 82, 0, 116, 1, 83, 0, 118, 0, 119, 0, 117, 1, 84, 1, 85, 1, 86, 1, 87, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 0, 227, 1, 93, 1, 94, 1, 95, 0, 120, 0, 121, 1, 96, 0, 123, 0, 124, 0, 122, 1, 97, 1, 98, 1, 99, 0, 161, 1, 100, 0, 125, 1, 101, 1, 102, 1, 103, 1, 104, 0, 229, 0, 252, 1, 105, 1, 106, 1, 107, 0, 126, 1, 108, 0, 128, 0, 129, 0, 127, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 118, 0, 236, 1, 119, 0, 186, 1, 120, 1, 121, 0, 231, 1, 122, 0, 67, 0, 141, 0, 216, 0, 217, 0, 218, 0, 219, 0, 220, 0, 142, 0, 221, 0, 223, 0, 225, 1, 123, 0, 222, 0, 224, 1, 124, 0, 2, 0, 169, 0, 151, 0, 170, 0, 215, 1, 125, 1, 126, 1, 127, 1, 128, 1, 129, 1, 130, 1, 131, 1, 132, 1, 133, 1, 134, 1, 135, 1, 136, 1, 137, 1, 138, 0, 168, 1, 139, 1, 140, 1, 141, 1, 142, 1, 143, 1, 144, 1, 145, 0, 159, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 1, 151, 1, 152, 1, 153, 1, 154, 1, 155, 1, 156, 0, 155, 1, 157, 1, 158, 1, 159, 1, 160, 1, 161, 1, 162, 1, 163, 1, 164, 1, 165, 1, 166, 1, 167, 1, 168, 1, 169, 1, 170, 1, 171, 1, 172, 1, 173, 1, 174, 1, 175, 1, 176, 1, 177, 1, 178, 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 1, 184, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, 1, 193, 1, 194, 1, 195, 1, 196, 1, 197, 1, 198, 1, 199, 1, 200, 1, 201, 1, 202, 1, 203, 1, 204, 1, 205, 1, 206, 1, 207, 1, 208, 1, 209, 1, 210, 1, 211, 1, 212, 1, 213, 1, 214, 1, 215, 1, 216, 1, 217, 1, 218, 1, 219, 1, 220, 1, 221, 1, 222, 1, 223, 1, 224, 1, 225, 1, 226, 1, 227, 1, 228, 1, 229, 1, 230, 1, 231, 1, 232, 1, 233, 1, 234, 1, 235, 1, 236, 1, 237, 1, 238, 1, 239, 1, 240, 1, 241, 1, 242, 1, 243, 1, 244, 1, 245, 1, 246, 1, 247, 1, 248, 1, 249, 1, 250, 1, 251, 1, 252, 1, 253, 1, 254, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, 2, 28, 2, 29, 2, 30, 2, 31, 2, 32, 2, 33, 2, 34, 2, 35, 2, 36, 2, 37, 2, 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43, 2, 44, 2, 45, 2, 46, 2, 47, 2, 48, 2, 49, 2, 50, 2, 51, 2, 52, 2, 53, 2, 54, 2, 55, 2, 56, 2, 57, 2, 58, 2, 59, 2, 60, 2, 61, 2, 62, 2, 63, 2, 64, 2, 65, 2, 66, 2, 67, 2, 68, 2, 69, 2, 70, 2, 71, 2, 72, 2, 73, 2, 74, 0, 152, 0, 154, 0, 153, 0, 165, 0, 146, 0, 156, 0, 185, 2, 75, 2, 76, 2, 77, 2, 78, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 104, 2, 105, 2, 106, 2, 107, 2, 108, 2, 109, 2, 110, 2, 111, 2, 112, 2, 113, 2, 114, 2, 115, 2, 116, 2, 117, 2, 118, 2, 119, 0, 172, 2, 120, 2, 121, 2, 122, 2, 123, 2, 124, 2, 125, 2, 126, 2, 127, 2, 128, 2, 129, 2, 130, 2, 131, 2, 132, 2, 133, 2, 134, 2, 135, 2, 136, 2, 137, 2, 138, 2, 139, 2, 140, 2, 141, 2, 142, 2, 143, 2, 144, 2, 145, 2, 146, 2, 147, 2, 148, 2, 149, 2, 150, 2, 151, 2, 152, 2, 153, 2, 154, 2, 155, 2, 156, 2, 157, 2, 158, 2, 159, 2, 160, 2, 161, 2, 162, 2, 163, 2, 164, 2, 165, 2, 166, 2, 167, 2, 168, 2, 169, 2, 170, 2, 171, 2, 172, 2, 173, 2, 174, 2, 175, 2, 176, 2, 177, 2, 178, 2, 179, 2, 180, 2, 181, 2, 182, 2, 183, 2, 184, 2, 185, 2, 186, 2, 187, 2, 188, 2, 189, 2, 190, 2, 191, 2, 192, 2, 193, 2, 194, 2, 195, 2, 196, 2, 197, 2, 198, 2, 199, 2, 200, 2, 201, 2, 202, 2, 203, 2, 204, 2, 205, 2, 206, 2, 207, 2, 208, 2, 209, 2, 210, 2, 211, 2, 212, 2, 213, 2, 214, 2, 215, 2, 216, 2, 217, 2, 218, 2, 219, 2, 220, 2, 221, 2, 222, 2, 223, 2, 224, 2, 225, 2, 226, 2, 227, 2, 228, 2, 229, 2, 230, 2, 231, 2, 232, 2, 233, 2, 234, 2, 235, 2, 236, 2, 237, 2, 238, 2, 239, 2, 240, 2, 241, 2, 242, 2, 243, 2, 244, 2, 245, 2, 246, 2, 247, 2, 248, 2, 249, 2, 250, 2, 251, 2, 252, 2, 253, 2, 254, 2, 255, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, 3, 22, 3, 23, 3, 24, 3, 25, 3, 26, 3, 27, 3, 28, 3, 29, 3, 30, 3, 31, 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3, 39, 3, 40, 3, 41, 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 3, 53, 3, 54, 3, 55, 3, 56, 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, 3, 62, 3, 63, 3, 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 3, 75, 3, 76, 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88, 3, 89, 3, 90, 3, 91, 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 3, 100, 3, 101, 3, 102, 3, 103, 3, 104, 3, 105, 3, 106, 3, 107, 3, 108, 3, 109, 3, 110, 3, 111, 3, 112, 3, 113, 3, 114, 3, 115, 3, 116, 3, 117, 3, 118, 3, 119, 3, 120, 3, 121, 3, 122, 3, 123, 3, 124, 3, 125, 3, 126, 3, 127, 3, 128, 3, 129, 3, 130, 3, 131, 3, 132, 3, 133, 3, 134, 3, 135, 3, 136, 3, 137, 3, 138, 3, 139, 3, 140, 3, 141, 3, 142, 3, 143, 3, 144, 3, 145, 3, 146, 3, 147, 3, 148, 3, 149, 3, 150, 3, 151, 3, 152, 3, 153, 3, 154, 3, 155, 3, 156, 3, 157, 3, 158, 3, 159, 3, 160, 3, 161, 3, 162, 3, 163, 3, 164, 3, 165, 3, 166, 3, 167, 3, 168, 3, 169, 3, 170, 3, 171, 3, 172, 3, 173, 3, 174, 3, 175, 3, 176, 3, 177, 3, 178, 3, 179, 3, 180, 3, 181, 3, 182, 3, 183, 3, 184, 3, 185, 3, 186, 3, 187, 3, 188, 3, 189, 3, 190, 3, 191, 3, 192, 3, 193, 3, 194, 3, 195, 3, 196, 3, 197, 3, 198, 3, 199, 3, 200, 3, 201, 3, 202, 3, 203, 3, 204, 3, 205, 3, 206, 3, 207, 3, 208, 3, 209, 3, 210, 3, 211, 3, 212, 3, 213, 3, 214, 3, 215, 3, 216, 3, 217, 3, 218, 3, 219, 3, 220, 3, 221, 3, 222, 3, 223, 3, 224, 3, 225, 3, 226, 3, 227, 3, 228, 3, 229, 3, 230, 3, 231, 3, 232, 3, 233, 3, 234, 12, 107, 103, 114, 101, 101, 110, 108, 97, 110, 100, 105, 99, 5, 115, 99, 104, 119, 97, 4, 108, 105, 114, 97, 6, 112, 101, 115, 101, 116, 97, 6, 109, 105, 110, 117, 116, 101, 6, 115, 101, 99, 111, 110, 100, 6, 65, 98, 114, 101, 118, 101, 7, 65, 109, 97, 99, 114, 111, 110, 7, 65, 111, 103, 111, 110, 101, 107, 10, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 7, 65, 69, 97, 99, 117, 116, 101, 11, 67, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 68, 99, 97, 114, 111, 110, 6, 68, 99, 114, 111, 97, 116, 6, 69, 98, 114, 101, 118, 101, 6, 69, 99, 97, 114, 111, 110, 10, 69, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 69, 109, 97, 99, 114, 111, 110, 3, 69, 110, 103, 7, 69, 111, 103, 111, 110, 101, 107, 11, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 71, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 72, 98, 97, 114, 11, 72, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 73, 98, 114, 101, 118, 101, 7, 73, 109, 97, 99, 114, 111, 110, 7, 73, 111, 103, 111, 110, 101, 107, 6, 73, 116, 105, 108, 100, 101, 11, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 76, 97, 99, 117, 116, 101, 6, 76, 99, 97, 114, 111, 110, 12, 76, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 76, 100, 111, 116, 6, 78, 97, 99, 117, 116, 101, 6, 78, 99, 97, 114, 111, 110, 12, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 79, 98, 114, 101, 118, 101, 5, 79, 104, 111, 114, 110, 13, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 79, 109, 97, 99, 114, 111, 110, 11, 79, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 6, 82, 97, 99, 117, 116, 101, 6, 82, 99, 97, 114, 111, 110, 12, 82, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 83, 97, 99, 117, 116, 101, 11, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 84, 98, 97, 114, 6, 84, 99, 97, 114, 111, 110, 6, 85, 98, 114, 101, 118, 101, 5, 85, 104, 111, 114, 110, 13, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 85, 109, 97, 99, 114, 111, 110, 7, 85, 111, 103, 111, 110, 101, 107, 5, 85, 114, 105, 110, 103, 6, 85, 116, 105, 108, 100, 101, 6, 87, 97, 99, 117, 116, 101, 11, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 9, 87, 100, 105, 101, 114, 101, 115, 105, 115, 6, 87, 103, 114, 97, 118, 101, 11, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 89, 103, 114, 97, 118, 101, 6, 90, 97, 99, 117, 116, 101, 10, 90, 100, 111, 116, 97, 99, 99, 101, 110, 116, 6, 97, 98, 114, 101, 118, 101, 7, 97, 109, 97, 99, 114, 111, 110, 7, 97, 111, 103, 111, 110, 101, 107, 10, 97, 114, 105, 110, 103, 97, 99, 117, 116, 101, 7, 97, 101, 97, 99, 117, 116, 101, 11, 99, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 100, 99, 97, 114, 111, 110, 6, 101, 98, 114, 101, 118, 101, 6, 101, 99, 97, 114, 111, 110, 10, 101, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 101, 109, 97, 99, 114, 111, 110, 3, 101, 110, 103, 7, 101, 111, 103, 111, 110, 101, 107, 11, 103, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 103, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 104, 98, 97, 114, 11, 104, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 105, 98, 114, 101, 118, 101, 7, 105, 109, 97, 99, 114, 111, 110, 7, 105, 111, 103, 111, 110, 101, 107, 6, 105, 116, 105, 108, 100, 101, 11, 106, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 107, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 108, 97, 99, 117, 116, 101, 6, 108, 99, 97, 114, 111, 110, 12, 108, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 108, 100, 111, 116, 6, 110, 97, 99, 117, 116, 101, 6, 110, 99, 97, 114, 111, 110, 12, 110, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 111, 98, 114, 101, 118, 101, 5, 111, 104, 111, 114, 110, 13, 111, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 111, 109, 97, 99, 114, 111, 110, 11, 111, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 6, 114, 97, 99, 117, 116, 101, 6, 114, 99, 97, 114, 111, 110, 12, 114, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 115, 97, 99, 117, 116, 101, 11, 115, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 116, 98, 97, 114, 6, 116, 99, 97, 114, 111, 110, 6, 117, 98, 114, 101, 118, 101, 5, 117, 104, 111, 114, 110, 13, 117, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 117, 109, 97, 99, 114, 111, 110, 7, 117, 111, 103, 111, 110, 101, 107, 5, 117, 114, 105, 110, 103, 6, 117, 116, 105, 108, 100, 101, 6, 119, 97, 99, 117, 116, 101, 11, 119, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 9, 119, 100, 105, 101, 114, 101, 115, 105, 115, 6, 119, 103, 114, 97, 118, 101, 11, 121, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 121, 103, 114, 97, 118, 101, 6, 122, 97, 99, 117, 116, 101, 10, 122, 100, 111, 116, 97, 99, 99, 101, 110, 116, 8, 100, 111, 116, 98, 101, 108, 111, 119, 11, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 2, 73, 74, 2, 105, 106, 5, 108, 111, 110, 103, 115, 7, 117, 110, 105, 48, 50, 51, 55, 7, 117, 110, 105, 48, 50, 70, 51, 9, 103, 114, 97, 118, 101, 99, 111, 109, 98, 9, 97, 99, 117, 116, 101, 99, 111, 109, 98, 9, 116, 105, 108, 100, 101, 99, 111, 109, 98, 4, 104, 111, 111, 107, 7, 117, 110, 105, 48, 51, 48, 70, 5, 116, 111, 110, 111, 115, 13, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 9, 97, 110, 111, 116, 101, 108, 101, 105, 97, 5, 71, 97, 109, 109, 97, 5, 84, 104, 101, 116, 97, 6, 76, 97, 109, 98, 100, 97, 2, 88, 105, 2, 80, 105, 5, 83, 105, 103, 109, 97, 3, 80, 104, 105, 3, 80, 115, 105, 5, 97, 108, 112, 104, 97, 4, 98, 101, 116, 97, 5, 103, 97, 109, 109, 97, 5, 100, 101, 108, 116, 97, 7, 101, 112, 115, 105, 108, 111, 110, 4, 122, 101, 116, 97, 3, 101, 116, 97, 5, 116, 104, 101, 116, 97, 4, 105, 111, 116, 97, 6, 108, 97, 109, 98, 100, 97, 2, 120, 105, 3, 114, 104, 111, 6, 115, 105, 103, 109, 97, 49, 5, 115, 105, 103, 109, 97, 3, 116, 97, 117, 7, 117, 112, 115, 105, 108, 111, 110, 3, 112, 104, 105, 3, 112, 115, 105, 5, 111, 109, 101, 103, 97, 7, 117, 110, 105, 48, 51, 68, 49, 7, 117, 110, 105, 48, 51, 68, 50, 7, 117, 110, 105, 48, 51, 68, 54, 7, 117, 110, 105, 48, 52, 48, 50, 7, 117, 110, 105, 48, 52, 48, 52, 7, 117, 110, 105, 48, 52, 48, 57, 7, 117, 110, 105, 48, 52, 48, 65, 7, 117, 110, 105, 48, 52, 48, 66, 7, 117, 110, 105, 48, 52, 48, 70, 7, 117, 110, 105, 48, 52, 49, 49, 7, 117, 110, 105, 48, 52, 49, 52, 7, 117, 110, 105, 48, 52, 49, 54, 7, 117, 110, 105, 48, 52, 49, 55, 7, 117, 110, 105, 48, 52, 49, 56, 7, 117, 110, 105, 48, 52, 49, 66, 7, 117, 110, 105, 48, 52, 50, 51, 7, 117, 110, 105, 48, 52, 50, 54, 7, 117, 110, 105, 48, 52, 50, 55, 7, 117, 110, 105, 48, 52, 50, 56, 7, 117, 110, 105, 48, 52, 50, 57, 7, 117, 110, 105, 48, 52, 50, 65, 7, 117, 110, 105, 48, 52, 50, 66, 7, 117, 110, 105, 48, 52, 50, 67, 7, 117, 110, 105, 48, 52, 50, 68, 7, 117, 110, 105, 48, 52, 50, 69, 7, 117, 110, 105, 48, 52, 50, 70, 7, 117, 110, 105, 48, 52, 51, 49, 7, 117, 110, 105, 48, 52, 51, 50, 7, 117, 110, 105, 48, 52, 51, 51, 7, 117, 110, 105, 48, 52, 51, 52, 7, 117, 110, 105, 48, 52, 51, 54, 7, 117, 110, 105, 48, 52, 51, 55, 7, 117, 110, 105, 48, 52, 51, 56, 7, 117, 110, 105, 48, 52, 51, 65, 7, 117, 110, 105, 48, 52, 51, 66, 7, 117, 110, 105, 48, 52, 51, 67, 7, 117, 110, 105, 48, 52, 51, 68, 7, 117, 110, 105, 48, 52, 51, 70, 7, 117, 110, 105, 48, 52, 52, 50, 7, 117, 110, 105, 48, 52, 52, 52, 7, 117, 110, 105, 48, 52, 52, 54, 7, 117, 110, 105, 48, 52, 52, 55, 7, 117, 110, 105, 48, 52, 52, 56, 7, 117, 110, 105, 48, 52, 52, 57, 7, 117, 110, 105, 48, 52, 52, 65, 7, 117, 110, 105, 48, 52, 52, 66, 7, 117, 110, 105, 48, 52, 52, 67, 7, 117, 110, 105, 48, 52, 52, 68, 7, 117, 110, 105, 48, 52, 52, 69, 7, 117, 110, 105, 48, 52, 52, 70, 7, 117, 110, 105, 48, 52, 53, 50, 7, 117, 110, 105, 48, 52, 53, 52, 7, 117, 110, 105, 48, 52, 53, 57, 7, 117, 110, 105, 48, 52, 53, 65, 7, 117, 110, 105, 48, 52, 53, 66, 7, 117, 110, 105, 48, 52, 53, 70, 7, 117, 110, 105, 48, 52, 54, 48, 7, 117, 110, 105, 48, 52, 54, 49, 7, 117, 110, 105, 48, 52, 54, 51, 7, 117, 110, 105, 48, 52, 54, 52, 7, 117, 110, 105, 48, 52, 54, 53, 7, 117, 110, 105, 48, 52, 54, 54, 7, 117, 110, 105, 48, 52, 54, 55, 7, 117, 110, 105, 48, 52, 54, 56, 7, 117, 110, 105, 48, 52, 54, 57, 7, 117, 110, 105, 48, 52, 54, 65, 7, 117, 110, 105, 48, 52, 54, 66, 7, 117, 110, 105, 48, 52, 54, 67, 7, 117, 110, 105, 48, 52, 54, 68, 7, 117, 110, 105, 48, 52, 54, 69, 7, 117, 110, 105, 48, 52, 54, 70, 7, 117, 110, 105, 48, 52, 55, 50, 7, 117, 110, 105, 48, 52, 55, 51, 7, 117, 110, 105, 48, 52, 55, 52, 7, 117, 110, 105, 48, 52, 55, 53, 7, 117, 110, 105, 48, 52, 55, 56, 7, 117, 110, 105, 48, 52, 55, 57, 7, 117, 110, 105, 48, 52, 55, 65, 7, 117, 110, 105, 48, 52, 55, 66, 7, 117, 110, 105, 48, 52, 55, 67, 7, 117, 110, 105, 48, 52, 55, 68, 7, 117, 110, 105, 48, 52, 55, 69, 7, 117, 110, 105, 48, 52, 55, 70, 7, 117, 110, 105, 48, 52, 56, 48, 7, 117, 110, 105, 48, 52, 56, 49, 7, 117, 110, 105, 48, 52, 56, 50, 7, 117, 110, 105, 48, 52, 56, 51, 7, 117, 110, 105, 48, 52, 56, 52, 7, 117, 110, 105, 48, 52, 56, 53, 7, 117, 110, 105, 48, 52, 56, 54, 7, 117, 110, 105, 48, 52, 56, 56, 7, 117, 110, 105, 48, 52, 56, 57, 7, 117, 110, 105, 48, 52, 56, 69, 7, 117, 110, 105, 48, 52, 56, 70, 7, 117, 110, 105, 48, 52, 57, 48, 7, 117, 110, 105, 48, 52, 57, 49, 7, 117, 110, 105, 48, 52, 57, 52, 7, 117, 110, 105, 48, 52, 57, 53, 7, 117, 110, 105, 48, 52, 57, 67, 7, 117, 110, 105, 48, 52, 57, 68, 7, 117, 110, 105, 48, 52, 65, 48, 7, 117, 110, 105, 48, 52, 65, 49, 7, 117, 110, 105, 48, 52, 65, 52, 7, 117, 110, 105, 48, 52, 65, 53, 7, 117, 110, 105, 48, 52, 65, 54, 7, 117, 110, 105, 48, 52, 65, 55, 7, 117, 110, 105, 48, 52, 65, 56, 7, 117, 110, 105, 48, 52, 65, 57, 7, 117, 110, 105, 48, 52, 66, 52, 7, 117, 110, 105, 48, 52, 66, 53, 7, 117, 110, 105, 48, 52, 66, 56, 7, 117, 110, 105, 48, 52, 66, 57, 7, 117, 110, 105, 48, 52, 66, 65, 7, 117, 110, 105, 48, 52, 66, 67, 7, 117, 110, 105, 48, 52, 66, 68, 7, 117, 110, 105, 48, 52, 67, 51, 7, 117, 110, 105, 48, 52, 67, 52, 7, 117, 110, 105, 48, 52, 67, 55, 7, 117, 110, 105, 48, 52, 67, 56, 7, 117, 110, 105, 48, 52, 68, 56, 7, 117, 110, 105, 48, 52, 69, 48, 7, 117, 110, 105, 48, 52, 69, 49, 7, 117, 110, 105, 48, 52, 70, 65, 7, 117, 110, 105, 48, 52, 70, 66, 7, 117, 110, 105, 48, 53, 48, 48, 7, 117, 110, 105, 48, 53, 48, 50, 7, 117, 110, 105, 48, 53, 48, 51, 7, 117, 110, 105, 48, 53, 48, 52, 7, 117, 110, 105, 48, 53, 48, 53, 7, 117, 110, 105, 48, 53, 48, 54, 7, 117, 110, 105, 48, 53, 48, 55, 7, 117, 110, 105, 48, 53, 48, 56, 7, 117, 110, 105, 48, 53, 48, 57, 7, 117, 110, 105, 48, 53, 48, 65, 7, 117, 110, 105, 48, 53, 48, 66, 7, 117, 110, 105, 48, 53, 48, 67, 7, 117, 110, 105, 48, 53, 48, 68, 7, 117, 110, 105, 48, 53, 48, 69, 7, 117, 110, 105, 48, 53, 48, 70, 7, 117, 110, 105, 48, 53, 49, 48, 7, 117, 110, 105, 50, 48, 48, 48, 7, 117, 110, 105, 50, 48, 48, 49, 7, 117, 110, 105, 50, 48, 48, 50, 7, 117, 110, 105, 50, 48, 48, 51, 7, 117, 110, 105, 50, 48, 48, 52, 7, 117, 110, 105, 50, 48, 48, 53, 7, 117, 110, 105, 50, 48, 48, 54, 7, 117, 110, 105, 50, 48, 48, 55, 7, 117, 110, 105, 50, 48, 48, 56, 7, 117, 110, 105, 50, 48, 48, 57, 7, 117, 110, 105, 50, 48, 48, 65, 7, 117, 110, 105, 50, 48, 48, 66, 13, 117, 110, 100, 101, 114, 115, 99, 111, 114, 101, 100, 98, 108, 13, 113, 117, 111, 116, 101, 114, 101, 118, 101, 114, 115, 101, 100, 7, 117, 110, 105, 50, 48, 50, 53, 7, 117, 110, 105, 50, 48, 55, 52, 9, 110, 115, 117, 112, 101, 114, 105, 111, 114, 4, 69, 117, 114, 111, 7, 117, 110, 105, 50, 49, 48, 53, 7, 117, 110, 105, 50, 49, 49, 51, 7, 117, 110, 105, 50, 49, 49, 54, 9, 101, 115, 116, 105, 109, 97, 116, 101, 100, 9, 111, 110, 101, 101, 105, 103, 104, 116, 104, 12, 116, 104, 114, 101, 101, 101, 105, 103, 104, 116, 104, 115, 11, 102, 105, 118, 101, 101, 105, 103, 104, 116, 104, 115, 12, 115, 101, 118, 101, 110, 101, 105, 103, 104, 116, 104, 115, 7, 117, 110, 105, 70, 69, 70, 70, 7, 117, 110, 105, 70, 70, 70, 67, 7, 117, 110, 105, 70, 70, 70, 68, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 99, 111, 109, 98, 18, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104, 111, 111, 107, 99, 111, 109, 98, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 99, 111, 109, 98, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 97, 99, 117, 116, 101, 99, 111, 109, 98, 14, 98, 114, 101, 118, 101, 103, 114, 97, 118, 101, 99, 111, 109, 98, 17, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 114, 111, 116, 97, 116, 101, 6, 65, 46, 115, 109, 99, 112, 6, 66, 46, 115, 109, 99, 112, 6, 67, 46, 115, 109, 99, 112, 6, 68, 46, 115, 109, 99, 112, 6, 69, 46, 115, 109, 99, 112, 6, 70, 46, 115, 109, 99, 112, 6, 71, 46, 115, 109, 99, 112, 6, 72, 46, 115, 109, 99, 112, 6, 73, 46, 115, 109, 99, 112, 6, 74, 46, 115, 109, 99, 112, 6, 75, 46, 115, 109, 99, 112, 6, 76, 46, 115, 109, 99, 112, 6, 77, 46, 115, 109, 99, 112, 6, 78, 46, 115, 109, 99, 112, 6, 79, 46, 115, 109, 99, 112, 6, 81, 46, 115, 109, 99, 112, 6, 82, 46, 115, 109, 99, 112, 6, 83, 46, 115, 109, 99, 112, 6, 84, 46, 115, 109, 99, 112, 6, 85, 46, 115, 109, 99, 112, 6, 86, 46, 115, 109, 99, 112, 6, 87, 46, 115, 109, 99, 112, 6, 88, 46, 115, 109, 99, 112, 6, 89, 46, 115, 109, 99, 112, 6, 90, 46, 115, 109, 99, 112, 13, 98, 114, 101, 118, 101, 104, 111, 111, 107, 99, 111, 109, 98, 14, 98, 114, 101, 118, 101, 97, 99, 117, 116, 101, 99, 111, 109, 98, 8, 99, 114, 111, 115, 115, 98, 97, 114, 9, 114, 105, 110, 103, 97, 99, 117, 116, 101, 9, 100, 97, 115, 105, 97, 111, 120, 105, 97, 14, 98, 114, 101, 118, 101, 116, 105, 108, 100, 101, 99, 111, 109, 98, 11, 99, 121, 114, 105, 108, 108, 105, 99, 116, 105, 99, 12, 99, 121, 114, 105, 108, 108, 105, 99, 104, 111, 111, 107, 6, 80, 46, 115, 109, 99, 112, 5, 75, 46, 97, 108, 116, 15, 71, 101, 114, 109, 97, 110, 100, 98, 108, 115, 46, 115, 109, 99, 112, 7, 117, 110, 105, 48, 48, 65, 68, 7, 117, 110, 105, 48, 49, 48, 65, 7, 117, 110, 105, 48, 49, 48, 66, 7, 117, 110, 105, 48, 49, 50, 48, 7, 117, 110, 105, 48, 49, 50, 49, 11, 110, 97, 112, 111, 115, 116, 114, 111, 112, 104, 101, 7, 117, 110, 105, 48, 50, 49, 56, 7, 117, 110, 105, 48, 50, 49, 57, 7, 117, 110, 105, 48, 50, 49, 65, 7, 117, 110, 105, 48, 50, 49, 66, 7, 117, 110, 105, 48, 49, 54, 50, 12, 117, 110, 105, 48, 49, 54, 50, 46, 115, 109, 99, 112, 7, 117, 110, 105, 48, 49, 54, 51, 11, 68, 99, 114, 111, 97, 116, 46, 115, 109, 99, 112, 8, 69, 116, 104, 46, 115, 109, 99, 112, 9, 84, 98, 97, 114, 46, 115, 109, 99, 112, 11, 65, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 65, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 65, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 65, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 14, 65, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 10, 65, 114, 105, 110, 103, 46, 115, 109, 99, 112, 15, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 13, 67, 99, 101, 100, 105, 108, 108, 97, 46, 115, 109, 99, 112, 11, 69, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 69, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 69, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 69, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 73, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 73, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 73, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 73, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 78, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 11, 79, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 79, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 79, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 79, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 14, 79, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 85, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 85, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 85, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 85, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 89, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 12, 65, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 65, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 12, 65, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 11, 67, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 67, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 67, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 68, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 12, 69, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 69, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 15, 69, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 12, 69, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 11, 69, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 16, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 71, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 17, 71, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 16, 72, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 73, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 12, 73, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 73, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 12, 73, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 15, 73, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 16, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 17, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 76, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 76, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 76, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 9, 76, 100, 111, 116, 46, 115, 109, 99, 112, 11, 78, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 78, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 12, 79, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 79, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 18, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 46, 115, 109, 99, 112, 11, 82, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 82, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 82, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 83, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 13, 83, 99, 101, 100, 105, 108, 108, 97, 46, 115, 109, 99, 112, 11, 83, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 84, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 85, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 12, 85, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 85, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 10, 85, 114, 105, 110, 103, 46, 115, 109, 99, 112, 18, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 46, 115, 109, 99, 112, 12, 85, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 16, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 16, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 89, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 90, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 15, 90, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 90, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 10, 65, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 69, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 69, 116, 97, 116, 111, 110, 111, 115, 9, 73, 111, 116, 97, 116, 111, 110, 111, 115, 12, 79, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 85, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 10, 79, 109, 101, 103, 97, 116, 111, 110, 111, 115, 17, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 65, 108, 112, 104, 97, 4, 66, 101, 116, 97, 7, 69, 112, 115, 105, 108, 111, 110, 4, 90, 101, 116, 97, 3, 69, 116, 97, 4, 73, 111, 116, 97, 5, 75, 97, 112, 112, 97, 2, 77, 117, 2, 78, 117, 7, 79, 109, 105, 99, 114, 111, 110, 3, 82, 104, 111, 3, 84, 97, 117, 7, 85, 112, 115, 105, 108, 111, 110, 3, 67, 104, 105, 12, 73, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15, 85, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 10, 97, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 101, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 101, 116, 97, 116, 111, 110, 111, 115, 9, 105, 111, 116, 97, 116, 111, 110, 111, 115, 20, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 107, 97, 112, 112, 97, 7, 111, 109, 105, 99, 114, 111, 110, 7, 117, 110, 105, 48, 51, 66, 67, 2, 110, 117, 3, 99, 104, 105, 12, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 12, 111, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 117, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 10, 111, 109, 101, 103, 97, 116, 111, 110, 111, 115, 7, 117, 110, 105, 48, 52, 48, 49, 7, 117, 110, 105, 48, 52, 48, 51, 7, 117, 110, 105, 48, 52, 48, 53, 7, 117, 110, 105, 48, 52, 48, 54, 7, 117, 110, 105, 48, 52, 48, 55, 7, 117, 110, 105, 48, 52, 48, 56, 7, 117, 110, 105, 48, 52, 49, 65, 7, 117, 110, 105, 48, 52, 48, 67, 7, 117, 110, 105, 48, 52, 48, 69, 7, 117, 110, 105, 48, 52, 49, 48, 7, 117, 110, 105, 48, 52, 49, 50, 7, 117, 110, 105, 48, 52, 49, 51, 7, 117, 110, 105, 48, 52, 49, 53, 7, 117, 110, 105, 48, 52, 49, 57, 7, 117, 110, 105, 48, 52, 49, 67, 7, 117, 110, 105, 48, 52, 49, 68, 7, 117, 110, 105, 48, 52, 49, 69, 7, 117, 110, 105, 48, 52, 49, 70, 7, 117, 110, 105, 48, 52, 50, 48, 7, 117, 110, 105, 48, 52, 50, 49, 7, 117, 110, 105, 48, 52, 50, 50, 7, 117, 110, 105, 48, 52, 50, 52, 7, 117, 110, 105, 48, 52, 50, 53, 7, 117, 110, 105, 48, 52, 51, 48, 7, 117, 110, 105, 48, 52, 51, 53, 7, 117, 110, 105, 48, 52, 51, 57, 7, 117, 110, 105, 48, 52, 51, 69, 7, 117, 110, 105, 48, 52, 52, 48, 7, 117, 110, 105, 48, 52, 52, 49, 7, 117, 110, 105, 48, 52, 52, 51, 7, 117, 110, 105, 48, 52, 52, 53, 7, 117, 110, 105, 48, 52, 53, 49, 7, 117, 110, 105, 48, 52, 53, 51, 7, 117, 110, 105, 48, 52, 53, 53, 7, 117, 110, 105, 48, 52, 53, 54, 7, 117, 110, 105, 48, 52, 53, 55, 7, 117, 110, 105, 48, 52, 53, 56, 7, 117, 110, 105, 48, 52, 53, 67, 7, 117, 110, 105, 48, 52, 53, 69, 9, 101, 120, 99, 108, 97, 109, 100, 98, 108, 7, 117, 110, 105, 48, 49, 70, 48, 7, 117, 110, 105, 48, 50, 66, 67, 7, 117, 110, 105, 49, 69, 51, 69, 7, 117, 110, 105, 49, 69, 51, 70, 7, 117, 110, 105, 49, 69, 48, 48, 7, 117, 110, 105, 49, 69, 48, 49, 7, 117, 110, 105, 49, 70, 52, 68, 7, 117, 110, 105, 48, 52, 48, 48, 7, 117, 110, 105, 48, 52, 48, 68, 7, 117, 110, 105, 48, 52, 53, 48, 7, 117, 110, 105, 48, 52, 53, 68, 7, 117, 110, 105, 48, 52, 55, 48, 7, 117, 110, 105, 48, 52, 55, 49, 7, 117, 110, 105, 48, 52, 55, 54, 7, 117, 110, 105, 48, 52, 55, 55, 7, 117, 110, 105, 48, 52, 57, 56, 7, 117, 110, 105, 48, 52, 57, 57, 7, 117, 110, 105, 48, 52, 65, 65, 7, 117, 110, 105, 48, 52, 65, 66, 7, 117, 110, 105, 48, 52, 65, 69, 7, 117, 110, 105, 48, 52, 65, 70, 7, 117, 110, 105, 48, 52, 67, 48, 7, 117, 110, 105, 48, 52, 67, 49, 7, 117, 110, 105, 48, 52, 67, 50, 7, 117, 110, 105, 48, 52, 67, 70, 7, 117, 110, 105, 48, 52, 68, 48, 7, 117, 110, 105, 48, 52, 68, 49, 7, 117, 110, 105, 48, 52, 68, 50, 7, 117, 110, 105, 48, 52, 68, 51, 7, 117, 110, 105, 48, 52, 68, 52, 7, 117, 110, 105, 48, 52, 68, 53, 7, 117, 110, 105, 48, 52, 68, 54, 7, 117, 110, 105, 48, 52, 68, 55, 7, 117, 110, 105, 48, 52, 68, 65, 7, 117, 110, 105, 48, 52, 68, 57, 7, 117, 110, 105, 48, 52, 68, 66, 7, 117, 110, 105, 48, 52, 68, 67, 7, 117, 110, 105, 48, 52, 68, 68, 7, 117, 110, 105, 48, 52, 68, 69, 7, 117, 110, 105, 48, 52, 68, 70, 7, 117, 110, 105, 48, 52, 69, 50, 7, 117, 110, 105, 48, 52, 69, 51, 7, 117, 110, 105, 48, 52, 69, 52, 7, 117, 110, 105, 48, 52, 69, 53, 7, 117, 110, 105, 48, 52, 69, 54, 7, 117, 110, 105, 48, 52, 69, 55, 7, 117, 110, 105, 48, 52, 69, 56, 7, 117, 110, 105, 48, 52, 69, 57, 7, 117, 110, 105, 48, 52, 69, 65, 7, 117, 110, 105, 48, 52, 69, 66, 7, 117, 110, 105, 48, 52, 69, 67, 7, 117, 110, 105, 48, 52, 69, 68, 7, 117, 110, 105, 48, 52, 69, 69, 7, 117, 110, 105, 48, 52, 69, 70, 7, 117, 110, 105, 48, 52, 70, 48, 7, 117, 110, 105, 48, 52, 70, 49, 7, 117, 110, 105, 48, 52, 70, 50, 7, 117, 110, 105, 48, 52, 70, 51, 7, 117, 110, 105, 48, 52, 70, 52, 7, 117, 110, 105, 48, 52, 70, 53, 7, 117, 110, 105, 48, 52, 70, 56, 7, 117, 110, 105, 48, 52, 70, 57, 7, 117, 110, 105, 48, 52, 70, 67, 7, 117, 110, 105, 48, 52, 70, 68, 7, 117, 110, 105, 48, 53, 48, 49, 7, 117, 110, 105, 48, 53, 49, 50, 7, 117, 110, 105, 48, 53, 49, 51, 7, 117, 110, 105, 49, 69, 65, 48, 7, 117, 110, 105, 49, 69, 65, 49, 7, 117, 110, 105, 49, 69, 65, 50, 7, 117, 110, 105, 49, 69, 65, 51, 7, 117, 110, 105, 49, 69, 65, 52, 7, 117, 110, 105, 49, 69, 65, 53, 7, 117, 110, 105, 49, 69, 65, 54, 7, 117, 110, 105, 49, 69, 65, 55, 7, 117, 110, 105, 49, 69, 65, 56, 7, 117, 110, 105, 49, 69, 65, 57, 7, 117, 110, 105, 49, 69, 65, 65, 7, 117, 110, 105, 49, 69, 65, 66, 7, 117, 110, 105, 49, 69, 65, 67, 7, 117, 110, 105, 49, 69, 65, 68, 7, 117, 110, 105, 49, 69, 65, 69, 7, 117, 110, 105, 49, 69, 65, 70, 7, 117, 110, 105, 49, 69, 66, 48, 7, 117, 110, 105, 49, 69, 66, 49, 7, 117, 110, 105, 49, 69, 66, 50, 7, 117, 110, 105, 49, 69, 66, 51, 7, 117, 110, 105, 49, 69, 66, 52, 7, 117, 110, 105, 49, 69, 66, 53, 7, 117, 110, 105, 49, 69, 66, 54, 7, 117, 110, 105, 49, 69, 66, 55, 7, 117, 110, 105, 49, 69, 66, 56, 7, 117, 110, 105, 49, 69, 66, 57, 7, 117, 110, 105, 49, 69, 66, 65, 7, 117, 110, 105, 49, 69, 66, 66, 7, 117, 110, 105, 49, 69, 66, 67, 7, 117, 110, 105, 49, 69, 66, 68, 7, 117, 110, 105, 49, 69, 66, 69, 7, 117, 110, 105, 49, 69, 66, 70, 7, 117, 110, 105, 49, 69, 67, 48, 7, 117, 110, 105, 49, 69, 67, 49, 7, 117, 110, 105, 49, 69, 67, 50, 7, 117, 110, 105, 49, 69, 67, 51, 7, 117, 110, 105, 49, 69, 67, 52, 7, 117, 110, 105, 49, 69, 67, 53, 7, 117, 110, 105, 49, 69, 67, 54, 7, 117, 110, 105, 49, 69, 67, 55, 7, 117, 110, 105, 49, 69, 67, 56, 7, 117, 110, 105, 49, 69, 67, 57, 7, 117, 110, 105, 49, 69, 67, 65, 7, 117, 110, 105, 49, 69, 67, 66, 7, 117, 110, 105, 49, 69, 67, 67, 7, 117, 110, 105, 49, 69, 67, 68, 7, 117, 110, 105, 49, 69, 67, 69, 7, 117, 110, 105, 49, 69, 67, 70, 7, 117, 110, 105, 49, 69, 68, 48, 7, 117, 110, 105, 49, 69, 68, 49, 7, 117, 110, 105, 49, 69, 68, 50, 7, 117, 110, 105, 49, 69, 68, 51, 7, 117, 110, 105, 49, 69, 68, 52, 7, 117, 110, 105, 49, 69, 68, 53, 7, 117, 110, 105, 49, 69, 68, 54, 7, 117, 110, 105, 49, 69, 68, 55, 7, 117, 110, 105, 49, 69, 68, 56, 7, 117, 110, 105, 49, 69, 68, 57, 7, 117, 110, 105, 49, 69, 68, 65, 7, 117, 110, 105, 49, 69, 68, 66, 7, 117, 110, 105, 49, 69, 68, 67, 7, 117, 110, 105, 49, 69, 68, 68, 7, 117, 110, 105, 49, 69, 68, 69, 7, 117, 110, 105, 49, 69, 68, 70, 7, 117, 110, 105, 49, 69, 69, 48, 7, 117, 110, 105, 49, 69, 69, 49, 7, 117, 110, 105, 49, 69, 69, 50, 7, 117, 110, 105, 49, 69, 69, 51, 7, 117, 110, 105, 49, 69, 69, 52, 7, 117, 110, 105, 49, 69, 69, 53, 7, 117, 110, 105, 49, 69, 69, 54, 7, 117, 110, 105, 49, 69, 69, 55, 7, 117, 110, 105, 49, 69, 69, 56, 7, 117, 110, 105, 49, 69, 69, 57, 7, 117, 110, 105, 49, 69, 69, 65, 7, 117, 110, 105, 49, 69, 69, 66, 7, 117, 110, 105, 49, 69, 69, 67, 7, 117, 110, 105, 49, 69, 69, 68, 7, 117, 110, 105, 49, 69, 69, 69, 7, 117, 110, 105, 49, 69, 69, 70, 7, 117, 110, 105, 49, 69, 70, 48, 7, 117, 110, 105, 49, 69, 70, 49, 7, 117, 110, 105, 49, 69, 70, 52, 7, 117, 110, 105, 49, 69, 70, 53, 7, 117, 110, 105, 49, 69, 70, 54, 7, 117, 110, 105, 49, 69, 70, 55, 7, 117, 110, 105, 49, 69, 70, 56, 7, 117, 110, 105, 49, 69, 70, 57, 7, 117, 110, 105, 50, 48, 65, 66, 7, 117, 110, 105, 48, 52, 57, 65, 7, 117, 110, 105, 48, 52, 57, 66, 7, 117, 110, 105, 48, 52, 65, 50, 7, 117, 110, 105, 48, 52, 65, 51, 7, 117, 110, 105, 48, 52, 65, 67, 7, 117, 110, 105, 48, 52, 65, 68, 7, 117, 110, 105, 48, 52, 66, 50, 7, 117, 110, 105, 48, 52, 66, 51, 7, 117, 110, 105, 48, 52, 66, 54, 7, 117, 110, 105, 48, 52, 66, 55, 7, 117, 110, 105, 48, 52, 67, 66, 7, 117, 110, 105, 48, 52, 67, 67, 7, 117, 110, 105, 48, 52, 70, 54, 7, 117, 110, 105, 48, 52, 70, 55, 7, 117, 110, 105, 48, 52, 57, 54, 7, 117, 110, 105, 48, 52, 57, 55, 7, 117, 110, 105, 48, 52, 66, 69, 7, 117, 110, 105, 48, 52, 66, 70, 7, 117, 110, 105, 48, 52, 66, 66, 7, 117, 110, 105, 48, 52, 56, 68, 7, 117, 110, 105, 48, 52, 56, 67, 7, 117, 110, 105, 48, 52, 54, 50, 7, 117, 110, 105, 48, 52, 57, 50, 7, 117, 110, 105, 48, 52, 57, 51, 7, 117, 110, 105, 48, 52, 57, 69, 7, 117, 110, 105, 48, 52, 57, 70, 7, 117, 110, 105, 48, 52, 56, 65, 7, 117, 110, 105, 48, 52, 56, 66, 7, 117, 110, 105, 48, 52, 67, 57, 7, 117, 110, 105, 48, 52, 67, 65, 7, 117, 110, 105, 48, 52, 67, 68, 7, 117, 110, 105, 48, 52, 67, 69, 7, 117, 110, 105, 48, 52, 67, 53, 7, 117, 110, 105, 48, 52, 67, 54, 7, 117, 110, 105, 48, 52, 66, 48, 7, 117, 110, 105, 48, 52, 66, 49, 7, 117, 110, 105, 48, 52, 70, 69, 7, 117, 110, 105, 48, 52, 70, 70, 7, 117, 110, 105, 48, 53, 49, 49, 7, 117, 110, 105, 50, 48, 49, 53, 0, 1, 0, 1, 255, 255, 0, 15, 0, 1, 0, 0, 0, 10, 0, 48, 0, 62, 0, 4, 68, 70, 76, 84, 0, 26, 99, 121, 114, 108, 0, 26, 103, 114, 101, 107, 0, 26, 108, 97, 116, 110, 0, 26, 0, 4, 0, 0, 0, 0, 255, 255, 0, 1, 0, 0, 0, 1, 115, 109, 99, 112, 0, 8, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 1, 190, 0, 220, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 112, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 112, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 130, 2, 114, 2, 133, 2, 160, 2, 134, 2, 136, 2, 132, 2, 159, 2, 161, 2, 137, 2, 138, 2, 135, 2, 162, 2, 164, 2, 139, 2, 163, 2, 165, 2, 129, 2, 141, 2, 167, 2, 170, 2, 142, 2, 143, 2, 168, 2, 140, 2, 166, 2, 169, 2, 130, 2, 172, 2, 171, 2, 173, 2, 174, 2, 145, 2, 177, 2, 146, 2, 147, 2, 179, 2, 144, 2, 176, 2, 178, 2, 175, 2, 180, 2, 181, 2, 182, 2, 184, 2, 183, 2, 185, 2, 186, 2, 188, 2, 187, 2, 148, 2, 150, 2, 190, 2, 151, 2, 153, 2, 149, 2, 191, 2, 189, 2, 152, 2, 192, 2, 194, 2, 193, 2, 195, 2, 198, 2, 197, 2, 196, 2, 131, 2, 199, 2, 155, 2, 202, 2, 156, 2, 157, 2, 154, 2, 204, 2, 201, 2, 205, 2, 203, 2, 200, 2, 206, 2, 158, 2, 207, 2, 208, 2, 209, 2, 211, 2, 210, 2, 133, 2, 160, 2, 134, 2, 136, 2, 132, 2, 159, 2, 161, 2, 137, 2, 138, 2, 135, 2, 162, 2, 164, 2, 139, 2, 163, 2, 165, 2, 129, 2, 141, 2, 167, 2, 170, 2, 142, 2, 143, 2, 168, 2, 140, 2, 166, 2, 169, 2, 172, 2, 171, 2, 173, 2, 174, 2, 145, 2, 177, 2, 146, 2, 147, 2, 144, 2, 176, 2, 178, 2, 175, 2, 180, 2, 181, 2, 182, 2, 184, 2, 183, 2, 185, 2, 186, 2, 188, 2, 187, 2, 148, 2, 150, 2, 190, 2, 151, 2, 153, 2, 149, 2, 191, 2, 189, 2, 152, 2, 192, 2, 194, 2, 193, 2, 195, 2, 198, 2, 197, 2, 196, 2, 131, 2, 199, 2, 155, 2, 202, 2, 156, 2, 157, 2, 154, 2, 204, 2, 201, 2, 205, 2, 203, 2, 200, 2, 206, 2, 158, 2, 207, 2, 208, 2, 209, 2, 211, 2, 210, 2, 127, 2, 127, 0, 2, 0, 26, 0, 2, 0, 53, 0, 0, 0, 76, 0, 76, 0, 52, 0, 80, 0, 80, 0, 53, 0, 158, 0, 167, 0, 54, 0, 169, 0, 182, 0, 64, 0, 184, 0, 188, 0, 78, 0, 190, 0, 205, 0, 83, 0, 207, 0, 215, 0, 99, 0, 217, 0, 218, 0, 108, 0, 221, 0, 235, 0, 110, 0, 237, 0, 241, 0, 125, 0, 243, 0, 243, 0, 130, 0, 246, 0, 248, 0, 131, 0, 250, 1, 6, 0, 134, 1, 8, 1, 21, 0, 147, 1, 23, 1, 26, 0, 161, 1, 28, 1, 42, 0, 165, 1, 44, 1, 52, 0, 180, 1, 54, 1, 55, 0, 189, 1, 58, 1, 72, 0, 191, 1, 74, 1, 78, 0, 206, 1, 80, 1, 80, 0, 211, 1, 83, 1, 85, 0, 212, 1, 87, 1, 89, 0, 215, 2, 126, 2, 126, 0, 218, 2, 128, 2, 128, 0, 219, 0, 1, 0, 1, 0, 8, 0, 2, 0, 0, 0, 20, 0, 2, 0, 0, 0, 36, 0, 2, 119, 103, 104, 116, 1, 0, 0, 0, 105, 116, 97, 108, 1, 11, 0, 1, 0, 4, 0, 16, 0, 1, 0, 0, 0, 0, 1, 16, 2, 188, 0, 0, 0, 3, 0, 1, 0, 2, 1, 17, 0, 0, 0, 0, 0, 1, 0, 0) +font_name = "Roboto Mono" +style_name = "Bold" +font_style = 5 +font_weight = 700 +msdf_pixel_range = 8 +fixed_size = 14 +cache/0/16/0/ascent = 15.0 +cache/0/16/0/descent = 4.0 +cache/0/16/0/underline_position = 1.375 +cache/0/16/0/underline_thickness = 0.6875 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/14/0/ascent = 15.0 +cache/0/14/0/descent = 4.0 +cache/0/14/0/underline_position = 1.375 +cache/0/14/0/underline_thickness = 0.6875 +cache/0/14/0/scale = 1.0 +cache/0/14/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/14/0/kerning_overrides/14/0 = Vector2(0, 0) + +[sub_resource type="FontFile" id="FontFile_uy7mm"] +data = PackedByteArray(0, 1, 0, 0, 0, 14, 0, 128, 0, 3, 0, 96, 71, 83, 85, 66, 54, 189, 53, 203, 0, 1, 107, 228, 0, 0, 2, 168, 79, 83, 47, 50, 152, 226, 171, 67, 0, 1, 62, 204, 0, 0, 0, 96, 83, 84, 65, 84, 231, 108, 204, 46, 0, 1, 110, 140, 0, 0, 0, 68, 99, 109, 97, 112, 136, 53, 174, 103, 0, 1, 63, 44, 0, 0, 7, 80, 103, 97, 115, 112, 0, 0, 0, 16, 0, 1, 107, 220, 0, 0, 0, 8, 103, 108, 121, 102, 12, 74, 140, 60, 0, 0, 0, 236, 0, 1, 45, 194, 104, 101, 97, 100, 2, 59, 156, 14, 0, 1, 54, 160, 0, 0, 0, 54, 104, 104, 101, 97, 11, 181, 0, 151, 0, 1, 62, 168, 0, 0, 0, 36, 104, 109, 116, 120, 181, 159, 193, 58, 0, 1, 54, 216, 0, 0, 7, 208, 108, 111, 99, 97, 59, 113, 133, 84, 0, 1, 46, 208, 0, 0, 7, 208, 109, 97, 120, 112, 4, 6, 1, 98, 0, 1, 46, 176, 0, 0, 0, 32, 110, 97, 109, 101, 93, 18, 136, 85, 0, 1, 70, 132, 0, 0, 3, 154, 112, 111, 115, 116, 151, 175, 175, 6, 0, 1, 74, 32, 0, 0, 33, 188, 112, 114, 101, 112, 104, 6, 140, 133, 0, 1, 70, 124, 0, 0, 0, 7, 0, 2, 255, 226, 0, 0, 4, 2, 5, 176, 0, 7, 0, 10, 0, 0, 65, 19, 51, 3, 35, 1, 51, 19, 55, 1, 19, 3, 39, 46, 173, 195, 152, 253, 59, 188, 180, 75, 1, 43, 76, 1, 121, 254, 135, 5, 176, 250, 80, 1, 121, 161, 2, 118, 253, 138, 0, 3, 0, 62, 0, 0, 4, 114, 5, 176, 0, 26, 0, 41, 0, 56, 0, 0, 115, 33, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 19, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 37, 19, 19, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 62, 1, 209, 96, 184, 73, 72, 94, 7, 4, 21, 25, 25, 76, 52, 52, 95, 37, 36, 47, 5, 8, 62, 57, 58, 153, 84, 254, 103, 47, 1, 41, 54, 85, 28, 28, 25, 7, 8, 61, 46, 46, 113, 61, 254, 246, 118, 80, 1, 0, 49, 87, 31, 31, 31, 7, 7, 60, 44, 44, 108, 55, 56, 55, 55, 160, 103, 54, 102, 44, 43, 69, 20, 22, 59, 38, 38, 97, 61, 93, 139, 48, 47, 49, 3, 1, 252, 249, 1, 3, 39, 33, 34, 91, 54, 63, 100, 34, 35, 38, 1, 2, 2, 166, 1, 207, 1, 2, 29, 27, 27, 81, 54, 59, 90, 31, 31, 32, 1, 0, 1, 0, 100, 255, 233, 4, 133, 5, 198, 0, 63, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 4, 22, 174, 18, 59, 43, 43, 113, 72, 63, 88, 28, 28, 29, 5, 5, 6, 7, 34, 9, 31, 24, 23, 63, 43, 42, 107, 66, 68, 91, 29, 28, 26, 3, 179, 4, 53, 51, 51, 152, 103, 91, 152, 62, 63, 98, 36, 37, 49, 13, 32, 10, 4, 17, 16, 62, 49, 48, 133, 86, 105, 177, 69, 68, 92, 1, 184, 3, 64, 114, 42, 42, 48, 3, 2, 49, 40, 39, 101, 54, 54, 109, 47, 206, 54, 117, 56, 55, 100, 37, 36, 42, 2, 2, 55, 44, 44, 112, 60, 96, 168, 63, 63, 75, 2, 2, 51, 45, 46, 125, 72, 73, 158, 79, 203, 73, 151, 71, 71, 126, 47, 48, 57, 2, 3, 69, 62, 62, 171, 0, 0, 2, 0, 46, 0, 0, 4, 119, 5, 176, 0, 21, 0, 43, 0, 0, 115, 33, 50, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 23, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 39, 46, 1, 83, 104, 185, 78, 70, 123, 46, 47, 64, 15, 15, 11, 12, 21, 23, 84, 59, 63, 165, 102, 254, 196, 158, 155, 75, 114, 41, 37, 51, 12, 16, 4, 9, 16, 12, 46, 33, 34, 91, 56, 57, 138, 80, 133, 50, 46, 41, 120, 72, 74, 175, 96, 107, 85, 159, 71, 75, 129, 45, 50, 58, 2, 1, 152, 1, 3, 45, 37, 35, 91, 51, 59, 131, 67, 110, 71, 133, 57, 57, 97, 33, 36, 39, 1, 1, 0, 0, 1, 0, 72, 0, 0, 4, 161, 5, 176, 0, 11, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 33, 55, 33, 19, 3, 191, 28, 253, 178, 81, 2, 167, 28, 252, 164, 253, 3, 100, 28, 253, 80, 90, 2, 161, 157, 1, 212, 158, 250, 80, 157, 2, 4, 0, 0, 1, 0, 81, 0, 0, 4, 178, 5, 176, 0, 9, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 51, 19, 3, 195, 27, 253, 180, 87, 2, 173, 28, 252, 155, 252, 182, 112, 2, 131, 157, 1, 242, 158, 250, 80, 2, 131, 0, 1, 0, 96, 255, 232, 4, 133, 5, 198, 0, 61, 0, 0, 101, 19, 33, 7, 33, 3, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 3, 252, 82, 254, 53, 27, 1, 31, 57, 61, 159, 85, 63, 89, 30, 31, 35, 7, 8, 2, 7, 28, 9, 33, 24, 24, 67, 43, 43, 108, 67, 64, 91, 29, 29, 30, 4, 177, 2, 56, 52, 53, 153, 98, 92, 154, 63, 64, 100, 37, 38, 50, 13, 26, 10, 7, 19, 18, 68, 51, 50, 136, 86, 143, 251, 191, 2, 22, 156, 254, 185, 63, 45, 5, 3, 51, 40, 39, 101, 55, 54, 111, 49, 172, 55, 118, 57, 56, 102, 38, 37, 43, 2, 2, 47, 40, 40, 104, 57, 94, 162, 60, 60, 70, 2, 2, 53, 47, 48, 129, 74, 75, 161, 79, 169, 74, 155, 72, 73, 129, 48, 49, 59, 3, 5, 111, 0, 1, 0, 32, 0, 0, 4, 180, 5, 176, 0, 11, 0, 0, 97, 19, 35, 3, 33, 19, 35, 3, 51, 19, 33, 3, 3, 183, 253, 171, 109, 253, 190, 109, 170, 253, 170, 117, 2, 66, 117, 5, 176, 253, 142, 2, 114, 250, 80, 2, 161, 253, 95, 0, 0, 1, 0, 64, 0, 0, 4, 148, 5, 176, 0, 11, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 33, 55, 1, 61, 29, 1, 76, 197, 254, 181, 28, 3, 87, 28, 254, 173, 197, 1, 82, 29, 5, 176, 161, 251, 145, 160, 160, 4, 111, 161, 0, 1, 0, 63, 255, 234, 4, 140, 5, 176, 0, 27, 0, 0, 65, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 3, 211, 173, 11, 57, 43, 43, 111, 66, 62, 88, 28, 28, 26, 2, 182, 1, 53, 51, 50, 148, 97, 102, 180, 70, 69, 92, 15, 173, 5, 176, 252, 11, 62, 112, 42, 43, 49, 2, 1, 48, 39, 39, 101, 56, 1, 92, 160, 59, 60, 69, 2, 2, 70, 63, 63, 170, 99, 3, 245, 0, 1, 0, 62, 0, 0, 4, 252, 5, 176, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 7, 19, 35, 3, 51, 19, 2, 16, 1, 52, 207, 254, 131, 2, 102, 234, 254, 5, 158, 123, 185, 253, 185, 84, 2, 162, 253, 94, 3, 42, 2, 134, 253, 233, 165, 2, 188, 250, 80, 1, 227, 0, 1, 0, 88, 0, 0, 3, 219, 5, 176, 0, 5, 0, 0, 101, 19, 35, 3, 33, 55, 1, 40, 225, 181, 252, 3, 103, 28, 157, 5, 19, 250, 80, 157, 0, 1, 0, 39, 0, 0, 4, 192, 5, 176, 0, 14, 0, 0, 65, 35, 3, 51, 27, 2, 51, 1, 3, 3, 51, 19, 35, 1, 1, 255, 219, 253, 176, 99, 91, 107, 105, 1, 133, 116, 102, 176, 252, 228, 254, 138, 5, 176, 250, 80, 2, 60, 2, 93, 252, 252, 2, 255, 253, 186, 253, 178, 5, 176, 253, 42, 0, 1, 0, 34, 0, 0, 4, 179, 5, 176, 0, 9, 0, 0, 97, 19, 35, 3, 1, 35, 3, 51, 19, 1, 3, 182, 253, 183, 193, 254, 150, 178, 253, 183, 193, 1, 106, 5, 176, 251, 186, 4, 70, 250, 80, 4, 72, 251, 184, 0, 0, 2, 0, 102, 255, 234, 4, 109, 5, 198, 0, 37, 0, 75, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 73, 26, 10, 3, 14, 15, 59, 47, 47, 131, 87, 90, 151, 61, 62, 97, 35, 36, 47, 13, 26, 10, 3, 15, 15, 60, 47, 47, 131, 86, 90, 151, 62, 61, 96, 36, 35, 47, 140, 27, 9, 30, 22, 23, 62, 41, 41, 106, 65, 62, 85, 28, 28, 28, 5, 5, 6, 6, 28, 9, 30, 23, 23, 63, 42, 41, 105, 65, 62, 85, 28, 27, 28, 5, 4, 7, 2, 133, 165, 71, 153, 74, 73, 132, 50, 50, 61, 2, 2, 54, 48, 49, 132, 74, 75, 159, 77, 166, 71, 152, 73, 73, 132, 50, 50, 61, 2, 2, 54, 48, 48, 132, 75, 74, 159, 246, 170, 53, 116, 56, 57, 102, 38, 39, 43, 2, 2, 51, 41, 40, 104, 55, 55, 108, 45, 169, 52, 116, 57, 56, 101, 39, 38, 43, 2, 2, 50, 40, 40, 103, 54, 55, 108, 0, 2, 0, 81, 0, 0, 4, 167, 5, 176, 0, 16, 0, 31, 0, 0, 65, 5, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 51, 19, 19, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 1, 107, 1, 33, 100, 185, 73, 72, 92, 9, 8, 55, 54, 55, 155, 92, 254, 65, 252, 180, 128, 99, 1, 32, 59, 91, 30, 29, 25, 7, 8, 61, 46, 47, 118, 66, 2, 72, 1, 60, 57, 57, 165, 105, 95, 155, 56, 56, 63, 3, 1, 250, 80, 2, 224, 2, 56, 1, 3, 45, 37, 37, 99, 57, 67, 108, 37, 38, 41, 0, 0, 2, 0, 93, 255, 10, 4, 119, 5, 198, 0, 40, 0, 78, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 23, 55, 39, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 89, 20, 10, 2, 14, 15, 60, 48, 48, 135, 89, 93, 155, 63, 64, 99, 36, 37, 49, 13, 20, 10, 2, 15, 15, 60, 48, 47, 134, 89, 33, 65, 32, 235, 135, 207, 70, 106, 39, 38, 50, 146, 21, 9, 31, 23, 23, 64, 43, 43, 110, 69, 65, 89, 28, 29, 28, 4, 5, 7, 7, 21, 9, 31, 24, 23, 65, 44, 43, 109, 68, 65, 90, 28, 28, 28, 4, 4, 7, 2, 152, 127, 73, 157, 76, 75, 136, 52, 51, 63, 2, 2, 56, 49, 50, 136, 76, 77, 164, 79, 128, 72, 156, 75, 75, 136, 51, 52, 62, 2, 1, 8, 8, 243, 113, 214, 52, 132, 75, 75, 165, 214, 131, 56, 121, 58, 59, 106, 39, 40, 44, 2, 2, 53, 42, 42, 107, 57, 57, 113, 47, 131, 55, 120, 59, 58, 105, 40, 39, 45, 2, 2, 52, 41, 42, 107, 57, 57, 112, 0, 0, 2, 0, 71, 0, 0, 4, 127, 5, 176, 0, 20, 0, 35, 0, 0, 65, 19, 51, 55, 3, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 51, 19, 55, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 2, 128, 173, 191, 2, 195, 66, 115, 45, 44, 56, 6, 8, 57, 56, 56, 160, 95, 254, 109, 253, 180, 103, 26, 97, 246, 60, 95, 32, 31, 27, 7, 8, 64, 47, 48, 120, 64, 2, 82, 253, 174, 13, 2, 106, 27, 74, 49, 49, 122, 75, 99, 157, 55, 54, 60, 3, 1, 250, 80, 2, 82, 152, 2, 46, 1, 3, 40, 35, 36, 99, 61, 67, 106, 36, 37, 39, 0, 0, 1, 0, 83, 255, 234, 4, 141, 5, 198, 0, 73, 0, 0, 65, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 35, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 103, 7, 60, 45, 45, 110, 56, 64, 101, 35, 36, 41, 3, 183, 2, 70, 63, 62, 167, 96, 90, 180, 73, 73, 96, 7, 6, 63, 55, 55, 143, 74, 45, 95, 38, 39, 45, 6, 6, 57, 43, 43, 106, 54, 63, 91, 31, 30, 31, 3, 184, 3, 62, 56, 57, 158, 94, 89, 176, 71, 72, 92, 6, 5, 64, 55, 54, 140, 71, 47, 99, 39, 38, 44, 1, 120, 60, 91, 30, 30, 29, 1, 1, 43, 37, 37, 103, 63, 98, 162, 57, 58, 65, 1, 2, 50, 51, 50, 151, 98, 90, 139, 53, 53, 77, 27, 16, 42, 30, 29, 82, 58, 58, 91, 32, 31, 33, 1, 2, 45, 38, 38, 101, 58, 94, 159, 59, 58, 68, 2, 2, 54, 53, 53, 152, 95, 87, 133, 50, 51, 74, 27, 18, 44, 31, 32, 87, 0, 1, 0, 194, 0, 0, 4, 247, 5, 176, 0, 7, 0, 0, 65, 55, 33, 7, 33, 3, 51, 19, 4, 219, 28, 251, 231, 28, 1, 181, 225, 176, 225, 5, 18, 158, 158, 250, 238, 5, 18, 0, 0, 1, 0, 104, 255, 234, 4, 181, 5, 176, 0, 29, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 4, 181, 175, 172, 12, 56, 43, 44, 117, 71, 67, 91, 27, 27, 18, 7, 165, 172, 170, 11, 44, 51, 50, 154, 100, 106, 182, 70, 70, 92, 15, 5, 176, 252, 38, 64, 122, 47, 47, 55, 2, 2, 61, 47, 47, 116, 59, 3, 219, 252, 37, 94, 175, 67, 68, 83, 2, 2, 78, 68, 67, 180, 100, 0, 0, 1, 0, 205, 0, 0, 4, 230, 5, 176, 0, 8, 0, 0, 97, 51, 1, 35, 1, 7, 39, 3, 35, 1, 168, 157, 2, 161, 198, 254, 28, 30, 10, 139, 188, 5, 176, 251, 191, 67, 76, 4, 56, 0, 0, 1, 0, 149, 0, 0, 5, 3, 5, 176, 0, 18, 0, 0, 115, 51, 1, 55, 23, 19, 51, 1, 35, 3, 7, 39, 3, 35, 1, 7, 55, 19, 35, 149, 187, 1, 62, 36, 1, 8, 184, 1, 144, 174, 254, 20, 1, 14, 158, 254, 200, 33, 6, 52, 170, 3, 213, 112, 121, 252, 52, 5, 176, 252, 43, 79, 77, 3, 215, 252, 71, 102, 102, 3, 185, 0, 0, 1, 255, 241, 0, 0, 4, 238, 5, 176, 0, 11, 0, 0, 65, 3, 35, 1, 1, 51, 1, 19, 51, 1, 1, 35, 2, 134, 211, 201, 1, 38, 253, 225, 224, 1, 148, 220, 201, 254, 210, 2, 18, 223, 3, 118, 2, 58, 253, 55, 253, 25, 2, 69, 253, 187, 2, 213, 2, 219, 0, 1, 0, 212, 0, 0, 4, 241, 5, 176, 0, 8, 0, 0, 65, 3, 35, 1, 3, 51, 19, 1, 35, 2, 90, 194, 196, 1, 23, 94, 168, 95, 2, 93, 215, 2, 214, 2, 218, 252, 122, 253, 214, 2, 20, 3, 156, 0, 0, 1, 0, 19, 0, 0, 4, 129, 5, 176, 0, 9, 0, 0, 119, 1, 55, 33, 7, 33, 1, 7, 33, 55, 252, 3, 112, 21, 252, 128, 26, 2, 174, 252, 147, 21, 3, 167, 25, 157, 4, 125, 150, 158, 251, 135, 153, 157, 0, 2, 0, 97, 255, 236, 4, 15, 4, 80, 0, 56, 0, 79, 0, 0, 97, 51, 55, 38, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 39, 34, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 6, 20, 37, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 23, 7, 6, 6, 7, 6, 6, 2, 252, 183, 2, 13, 1, 9, 84, 9, 52, 50, 51, 142, 82, 74, 154, 64, 65, 88, 9, 181, 10, 50, 35, 34, 83, 43, 49, 81, 28, 28, 27, 6, 13, 206, 60, 123, 57, 58, 102, 39, 39, 49, 4, 4, 49, 45, 44, 121, 68, 64, 117, 52, 27, 51, 24, 3, 254, 215, 41, 68, 24, 24, 22, 5, 4, 29, 21, 18, 44, 25, 55, 125, 55, 155, 39, 27, 69, 39, 41, 93, 17, 54, 110, 55, 1, 247, 87, 134, 47, 46, 48, 2, 1, 39, 40, 40, 121, 82, 1, 45, 65, 21, 21, 20, 1, 1, 28, 27, 27, 78, 51, 86, 1, 15, 17, 18, 56, 40, 41, 108, 70, 72, 114, 40, 40, 44, 1, 1, 33, 30, 16, 38, 21, 30, 58, 110, 1, 24, 23, 22, 66, 43, 37, 57, 22, 18, 27, 10, 22, 14, 1, 220, 37, 61, 22, 22, 24, 0, 2, 0, 65, 255, 233, 4, 32, 6, 0, 0, 35, 0, 67, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 35, 1, 51, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 4, 23, 2, 7, 4, 12, 13, 49, 39, 40, 111, 73, 59, 106, 46, 27, 49, 23, 108, 181, 254, 245, 168, 36, 18, 42, 24, 42, 103, 56, 77, 128, 52, 52, 80, 29, 29, 37, 169, 3, 8, 34, 27, 21, 55, 33, 35, 84, 50, 44, 72, 28, 25, 38, 13, 82, 25, 59, 35, 34, 80, 47, 46, 70, 23, 23, 32, 7, 12, 1, 2, 23, 21, 61, 127, 61, 60, 106, 41, 40, 48, 2, 1, 27, 28, 16, 42, 25, 2, 59, 250, 0, 124, 27, 42, 17, 29, 29, 1, 2, 44, 40, 40, 108, 62, 62, 135, 89, 21, 57, 115, 51, 39, 66, 23, 24, 26, 1, 1, 27, 24, 21, 58, 36, 1, 220, 36, 62, 23, 22, 24, 1, 1, 28, 25, 26, 61, 36, 51, 110, 0, 1, 0, 122, 255, 233, 4, 44, 4, 81, 0, 60, 0, 0, 101, 38, 38, 39, 38, 38, 39, 38, 52, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 2, 21, 53, 77, 27, 27, 32, 7, 8, 5, 5, 7, 29, 22, 21, 58, 37, 39, 95, 57, 52, 82, 29, 28, 28, 2, 170, 4, 54, 50, 51, 142, 84, 116, 193, 70, 71, 91, 14, 5, 5, 5, 11, 16, 65, 45, 48, 130, 83, 79, 160, 66, 66, 90, 9, 171, 11, 56, 39, 40, 96, 129, 1, 36, 29, 28, 77, 43, 42, 90, 43, 42, 49, 97, 43, 43, 74, 27, 29, 31, 2, 2, 38, 32, 33, 86, 50, 1, 85, 143, 52, 51, 60, 2, 3, 85, 73, 77, 200, 110, 43, 56, 109, 50, 67, 117, 43, 43, 51, 2, 2, 51, 48, 47, 135, 83, 1, 49, 79, 27, 28, 29, 0, 0, 2, 0, 118, 255, 235, 4, 160, 6, 0, 0, 35, 0, 64, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 51, 1, 35, 3, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 52, 126, 2, 6, 6, 14, 14, 51, 40, 39, 109, 70, 56, 101, 45, 29, 55, 25, 19, 164, 1, 11, 181, 104, 20, 46, 25, 40, 91, 50, 77, 130, 52, 53, 83, 30, 30, 38, 170, 3, 9, 51, 43, 43, 124, 84, 38, 65, 27, 27, 41, 15, 87, 22, 50, 28, 36, 86, 50, 51, 74, 25, 25, 28, 6, 7, 2, 31, 21, 59, 124, 59, 60, 107, 41, 41, 49, 2, 1, 24, 25, 16, 43, 27, 114, 6, 0, 253, 206, 26, 40, 15, 23, 23, 1, 2, 44, 40, 40, 108, 63, 63, 136, 88, 21, 72, 145, 59, 58, 72, 3, 1, 21, 19, 19, 55, 35, 254, 7, 30, 53, 20, 25, 28, 2, 1, 36, 30, 29, 76, 43, 42, 88, 0, 0, 2, 0, 108, 255, 234, 4, 43, 4, 80, 0, 36, 0, 50, 0, 0, 69, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 55, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 19, 22, 22, 23, 22, 22, 7, 7, 37, 54, 54, 55, 54, 54, 2, 28, 126, 237, 74, 104, 64, 159, 94, 73, 106, 32, 32, 25, 8, 2, 233, 13, 13, 30, 45, 45, 154, 112, 77, 139, 59, 60, 97, 36, 37, 46, 8, 5, 9, 47, 54, 54, 167, 242, 59, 88, 28, 28, 20, 9, 4, 253, 204, 21, 64, 44, 43, 112, 20, 2, 105, 104, 88, 66, 80, 3, 2, 62, 50, 50, 126, 66, 83, 100, 189, 74, 74, 91, 3, 2, 42, 38, 39, 106, 63, 63, 139, 71, 43, 104, 186, 71, 71, 86, 3, 200, 2, 51, 41, 41, 104, 55, 18, 2, 58, 114, 44, 44, 53, 0, 1, 0, 205, 0, 0, 4, 233, 6, 45, 0, 29, 0, 0, 97, 51, 19, 33, 55, 33, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 33, 7, 33, 1, 76, 182, 163, 1, 148, 25, 254, 107, 11, 10, 49, 39, 39, 104, 65, 52, 101, 49, 37, 63, 125, 65, 100, 163, 60, 61, 77, 13, 11, 254, 224, 26, 1, 34, 3, 171, 143, 77, 63, 99, 35, 34, 36, 1, 1, 20, 17, 152, 16, 24, 1, 1, 59, 55, 56, 157, 96, 76, 143, 0, 2, 0, 45, 254, 82, 4, 82, 4, 81, 0, 53, 0, 82, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 35, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 52, 127, 2, 7, 6, 14, 13, 51, 40, 39, 109, 71, 56, 101, 44, 28, 51, 24, 20, 13, 57, 42, 43, 113, 69, 84, 129, 47, 103, 62, 199, 108, 105, 175, 67, 66, 85, 14, 180, 166, 35, 18, 45, 25, 40, 97, 53, 78, 129, 53, 53, 81, 30, 30, 37, 169, 3, 10, 50, 43, 42, 124, 84, 44, 72, 28, 22, 35, 12, 85, 26, 61, 35, 32, 76, 43, 52, 73, 25, 25, 29, 6, 6, 2, 31, 21, 59, 125, 59, 60, 107, 40, 41, 49, 2, 1, 24, 25, 15, 40, 24, 95, 65, 108, 38, 38, 41, 2, 2, 80, 67, 111, 90, 97, 2, 3, 65, 60, 59, 168, 101, 4, 35, 119, 27, 43, 16, 27, 26, 1, 2, 44, 40, 40, 108, 63, 63, 137, 88, 21, 72, 145, 59, 58, 72, 3, 1, 27, 23, 19, 52, 31, 254, 13, 37, 61, 21, 19, 21, 1, 2, 36, 30, 29, 77, 42, 42, 88, 0, 1, 0, 64, 0, 0, 4, 32, 6, 0, 0, 31, 0, 0, 65, 19, 35, 1, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 140, 116, 181, 254, 245, 181, 137, 28, 67, 38, 37, 83, 46, 59, 77, 22, 22, 12, 6, 115, 181, 114, 9, 24, 36, 36, 124, 92, 54, 97, 43, 44, 77, 3, 152, 2, 104, 250, 0, 3, 19, 34, 58, 22, 21, 23, 1, 2, 41, 35, 36, 93, 53, 253, 84, 2, 169, 82, 151, 58, 58, 70, 2, 1, 27, 24, 24, 68, 0, 0, 2, 0, 92, 0, 0, 3, 233, 5, 198, 0, 9, 0, 21, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 3, 20, 22, 55, 54, 54, 53, 52, 38, 7, 6, 6, 1, 24, 28, 1, 101, 132, 254, 156, 29, 3, 112, 29, 254, 169, 160, 155, 61, 47, 48, 60, 60, 47, 48, 60, 4, 58, 161, 253, 7, 160, 160, 3, 154, 1, 25, 48, 57, 2, 2, 59, 48, 49, 60, 2, 2, 63, 0, 2, 0, 35, 254, 73, 3, 196, 5, 198, 0, 23, 0, 35, 0, 0, 65, 7, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 3, 6, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 1, 117, 28, 1, 95, 158, 9, 47, 37, 37, 103, 65, 45, 89, 45, 26, 53, 103, 54, 101, 163, 60, 60, 76, 14, 185, 156, 1, 60, 48, 48, 60, 1, 61, 48, 48, 59, 4, 58, 161, 252, 95, 62, 102, 36, 37, 40, 1, 1, 7, 8, 154, 8, 9, 61, 57, 56, 160, 98, 4, 65, 1, 26, 48, 58, 2, 2, 60, 48, 48, 60, 2, 2, 62, 0, 1, 0, 66, 0, 0, 4, 100, 6, 0, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 7, 19, 35, 1, 51, 19, 1, 218, 1, 41, 215, 254, 136, 2, 2, 236, 254, 110, 133, 162, 182, 254, 245, 182, 63, 1, 247, 254, 9, 2, 110, 1, 204, 254, 159, 123, 3, 162, 250, 0, 1, 110, 0, 0, 1, 0, 92, 0, 0, 3, 233, 6, 0, 0, 9, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 1, 103, 29, 1, 102, 211, 254, 156, 29, 3, 112, 29, 254, 169, 239, 6, 0, 161, 251, 65, 160, 160, 5, 96, 0, 1, 255, 242, 0, 0, 4, 117, 4, 79, 0, 52, 0, 0, 65, 7, 3, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 34, 6, 7, 38, 38, 39, 38, 38, 35, 38, 6, 7, 1, 78, 161, 187, 172, 149, 12, 29, 16, 18, 45, 26, 30, 38, 11, 10, 5, 3, 137, 172, 142, 6, 24, 16, 20, 52, 30, 31, 41, 11, 10, 6, 3, 136, 172, 135, 5, 15, 23, 24, 84, 63, 70, 106, 42, 9, 35, 23, 24, 56, 31, 72, 108, 42, 4, 59, 1, 251, 198, 3, 94, 19, 31, 10, 12, 12, 1, 1, 22, 18, 18, 47, 27, 252, 212, 3, 66, 23, 38, 14, 18, 19, 21, 18, 19, 49, 28, 252, 213, 3, 40, 55, 105, 42, 41, 50, 1, 63, 52, 30, 44, 14, 14, 13, 1, 66, 57, 0, 1, 0, 64, 0, 0, 4, 31, 4, 79, 0, 31, 0, 0, 115, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 7, 64, 181, 135, 27, 65, 37, 37, 85, 47, 60, 78, 22, 21, 11, 6, 115, 181, 113, 12, 26, 36, 37, 124, 91, 54, 98, 44, 44, 78, 33, 23, 161, 3, 9, 36, 63, 23, 22, 25, 1, 1, 41, 35, 35, 94, 55, 253, 84, 2, 164, 82, 161, 57, 56, 68, 2, 1, 25, 24, 24, 68, 40, 161, 1, 0, 2, 0, 99, 255, 233, 4, 48, 4, 81, 0, 31, 0, 57, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 110, 3, 8, 15, 24, 16, 49, 31, 49, 136, 87, 118, 193, 71, 71, 89, 14, 2, 8, 14, 22, 18, 59, 37, 45, 131, 81, 116, 187, 70, 76, 92, 164, 3, 10, 54, 45, 45, 128, 84, 78, 96, 25, 25, 9, 7, 2, 5, 60, 45, 46, 128, 83, 70, 96, 24, 30, 14, 2, 32, 22, 74, 142, 63, 43, 78, 34, 48, 58, 2, 3, 90, 77, 76, 202, 109, 23, 72, 142, 63, 52, 90, 34, 42, 51, 2, 3, 87, 71, 78, 211, 136, 22, 72, 147, 59, 59, 73, 3, 3, 77, 58, 59, 138, 63, 22, 57, 160, 58, 58, 72, 3, 3, 64, 49, 61, 148, 0, 0, 2, 255, 247, 254, 96, 4, 28, 4, 79, 0, 35, 0, 67, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 7, 1, 51, 19, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 4, 19, 2, 7, 4, 12, 13, 49, 39, 40, 110, 74, 58, 104, 46, 29, 54, 24, 19, 164, 254, 252, 181, 97, 20, 46, 25, 42, 97, 51, 68, 117, 49, 64, 98, 31, 26, 33, 172, 2, 6, 25, 19, 22, 63, 43, 36, 90, 53, 38, 66, 26, 26, 42, 15, 91, 22, 49, 28, 35, 83, 48, 51, 73, 26, 19, 27, 10, 13, 3, 2, 24, 21, 61, 127, 60, 60, 106, 41, 40, 48, 2, 1, 26, 26, 16, 44, 27, 119, 1, 250, 38, 2, 9, 24, 39, 14, 24, 24, 1, 1, 35, 32, 41, 130, 74, 58, 126, 83, 21, 45, 93, 44, 49, 90, 30, 27, 29, 1, 2, 19, 18, 18, 53, 35, 2, 11, 29, 50, 18, 25, 26, 1, 1, 34, 28, 23, 54, 35, 50, 112, 0, 0, 2, 0, 118, 254, 96, 4, 81, 4, 80, 0, 35, 0, 67, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 3, 51, 1, 35, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 52, 127, 2, 7, 6, 14, 13, 52, 40, 40, 110, 72, 49, 90, 41, 31, 59, 27, 98, 181, 1, 4, 168, 32, 21, 50, 28, 38, 89, 47, 79, 131, 53, 53, 82, 30, 30, 38, 169, 3, 5, 23, 17, 21, 63, 41, 38, 94, 57, 37, 65, 26, 26, 41, 16, 94, 26, 58, 33, 33, 74, 42, 52, 74, 25, 25, 29, 6, 7, 2, 31, 21, 60, 126, 59, 60, 106, 40, 41, 48, 2, 1, 19, 19, 15, 40, 26, 253, 254, 5, 218, 108, 28, 42, 15, 21, 21, 1, 2, 43, 39, 39, 108, 63, 63, 137, 90, 21, 43, 88, 42, 49, 93, 32, 30, 33, 2, 1, 20, 19, 18, 51, 32, 253, 232, 32, 53, 19, 19, 21, 1, 1, 37, 30, 30, 78, 43, 43, 89, 0, 1, 0, 215, 0, 0, 4, 97, 4, 80, 0, 24, 0, 0, 65, 34, 6, 7, 6, 6, 7, 55, 55, 35, 3, 51, 19, 54, 54, 55, 54, 54, 51, 22, 22, 23, 55, 38, 38, 3, 163, 60, 107, 48, 48, 86, 38, 6, 24, 172, 187, 181, 120, 33, 85, 52, 41, 99, 56, 49, 96, 48, 46, 46, 96, 4, 80, 27, 25, 26, 72, 44, 32, 140, 251, 198, 2, 183, 60, 92, 28, 23, 23, 1, 14, 11, 180, 17, 11, 0, 0, 1, 0, 124, 255, 234, 4, 40, 4, 79, 0, 79, 0, 0, 65, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 39, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 21, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 50, 7, 57, 40, 40, 90, 40, 49, 86, 32, 32, 38, 1, 180, 2, 69, 58, 58, 149, 80, 76, 160, 66, 66, 88, 4, 2, 30, 27, 27, 75, 42, 42, 88, 41, 33, 79, 33, 33, 41, 6, 6, 52, 37, 37, 85, 40, 42, 77, 30, 29, 34, 179, 1, 62, 53, 53, 141, 76, 65, 132, 63, 72, 108, 3, 3, 67, 54, 47, 112, 54, 33, 73, 37, 23, 41, 16, 16, 16, 1, 38, 47, 64, 18, 19, 16, 1, 25, 25, 24, 76, 52, 1, 87, 131, 44, 45, 46, 1, 2, 37, 40, 39, 126, 87, 51, 82, 32, 31, 47, 18, 18, 26, 10, 7, 20, 17, 17, 57, 45, 45, 63, 20, 19, 18, 1, 1, 24, 23, 24, 68, 45, 1, 83, 125, 43, 42, 44, 2, 1, 30, 31, 35, 138, 91, 75, 105, 35, 31, 41, 14, 8, 18, 15, 9, 24, 16, 17, 46, 0, 1, 0, 196, 255, 235, 4, 54, 5, 64, 0, 29, 0, 0, 65, 35, 3, 33, 7, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 55, 33, 2, 212, 182, 46, 254, 237, 25, 1, 20, 98, 7, 25, 34, 34, 112, 81, 71, 154, 63, 17, 54, 109, 55, 48, 63, 17, 17, 11, 5, 98, 1, 144, 25, 254, 112, 5, 64, 254, 250, 143, 253, 180, 74, 133, 50, 51, 61, 1, 2, 22, 35, 133, 12, 20, 2, 1, 34, 28, 28, 76, 44, 2, 77, 143, 0, 1, 0, 141, 255, 234, 4, 84, 4, 58, 0, 28, 0, 0, 69, 22, 54, 55, 7, 51, 19, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 1, 189, 105, 166, 64, 23, 163, 188, 182, 135, 26, 62, 36, 40, 91, 52, 63, 68, 14, 15, 2, 6, 107, 181, 108, 9, 17, 34, 33, 123, 20, 2, 92, 79, 149, 4, 58, 252, 247, 40, 62, 22, 23, 23, 2, 2, 56, 43, 43, 105, 50, 2, 134, 253, 125, 83, 163, 65, 65, 81, 0, 0, 1, 0, 174, 0, 0, 4, 148, 4, 59, 0, 8, 0, 0, 97, 51, 1, 35, 1, 7, 39, 3, 7, 1, 180, 138, 2, 86, 192, 254, 90, 29, 5, 176, 174, 4, 58, 252, 209, 69, 68, 3, 49, 1, 0, 1, 0, 132, 0, 0, 4, 218, 4, 58, 0, 18, 0, 0, 115, 51, 1, 55, 7, 19, 51, 1, 35, 3, 7, 55, 3, 35, 1, 7, 55, 3, 35, 168, 143, 1, 17, 58, 3, 50, 142, 1, 155, 164, 239, 53, 2, 47, 117, 254, 228, 55, 6, 3, 156, 2, 141, 174, 154, 253, 95, 4, 58, 253, 70, 158, 154, 2, 190, 253, 88, 159, 138, 2, 189, 0, 0, 1, 0, 6, 0, 0, 4, 152, 4, 58, 0, 11, 0, 0, 65, 3, 35, 1, 1, 51, 1, 19, 51, 1, 1, 35, 2, 97, 214, 197, 1, 47, 254, 17, 223, 1, 98, 226, 196, 254, 200, 1, 227, 224, 2, 170, 1, 144, 253, 241, 253, 213, 1, 155, 254, 101, 2, 27, 2, 31, 0, 1, 255, 228, 254, 72, 4, 188, 4, 58, 0, 26, 0, 0, 65, 3, 35, 1, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 1, 35, 1, 2, 4, 169, 193, 1, 15, 103, 19, 44, 27, 27, 66, 39, 21, 44, 22, 41, 29, 59, 29, 65, 111, 47, 46, 76, 30, 2, 236, 211, 254, 48, 1, 119, 2, 195, 252, 4, 156, 29, 65, 27, 27, 36, 1, 6, 2, 153, 5, 11, 45, 39, 38, 98, 52, 4, 226, 252, 197, 0, 0, 1, 0, 61, 0, 0, 4, 70, 4, 58, 0, 9, 0, 0, 101, 1, 55, 33, 7, 33, 1, 7, 33, 55, 1, 65, 2, 239, 22, 252, 169, 24, 2, 100, 253, 25, 23, 3, 130, 25, 151, 3, 24, 139, 153, 252, 239, 144, 151, 0, 0, 3, 0, 127, 255, 234, 4, 89, 5, 199, 0, 37, 0, 57, 0, 77, 0, 0, 65, 19, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 1, 22, 22, 23, 22, 22, 7, 1, 54, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 3, 38, 38, 39, 38, 38, 55, 1, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 4, 27, 54, 5, 3, 1, 2, 38, 36, 43, 150, 109, 85, 140, 56, 57, 88, 32, 33, 42, 11, 54, 9, 4, 15, 14, 56, 45, 44, 123, 80, 67, 115, 49, 75, 113, 39, 32, 42, 254, 197, 64, 85, 26, 25, 20, 1, 253, 146, 4, 3, 5, 44, 7, 24, 18, 20, 55, 35, 36, 94, 150, 63, 85, 25, 26, 21, 1, 2, 107, 6, 8, 5, 35, 7, 23, 17, 21, 67, 46, 33, 83, 2, 47, 1, 83, 37, 80, 32, 71, 144, 57, 70, 85, 3, 2, 43, 39, 40, 110, 65, 65, 145, 74, 254, 171, 69, 138, 63, 64, 110, 41, 41, 49, 2, 2, 26, 25, 39, 130, 78, 64, 145, 3, 72, 2, 48, 40, 40, 104, 57, 254, 80, 16, 26, 29, 1, 10, 47, 92, 42, 45, 76, 28, 28, 30, 251, 83, 2, 48, 39, 39, 102, 56, 1, 172, 38, 43, 32, 213, 45, 90, 41, 52, 90, 29, 21, 22, 0, 1, 1, 26, 0, 0, 3, 127, 5, 176, 0, 6, 0, 0, 97, 19, 35, 5, 7, 37, 3, 2, 136, 247, 19, 253, 206, 32, 1, 140, 211, 5, 176, 208, 177, 144, 251, 65, 0, 1, 0, 15, 0, 0, 4, 26, 5, 198, 0, 42, 0, 0, 97, 55, 33, 1, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 1, 7, 3, 174, 24, 253, 65, 1, 190, 53, 113, 48, 47, 67, 6, 7, 52, 51, 52, 146, 86, 101, 177, 68, 68, 86, 10, 180, 9, 50, 41, 40, 110, 71, 53, 82, 27, 27, 22, 6, 8, 59, 41, 41, 94, 41, 253, 230, 22, 151, 1, 168, 50, 112, 63, 63, 140, 77, 88, 145, 52, 52, 57, 2, 2, 65, 59, 60, 167, 100, 1, 66, 111, 40, 39, 43, 2, 2, 41, 34, 34, 91, 51, 62, 112, 51, 51, 91, 41, 253, 245, 141, 0, 0, 1, 0, 47, 255, 234, 4, 31, 5, 198, 0, 76, 0, 0, 65, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 1, 160, 27, 140, 60, 96, 32, 32, 30, 7, 7, 52, 41, 41, 109, 65, 57, 88, 28, 29, 27, 4, 180, 5, 56, 53, 52, 150, 90, 99, 176, 68, 67, 85, 9, 4, 16, 21, 22, 73, 51, 52, 94, 38, 37, 48, 5, 8, 47, 49, 50, 145, 90, 91, 167, 65, 66, 85, 10, 179, 10, 50, 39, 38, 100, 59, 57, 81, 26, 25, 18, 6, 8, 59, 45, 45, 113, 61, 3, 49, 150, 1, 2, 34, 32, 32, 94, 62, 64, 105, 36, 37, 39, 2, 1, 38, 33, 33, 92, 56, 1, 92, 148, 52, 53, 58, 2, 2, 59, 57, 57, 162, 101, 54, 99, 43, 43, 67, 22, 23, 64, 41, 41, 101, 60, 91, 148, 53, 52, 59, 2, 1, 56, 52, 53, 150, 93, 1, 57, 93, 33, 33, 36, 1, 2, 37, 33, 33, 91, 54, 65, 97, 32, 33, 34, 0, 2, 0, 27, 0, 0, 4, 51, 5, 176, 0, 10, 0, 14, 0, 0, 65, 19, 35, 1, 7, 33, 3, 51, 19, 51, 55, 33, 1, 55, 3, 3, 110, 168, 199, 252, 225, 21, 2, 132, 59, 181, 59, 197, 26, 252, 208, 2, 19, 39, 132, 1, 233, 3, 199, 252, 25, 119, 254, 174, 1, 82, 151, 2, 153, 58, 253, 45, 0, 1, 0, 143, 255, 233, 4, 154, 5, 176, 0, 48, 0, 0, 83, 23, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 35, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 19, 33, 55, 33, 254, 149, 56, 114, 73, 65, 90, 26, 26, 18, 6, 8, 47, 39, 40, 114, 73, 57, 85, 28, 29, 30, 3, 169, 3, 55, 51, 50, 143, 90, 110, 180, 66, 66, 80, 10, 9, 32, 42, 43, 141, 101, 64, 119, 55, 116, 2, 59, 32, 253, 41, 2, 221, 39, 43, 49, 2, 2, 56, 43, 44, 111, 58, 66, 124, 48, 48, 56, 2, 2, 39, 34, 34, 91, 54, 88, 147, 53, 54, 60, 2, 3, 74, 66, 66, 182, 105, 90, 171, 68, 67, 82, 2, 1, 31, 33, 1, 133, 180, 0, 2, 0, 117, 255, 233, 3, 249, 5, 178, 0, 45, 0, 73, 0, 0, 65, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 54, 54, 55, 54, 54, 55, 54, 54, 23, 51, 1, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 52, 55, 55, 54, 54, 55, 54, 54, 3, 192, 20, 125, 207, 83, 84, 129, 47, 47, 62, 16, 12, 11, 33, 47, 47, 155, 111, 109, 176, 64, 64, 77, 9, 8, 32, 42, 42, 138, 98, 49, 92, 42, 37, 69, 30, 20, 52, 32, 39, 101, 60, 59, 140, 82, 12, 254, 198, 65, 83, 24, 23, 13, 6, 7, 46, 39, 39, 110, 71, 49, 72, 24, 24, 29, 7, 7, 4, 8, 23, 64, 40, 39, 93, 5, 178, 61, 55, 55, 152, 92, 93, 212, 113, 87, 97, 196, 80, 80, 102, 3, 3, 80, 70, 69, 184, 102, 87, 168, 67, 66, 83, 2, 1, 23, 21, 19, 53, 31, 63, 116, 49, 60, 96, 35, 31, 34, 1, 254, 21, 2, 62, 47, 48, 115, 54, 63, 124, 49, 49, 58, 2, 2, 40, 32, 32, 82, 44, 43, 88, 37, 64, 43, 76, 28, 28, 32, 0, 1, 0, 191, 0, 0, 4, 174, 5, 176, 0, 6, 0, 0, 65, 55, 33, 7, 33, 1, 51, 4, 156, 18, 252, 68, 26, 2, 249, 252, 238, 198, 5, 62, 114, 162, 250, 242, 0, 3, 0, 128, 255, 234, 4, 104, 5, 198, 0, 47, 0, 71, 0, 95, 0, 0, 65, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 1, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 4, 97, 7, 49, 49, 50, 141, 85, 93, 163, 62, 63, 77, 7, 4, 21, 25, 18, 53, 33, 60, 104, 40, 40, 49, 6, 8, 55, 54, 54, 151, 89, 96, 175, 68, 68, 87, 8, 4, 19, 22, 23, 71, 46, 52, 92, 36, 35, 45, 254, 250, 6, 54, 42, 42, 109, 62, 57, 88, 28, 29, 24, 6, 7, 52, 42, 41, 110, 63, 57, 87, 29, 28, 25, 78, 6, 45, 36, 37, 97, 56, 51, 77, 24, 25, 20, 5, 6, 44, 36, 36, 96, 57, 51, 77, 25, 25, 21, 4, 61, 87, 142, 51, 51, 58, 2, 2, 56, 54, 54, 153, 94, 54, 101, 44, 33, 57, 23, 26, 71, 46, 46, 113, 68, 93, 148, 52, 53, 57, 2, 2, 57, 55, 54, 159, 99, 53, 100, 44, 44, 74, 27, 25, 68, 42, 42, 103, 253, 150, 62, 103, 36, 37, 40, 2, 1, 39, 34, 34, 94, 56, 61, 106, 39, 39, 42, 1, 2, 43, 36, 36, 97, 2, 110, 54, 95, 35, 36, 39, 1, 1, 39, 33, 32, 87, 48, 54, 97, 36, 35, 40, 1, 1, 40, 33, 34, 87, 0, 0, 2, 0, 195, 255, 254, 4, 61, 5, 197, 0, 48, 0, 76, 0, 0, 101, 35, 7, 51, 50, 54, 55, 54, 18, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 6, 6, 7, 6, 6, 7, 6, 6, 19, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 20, 7, 7, 6, 6, 7, 6, 6, 1, 30, 16, 16, 23, 166, 254, 92, 117, 135, 27, 9, 8, 4, 15, 15, 57, 44, 45, 121, 80, 70, 123, 52, 61, 94, 33, 27, 35, 6, 8, 31, 42, 42, 137, 98, 51, 93, 42, 37, 67, 30, 20, 52, 33, 42, 113, 73, 52, 123, 225, 65, 83, 22, 23, 13, 6, 7, 46, 39, 39, 111, 72, 50, 71, 24, 24, 29, 7, 6, 3, 7, 23, 65, 40, 40, 95, 163, 165, 99, 88, 110, 1, 76, 193, 67, 67, 139, 65, 64, 115, 43, 43, 52, 1, 1, 33, 31, 37, 106, 65, 54, 122, 64, 86, 169, 68, 68, 85, 2, 1, 21, 21, 19, 53, 33, 69, 120, 50, 63, 97, 29, 21, 22, 1, 222, 2, 65, 49, 49, 117, 53, 63, 126, 50, 50, 61, 2, 2, 41, 33, 33, 85, 45, 45, 88, 37, 59, 44, 79, 30, 30, 34, 0, 1, 1, 223, 2, 153, 3, 111, 5, 174, 0, 6, 0, 0, 65, 19, 35, 5, 7, 55, 3, 2, 235, 132, 22, 254, 157, 23, 219, 104, 2, 153, 3, 21, 113, 135, 56, 253, 171, 0, 0, 1, 1, 79, 2, 155, 3, 216, 5, 190, 0, 39, 0, 0, 65, 55, 33, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 1, 7, 3, 150, 23, 254, 133, 195, 35, 77, 33, 32, 44, 3, 3, 40, 35, 35, 95, 52, 62, 108, 42, 42, 53, 7, 155, 7, 25, 18, 20, 55, 34, 47, 54, 7, 4, 32, 22, 22, 48, 21, 254, 196, 21, 2, 155, 128, 145, 27, 64, 37, 37, 85, 49, 57, 86, 29, 28, 29, 1, 1, 36, 34, 35, 98, 62, 1, 29, 50, 17, 19, 22, 1, 1, 54, 48, 29, 54, 24, 24, 42, 18, 254, 247, 116, 0, 1, 1, 107, 2, 142, 3, 229, 5, 188, 0, 73, 0, 0, 65, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 7, 51, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 3, 144, 14, 39, 24, 30, 55, 22, 22, 28, 2, 3, 44, 37, 38, 97, 49, 54, 100, 40, 41, 54, 6, 156, 16, 76, 50, 23, 41, 15, 15, 15, 3, 4, 32, 23, 23, 56, 27, 80, 11, 87, 27, 49, 19, 18, 19, 4, 4, 31, 22, 23, 54, 28, 27, 47, 16, 16, 17, 152, 43, 37, 36, 98, 54, 55, 112, 46, 45, 59, 2, 1, 19, 3, 246, 17, 25, 9, 13, 35, 22, 22, 56, 36, 57, 82, 27, 26, 26, 1, 27, 27, 28, 83, 57, 48, 45, 12, 12, 12, 37, 25, 31, 43, 14, 14, 14, 1, 1, 116, 1, 1, 10, 12, 12, 41, 31, 30, 44, 14, 15, 14, 1, 13, 13, 13, 38, 27, 58, 87, 29, 29, 30, 1, 1, 27, 30, 29, 91, 63, 36, 61, 0, 2, 1, 71, 2, 179, 3, 232, 5, 197, 0, 51, 0, 71, 0, 0, 65, 55, 38, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 50, 54, 55, 6, 22, 39, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 51, 7, 6, 6, 7, 6, 6, 3, 13, 158, 7, 3, 8, 16, 19, 14, 8, 31, 31, 32, 96, 62, 57, 110, 44, 45, 61, 9, 156, 8, 29, 20, 20, 50, 29, 30, 41, 11, 11, 7, 3, 8, 138, 59, 123, 51, 51, 68, 3, 3, 30, 29, 29, 82, 50, 70, 116, 45, 1, 1, 181, 21, 40, 15, 15, 16, 3, 4, 38, 27, 27, 62, 29, 129, 19, 13, 32, 18, 29, 67, 2, 192, 1, 46, 89, 46, 105, 104, 105, 61, 101, 36, 36, 41, 1, 1, 26, 29, 29, 89, 61, 11, 28, 40, 13, 13, 11, 1, 1, 21, 18, 18, 49, 27, 53, 1, 22, 27, 28, 92, 70, 51, 81, 28, 29, 31, 58, 52, 24, 48, 97, 10, 11, 10, 34, 24, 34, 46, 14, 14, 13, 1, 110, 18, 30, 12, 19, 22, 0, 0, 2, 1, 77, 2, 176, 4, 2, 5, 198, 0, 25, 0, 51, 0, 0, 65, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 1, 96, 13, 6, 35, 38, 37, 113, 72, 76, 130, 50, 49, 64, 9, 13, 7, 34, 37, 38, 112, 72, 76, 131, 50, 50, 65, 141, 12, 6, 31, 25, 25, 69, 44, 42, 58, 18, 17, 13, 3, 13, 6, 31, 25, 25, 69, 43, 42, 59, 17, 17, 13, 4, 116, 116, 70, 121, 44, 45, 52, 2, 2, 48, 45, 45, 124, 74, 117, 70, 121, 45, 45, 52, 2, 2, 49, 45, 45, 125, 192, 120, 40, 72, 27, 27, 30, 1, 1, 33, 27, 27, 70, 37, 119, 40, 72, 27, 27, 31, 1, 1, 33, 27, 27, 69, 0, 3, 0, 154, 0, 0, 4, 81, 5, 177, 0, 6, 0, 49, 0, 53, 0, 0, 65, 19, 35, 5, 7, 55, 3, 1, 55, 33, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 5, 7, 39, 1, 39, 1, 1, 140, 118, 19, 254, 192, 21, 198, 94, 3, 20, 21, 254, 171, 175, 32, 69, 29, 29, 40, 3, 2, 36, 31, 32, 85, 47, 56, 97, 38, 38, 47, 7, 140, 6, 25, 18, 18, 47, 29, 21, 34, 11, 12, 10, 3, 4, 29, 20, 19, 44, 18, 254, 227, 19, 247, 2, 146, 107, 253, 110, 2, 235, 2, 198, 102, 121, 50, 253, 231, 253, 21, 115, 131, 24, 58, 33, 33, 77, 44, 51, 78, 25, 26, 26, 1, 1, 33, 31, 31, 88, 56, 1, 28, 46, 16, 16, 17, 13, 12, 12, 34, 22, 26, 49, 21, 22, 38, 16, 239, 104, 223, 3, 177, 71, 252, 79, 0, 0, 4, 0, 167, 0, 0, 4, 59, 5, 181, 0, 6, 0, 17, 0, 21, 0, 25, 0, 0, 65, 19, 35, 5, 7, 55, 3, 1, 19, 35, 1, 7, 33, 7, 51, 55, 51, 55, 33, 55, 55, 3, 5, 1, 39, 1, 1, 153, 118, 19, 254, 192, 21, 198, 94, 2, 207, 76, 147, 254, 109, 11, 1, 70, 27, 139, 27, 93, 20, 254, 93, 219, 19, 51, 253, 249, 2, 146, 107, 253, 110, 2, 239, 2, 198, 102, 121, 50, 253, 231, 254, 30, 1, 185, 254, 54, 100, 152, 152, 117, 235, 27, 254, 250, 46, 3, 177, 71, 252, 79, 0, 4, 0, 106, 0, 0, 4, 91, 5, 186, 0, 10, 0, 14, 0, 88, 0, 92, 0, 0, 65, 19, 35, 1, 7, 33, 7, 51, 55, 51, 55, 33, 55, 55, 3, 1, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 7, 51, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 19, 1, 39, 1, 3, 254, 76, 147, 254, 109, 11, 1, 70, 27, 139, 27, 93, 20, 254, 93, 219, 19, 51, 253, 201, 10, 78, 25, 44, 16, 17, 17, 3, 4, 28, 20, 20, 49, 25, 26, 44, 15, 12, 14, 137, 39, 33, 33, 88, 49, 49, 101, 41, 41, 53, 2, 1, 21, 21, 13, 31, 19, 27, 50, 19, 20, 25, 2, 3, 40, 33, 34, 87, 45, 48, 90, 37, 36, 49, 5, 140, 15, 68, 45, 21, 37, 13, 14, 13, 2, 4, 29, 21, 20, 51, 24, 8, 2, 146, 107, 253, 110, 1, 13, 1, 185, 254, 54, 100, 152, 152, 117, 235, 27, 254, 250, 3, 120, 104, 1, 1, 9, 11, 11, 37, 27, 27, 40, 13, 13, 13, 1, 13, 13, 12, 33, 23, 52, 79, 26, 26, 27, 1, 1, 25, 26, 27, 82, 56, 36, 58, 21, 12, 20, 7, 12, 31, 20, 20, 50, 33, 51, 74, 24, 24, 23, 1, 24, 25, 25, 75, 51, 43, 41, 11, 11, 11, 33, 22, 28, 39, 13, 12, 13, 1, 252, 90, 3, 177, 71, 252, 79, 0, 0, 2, 255, 178, 0, 0, 5, 6, 5, 176, 0, 15, 0, 18, 0, 0, 97, 55, 33, 19, 33, 55, 33, 19, 33, 55, 33, 1, 51, 19, 33, 3, 3, 1, 3, 4, 32, 27, 254, 165, 91, 1, 37, 26, 254, 220, 78, 1, 71, 27, 253, 200, 252, 228, 201, 182, 1, 39, 60, 147, 1, 100, 119, 151, 2, 19, 151, 1, 215, 152, 250, 80, 1, 97, 254, 159, 2, 15, 2, 179, 253, 77, 0, 3, 255, 241, 255, 235, 4, 163, 4, 80, 0, 78, 0, 93, 0, 113, 0, 0, 69, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 55, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 38, 38, 35, 38, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 19, 22, 22, 23, 22, 22, 7, 7, 33, 55, 54, 54, 55, 54, 54, 1, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 51, 3, 6, 6, 7, 6, 6, 3, 8, 35, 74, 36, 36, 67, 28, 35, 24, 49, 26, 23, 49, 27, 62, 77, 19, 20, 8, 6, 12, 1, 233, 34, 13, 26, 33, 33, 110, 79, 72, 119, 51, 43, 117, 66, 71, 119, 44, 45, 55, 7, 175, 6, 23, 19, 18, 53, 36, 35, 41, 10, 9, 5, 5, 26, 66, 86, 155, 60, 60, 75, 6, 3, 28, 32, 31, 96, 65, 43, 77, 34, 33, 60, 27, 19, 57, 35, 34, 79, 155, 37, 49, 14, 14, 10, 3, 18, 254, 188, 12, 7, 31, 25, 24, 72, 253, 207, 31, 45, 14, 15, 11, 3, 6, 46, 36, 35, 89, 49, 54, 52, 16, 34, 19, 19, 40, 19, 7, 10, 9, 32, 23, 138, 15, 27, 9, 8, 9, 48, 39, 38, 100, 53, 87, 213, 82, 142, 52, 51, 63, 2, 1, 58, 49, 63, 44, 1, 42, 39, 40, 113, 70, 8, 31, 58, 23, 22, 26, 1, 1, 31, 24, 24, 59, 28, 149, 1, 42, 44, 45, 135, 93, 61, 108, 40, 40, 47, 1, 1, 21, 20, 19, 54, 32, 38, 54, 17, 18, 17, 3, 203, 2, 33, 26, 27, 64, 31, 129, 70, 41, 87, 36, 35, 44, 252, 200, 23, 20, 20, 52, 29, 50, 82, 29, 29, 33, 1, 254, 217, 13, 27, 10, 11, 12, 0, 2, 0, 56, 255, 236, 5, 14, 5, 198, 0, 35, 0, 58, 0, 0, 97, 55, 33, 19, 33, 55, 33, 19, 33, 55, 33, 38, 38, 39, 34, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 23, 50, 22, 23, 3, 34, 6, 4, 27, 27, 254, 116, 92, 1, 77, 27, 254, 178, 83, 1, 128, 27, 254, 94, 64, 126, 65, 90, 145, 55, 35, 57, 22, 31, 41, 10, 72, 5, 2, 4, 4, 23, 20, 37, 138, 108, 65, 127, 65, 250, 48, 62, 18, 19, 15, 1, 1, 7, 4, 71, 9, 36, 33, 33, 106, 80, 24, 48, 23, 213, 24, 49, 151, 2, 13, 152, 1, 220, 152, 4, 17, 1, 56, 48, 33, 77, 43, 60, 137, 71, 254, 61, 43, 89, 42, 47, 89, 39, 74, 94, 3, 2, 16, 4, 133, 2, 37, 29, 29, 75, 40, 40, 81, 35, 1, 199, 67, 134, 53, 53, 65, 1, 4, 2, 251, 92, 1, 0, 0, 3, 0, 14, 255, 234, 4, 156, 4, 80, 0, 76, 0, 114, 0, 135, 0, 0, 65, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 55, 5, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 1, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 37, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 20, 7, 7, 1, 191, 71, 113, 43, 28, 48, 18, 31, 38, 9, 28, 6, 1, 10, 9, 39, 32, 31, 91, 61, 64, 106, 45, 13, 24, 11, 14, 35, 20, 35, 86, 47, 37, 73, 33, 28, 52, 22, 44, 20, 43, 23, 24, 53, 28, 34, 42, 12, 13, 9, 6, 3, 10, 1, 184, 28, 5, 1, 9, 9, 37, 30, 30, 86, 57, 45, 78, 34, 24, 43, 20, 13, 35, 20, 34, 83, 254, 223, 26, 3, 12, 10, 9, 29, 21, 21, 57, 37, 34, 44, 13, 12, 10, 5, 3, 27, 4, 11, 9, 10, 29, 21, 21, 57, 37, 35, 43, 12, 13, 9, 6, 2, 8, 2, 5, 12, 10, 9, 27, 19, 18, 50, 32, 24, 34, 11, 8, 11, 4, 9, 3, 12, 4, 79, 1, 44, 39, 25, 66, 34, 60, 133, 65, 197, 50, 106, 50, 51, 92, 34, 35, 42, 1, 2, 43, 38, 11, 23, 13, 24, 37, 14, 25, 24, 1, 1, 12, 13, 11, 34, 22, 127, 14, 25, 9, 10, 10, 1, 1, 33, 26, 26, 64, 33, 33, 60, 22, 67, 1, 181, 46, 99, 47, 47, 84, 32, 31, 38, 1, 1, 27, 23, 16, 41, 22, 24, 39, 15, 24, 26, 253, 105, 200, 27, 68, 36, 35, 67, 26, 25, 30, 1, 1, 35, 27, 28, 67, 34, 35, 63, 22, 200, 27, 68, 35, 35, 67, 25, 26, 31, 2, 1, 35, 27, 27, 68, 34, 34, 63, 225, 12, 22, 62, 34, 33, 65, 26, 26, 30, 1, 1, 18, 15, 10, 25, 13, 33, 75, 28, 85, 0, 0, 2, 0, 40, 255, 234, 4, 138, 5, 240, 0, 49, 0, 78, 0, 0, 65, 38, 38, 39, 55, 39, 7, 38, 38, 39, 7, 22, 22, 23, 7, 23, 37, 22, 22, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 54, 1, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 22, 22, 23, 7, 7, 6, 6, 7, 6, 6, 4, 22, 8, 53, 47, 224, 58, 250, 54, 126, 72, 71, 42, 76, 35, 253, 58, 1, 31, 50, 46, 2, 27, 63, 35, 34, 76, 40, 112, 191, 72, 72, 89, 10, 9, 50, 54, 54, 159, 99, 87, 148, 62, 54, 88, 36, 39, 50, 11, 8, 9, 4, 254, 198, 47, 133, 89, 66, 97, 30, 30, 23, 8, 8, 56, 46, 46, 124, 76, 40, 84, 38, 38, 62, 19, 7, 10, 7, 22, 17, 13, 34, 3, 144, 95, 187, 90, 115, 109, 133, 51, 71, 23, 157, 16, 38, 28, 133, 107, 152, 77, 172, 91, 29, 45, 16, 16, 17, 1, 3, 80, 71, 71, 191, 108, 97, 172, 65, 65, 77, 3, 2, 47, 42, 38, 104, 58, 69, 156, 80, 63, 71, 139, 253, 196, 65, 81, 3, 2, 59, 46, 46, 116, 60, 69, 133, 52, 52, 63, 1, 15, 16, 17, 53, 39, 52, 64, 42, 87, 43, 33, 64, 0, 0, 2, 0, 58, 0, 0, 4, 92, 5, 176, 0, 18, 0, 33, 0, 0, 65, 35, 3, 51, 19, 5, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 7, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 37, 1, 236, 181, 253, 181, 55, 1, 23, 101, 186, 73, 72, 94, 9, 8, 57, 56, 56, 157, 93, 255, 0, 26, 1, 23, 58, 94, 31, 31, 27, 7, 9, 63, 47, 47, 120, 65, 254, 255, 5, 176, 250, 80, 1, 57, 1, 55, 55, 54, 162, 107, 98, 153, 53, 53, 57, 3, 1, 152, 1, 2, 40, 34, 35, 96, 59, 68, 104, 36, 36, 37, 2, 0, 2, 255, 247, 254, 96, 4, 28, 6, 22, 0, 38, 0, 70, 0, 0, 101, 54, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 35, 1, 51, 19, 22, 22, 23, 22, 22, 23, 22, 54, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 2, 211, 46, 84, 32, 25, 43, 17, 29, 36, 8, 3, 6, 2, 12, 12, 49, 38, 39, 110, 73, 50, 91, 40, 36, 66, 30, 110, 180, 254, 169, 181, 97, 24, 57, 31, 39, 89, 47, 46, 84, 175, 39, 67, 27, 27, 43, 16, 91, 29, 69, 40, 30, 67, 36, 51, 74, 25, 25, 29, 6, 6, 1, 5, 2, 10, 49, 42, 20, 48, 28, 32, 77, 9, 22, 64, 40, 31, 69, 37, 62, 135, 66, 21, 60, 127, 60, 60, 107, 41, 40, 49, 2, 1, 19, 19, 16, 49, 31, 2, 77, 248, 74, 2, 12, 29, 45, 15, 20, 19, 1, 1, 16, 136, 1, 20, 18, 19, 54, 35, 2, 8, 38, 62, 20, 14, 15, 1, 2, 36, 29, 30, 78, 42, 43, 88, 40, 21, 71, 146, 59, 28, 46, 17, 19, 21, 0, 0, 1, 0, 76, 0, 0, 4, 137, 4, 58, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 7, 19, 35, 3, 51, 19, 1, 236, 1, 32, 214, 254, 144, 2, 23, 233, 254, 58, 121, 92, 181, 188, 181, 58, 1, 219, 254, 37, 2, 82, 1, 232, 254, 103, 112, 2, 9, 251, 198, 1, 80, 0, 1, 0, 59, 255, 232, 3, 253, 6, 25, 0, 75, 0, 0, 115, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 239, 185, 8, 36, 32, 32, 93, 65, 39, 54, 16, 15, 11, 4, 5, 29, 33, 35, 82, 6, 5, 31, 26, 25, 60, 25, 24, 29, 7, 6, 35, 27, 28, 72, 43, 59, 114, 48, 54, 60, 156, 72, 79, 135, 50, 49, 59, 5, 3, 32, 25, 26, 59, 24, 24, 26, 8, 9, 56, 31, 30, 52, 5, 6, 39, 40, 40, 117, 73, 102, 155, 55, 56, 67, 13, 186, 4, 64, 52, 116, 48, 47, 60, 3, 2, 35, 27, 28, 68, 34, 38, 68, 47, 50, 128, 67, 52, 89, 39, 40, 75, 38, 38, 82, 48, 42, 69, 24, 25, 26, 44, 33, 156, 40, 33, 1, 48, 46, 46, 129, 80, 50, 86, 39, 39, 74, 38, 37, 80, 45, 58, 98, 48, 48, 102, 62, 73, 120, 43, 43, 48, 2, 3, 79, 66, 67, 172, 90, 251, 193, 0, 2, 0, 138, 255, 235, 4, 63, 4, 79, 0, 42, 0, 56, 0, 0, 65, 38, 6, 7, 6, 6, 7, 23, 54, 54, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 33, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 3, 38, 38, 39, 38, 38, 55, 55, 5, 6, 6, 7, 6, 6, 2, 152, 53, 109, 52, 52, 95, 40, 62, 73, 169, 91, 76, 100, 28, 20, 19, 2, 2, 253, 40, 19, 12, 36, 48, 47, 153, 105, 74, 134, 58, 58, 96, 36, 35, 46, 8, 5, 10, 41, 51, 52, 165, 241, 59, 89, 27, 28, 20, 9, 5, 2, 36, 21, 62, 41, 42, 107, 4, 78, 1, 13, 15, 16, 51, 36, 127, 54, 54, 3, 2, 67, 51, 39, 92, 48, 17, 33, 17, 121, 99, 174, 65, 65, 76, 3, 2, 40, 37, 37, 103, 61, 60, 134, 69, 45, 105, 192, 74, 74, 90, 252, 55, 1, 44, 37, 37, 99, 57, 28, 1, 55, 109, 43, 44, 53, 0, 0, 1, 0, 119, 255, 48, 4, 100, 6, 156, 0, 55, 0, 0, 65, 6, 6, 39, 38, 38, 55, 35, 6, 22, 23, 7, 51, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 23, 22, 22, 7, 51, 54, 2, 39, 55, 35, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 76, 14, 181, 115, 130, 102, 8, 181, 10, 156, 175, 35, 146, 35, 170, 247, 12, 6, 47, 45, 46, 127, 73, 47, 86, 32, 33, 34, 6, 12, 148, 114, 125, 74, 6, 180, 10, 117, 172, 40, 146, 39, 169, 222, 12, 6, 48, 47, 46, 128, 74, 45, 84, 32, 32, 33, 1, 126, 121, 125, 4, 2, 169, 118, 171, 247, 26, 193, 192, 18, 196, 186, 87, 132, 51, 50, 75, 30, 18, 46, 31, 31, 83, 57, 108, 134, 2, 4, 201, 102, 158, 1, 14, 34, 222, 220, 20, 207, 173, 87, 133, 51, 52, 76, 29, 17, 46, 31, 32, 82, 0, 0, 1, 0, 126, 255, 11, 4, 47, 5, 38, 0, 66, 0, 0, 101, 38, 38, 39, 38, 38, 39, 38, 52, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 55, 35, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 7, 51, 55, 54, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 2, 25, 53, 77, 27, 27, 32, 7, 8, 5, 5, 6, 28, 21, 23, 62, 39, 38, 93, 55, 52, 82, 29, 28, 28, 2, 170, 3, 39, 38, 38, 108, 66, 40, 181, 39, 99, 161, 59, 60, 75, 12, 5, 5, 4, 10, 14, 58, 41, 32, 79, 48, 42, 181, 39, 72, 140, 57, 56, 75, 9, 171, 11, 56, 39, 40, 96, 129, 1, 36, 29, 28, 77, 43, 42, 90, 43, 42, 47, 95, 42, 47, 77, 29, 27, 29, 2, 2, 38, 32, 33, 86, 50, 1, 73, 126, 50, 49, 68, 15, 228, 221, 14, 98, 72, 73, 181, 99, 43, 53, 103, 48, 65, 115, 43, 32, 47, 14, 242, 227, 8, 57, 47, 46, 126, 75, 1, 49, 79, 27, 28, 29, 0, 0, 1, 0, 9, 0, 0, 4, 151, 5, 198, 0, 48, 0, 0, 65, 33, 55, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 35, 7, 51, 7, 6, 6, 7, 6, 6, 7, 39, 7, 33, 55, 5, 54, 54, 55, 1, 198, 1, 50, 27, 254, 201, 34, 8, 45, 36, 36, 99, 61, 53, 77, 24, 24, 19, 3, 182, 4, 42, 45, 45, 133, 87, 99, 170, 65, 65, 83, 12, 33, 156, 26, 160, 30, 5, 19, 16, 17, 50, 36, 65, 27, 3, 233, 27, 253, 48, 46, 51, 10, 2, 114, 152, 1, 6, 55, 105, 41, 40, 47, 2, 2, 36, 31, 32, 86, 50, 1, 85, 140, 51, 51, 59, 2, 2, 64, 58, 59, 162, 97, 254, 252, 152, 226, 35, 77, 35, 35, 55, 14, 1, 150, 151, 2, 55, 126, 71, 0, 1, 0, 86, 0, 0, 5, 34, 5, 176, 0, 26, 0, 0, 65, 1, 7, 49, 39, 3, 35, 1, 33, 7, 33, 7, 33, 7, 33, 3, 51, 19, 33, 55, 33, 55, 55, 5, 55, 33, 1, 4, 72, 254, 88, 51, 27, 213, 195, 1, 28, 254, 199, 21, 1, 113, 30, 254, 144, 21, 1, 113, 57, 181, 57, 1, 120, 22, 254, 133, 34, 6, 1, 111, 22, 254, 209, 2, 21, 5, 176, 253, 165, 73, 75, 2, 89, 253, 48, 121, 169, 120, 254, 186, 1, 70, 120, 165, 7, 3, 121, 2, 208, 0, 0, 1, 0, 2, 254, 72, 4, 182, 6, 46, 0, 47, 0, 0, 65, 55, 35, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 35, 7, 51, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 3, 154, 22, 206, 14, 9, 48, 38, 37, 100, 59, 35, 65, 30, 33, 44, 88, 47, 95, 157, 59, 60, 74, 12, 12, 172, 22, 172, 152, 6, 31, 26, 26, 74, 50, 36, 73, 32, 28, 38, 79, 42, 90, 140, 51, 51, 61, 11, 151, 3, 171, 143, 99, 59, 91, 32, 31, 31, 1, 15, 16, 148, 15, 23, 1, 2, 55, 52, 52, 149, 93, 99, 143, 252, 33, 44, 85, 34, 34, 41, 1, 1, 18, 17, 147, 18, 19, 1, 2, 57, 52, 52, 143, 84, 3, 223, 255, 255, 255, 215, 0, 0, 4, 178, 5, 176, 6, 38, 0, 7, 0, 0, 0, 7, 2, 106, 254, 163, 254, 127, 0, 1, 0, 3, 0, 0, 4, 145, 5, 198, 0, 56, 0, 0, 65, 55, 33, 55, 33, 55, 33, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 35, 7, 51, 7, 35, 7, 55, 7, 6, 6, 7, 6, 6, 7, 39, 7, 33, 55, 5, 54, 54, 55, 55, 2, 244, 22, 254, 176, 21, 1, 82, 22, 254, 169, 23, 7, 46, 36, 36, 99, 61, 54, 77, 24, 24, 20, 3, 180, 5, 42, 45, 45, 133, 87, 99, 170, 65, 65, 83, 12, 22, 155, 22, 159, 20, 163, 22, 174, 12, 6, 20, 16, 17, 50, 36, 65, 27, 3, 233, 27, 253, 48, 45, 52, 12, 11, 1, 215, 122, 138, 123, 184, 55, 105, 41, 40, 48, 1, 2, 36, 31, 32, 86, 50, 1, 84, 141, 51, 51, 59, 2, 2, 64, 58, 59, 162, 97, 184, 123, 138, 122, 1, 73, 35, 76, 35, 35, 55, 14, 1, 150, 151, 2, 55, 126, 70, 72, 0, 0, 2, 0, 19, 255, 237, 4, 207, 5, 176, 0, 45, 0, 63, 0, 0, 65, 55, 35, 19, 35, 3, 7, 54, 38, 39, 38, 38, 39, 39, 3, 51, 19, 23, 50, 54, 55, 54, 54, 55, 51, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 5, 19, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 6, 6, 7, 4, 182, 25, 171, 46, 181, 46, 93, 4, 29, 34, 35, 110, 76, 235, 252, 180, 104, 71, 86, 132, 49, 48, 67, 22, 77, 106, 5, 9, 21, 20, 78, 64, 35, 72, 30, 13, 18, 37, 18, 28, 27, 4, 5, 3, 2, 107, 253, 51, 112, 71, 31, 41, 13, 12, 10, 1, 1, 4, 3, 5, 28, 25, 26, 79, 57, 3, 171, 143, 1, 6, 254, 250, 1, 69, 132, 52, 52, 65, 3, 2, 250, 80, 2, 53, 1, 61, 52, 51, 136, 75, 253, 125, 52, 110, 46, 46, 59, 1, 1, 17, 20, 134, 5, 8, 1, 1, 34, 24, 23, 52, 19, 2, 134, 225, 2, 79, 3, 3, 32, 25, 25, 60, 31, 31, 58, 22, 47, 105, 44, 45, 60, 1, 0, 0, 2, 0, 16, 255, 229, 4, 170, 4, 57, 0, 35, 0, 71, 0, 0, 101, 23, 55, 39, 54, 54, 55, 54, 38, 39, 55, 39, 7, 38, 38, 39, 38, 6, 7, 39, 7, 23, 6, 6, 7, 6, 22, 23, 7, 23, 55, 22, 22, 23, 22, 54, 1, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 38, 3, 57, 82, 143, 92, 49, 63, 11, 10, 16, 23, 142, 112, 141, 56, 133, 72, 79, 143, 66, 90, 142, 96, 56, 69, 12, 9, 13, 21, 128, 111, 120, 59, 139, 76, 85, 150, 254, 43, 5, 28, 22, 25, 77, 46, 38, 90, 48, 43, 72, 28, 37, 48, 11, 7, 4, 4, 5, 25, 18, 26, 70, 44, 41, 95, 53, 44, 73, 29, 35, 46, 13, 8, 5, 82, 109, 127, 124, 67, 148, 83, 75, 146, 71, 121, 146, 126, 45, 48, 1, 1, 49, 42, 121, 128, 129, 69, 158, 88, 72, 141, 69, 108, 144, 109, 50, 52, 1, 2, 56, 1, 216, 43, 84, 39, 48, 84, 27, 24, 25, 1, 1, 28, 23, 31, 87, 50, 33, 69, 33, 39, 79, 36, 49, 83, 31, 27, 31, 1, 1, 29, 24, 30, 82, 46, 34, 74, 0, 0, 2, 1, 128, 255, 243, 3, 51, 5, 176, 0, 3, 0, 27, 0, 0, 65, 19, 35, 3, 3, 20, 22, 23, 22, 22, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 7, 6, 6, 7, 6, 6, 2, 136, 171, 182, 171, 82, 17, 15, 14, 41, 24, 25, 42, 15, 14, 17, 16, 15, 15, 42, 24, 24, 40, 14, 16, 17, 1, 215, 3, 217, 252, 39, 254, 135, 24, 40, 14, 14, 15, 1, 1, 18, 15, 15, 39, 24, 24, 41, 15, 15, 16, 1, 1, 17, 14, 15, 44, 0, 0, 2, 1, 81, 254, 140, 3, 7, 4, 82, 0, 3, 0, 15, 0, 0, 65, 3, 51, 19, 19, 52, 38, 7, 6, 6, 7, 20, 22, 55, 54, 54, 1, 252, 171, 181, 171, 86, 62, 50, 50, 61, 1, 64, 47, 48, 63, 2, 99, 252, 41, 3, 215, 1, 126, 48, 65, 2, 2, 65, 50, 49, 60, 2, 2, 62, 0, 2, 1, 23, 255, 242, 4, 88, 5, 198, 0, 43, 0, 55, 0, 0, 65, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 3, 20, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 1, 214, 177, 11, 53, 59, 56, 113, 48, 47, 64, 7, 7, 49, 49, 49, 141, 84, 86, 158, 62, 63, 82, 10, 179, 10, 50, 36, 36, 90, 50, 49, 77, 25, 25, 21, 7, 8, 52, 36, 37, 84, 39, 97, 85, 94, 63, 48, 48, 64, 1, 64, 48, 50, 61, 1, 153, 1, 74, 112, 49, 45, 97, 56, 55, 130, 78, 88, 136, 47, 47, 50, 2, 2, 46, 45, 46, 136, 89, 1, 50, 76, 25, 25, 25, 1, 1, 31, 27, 28, 79, 50, 54, 95, 42, 42, 74, 33, 83, 145, 254, 73, 48, 60, 2, 2, 61, 49, 48, 64, 2, 2, 65, 0, 0, 2, 0, 86, 254, 117, 3, 113, 4, 79, 0, 49, 0, 61, 0, 0, 65, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 3, 20, 22, 55, 54, 54, 55, 54, 38, 7, 6, 6, 2, 196, 177, 5, 17, 13, 14, 41, 29, 54, 108, 44, 45, 60, 7, 8, 44, 47, 46, 135, 83, 85, 151, 59, 58, 77, 10, 180, 9, 38, 28, 33, 88, 53, 49, 71, 22, 22, 16, 6, 7, 49, 34, 34, 80, 38, 46, 66, 22, 22, 26, 141, 64, 47, 49, 63, 1, 1, 63, 49, 50, 62, 2, 162, 1, 37, 63, 27, 28, 51, 25, 46, 100, 56, 56, 130, 76, 85, 136, 48, 48, 52, 2, 2, 48, 47, 46, 136, 86, 1, 43, 71, 25, 30, 32, 1, 1, 33, 29, 28, 78, 47, 53, 95, 43, 43, 76, 33, 41, 72, 40, 39, 93, 1, 118, 49, 60, 2, 2, 62, 49, 49, 63, 1, 2, 66, 0, 1, 0, 194, 254, 176, 2, 47, 0, 219, 0, 12, 0, 0, 101, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 2, 18, 29, 196, 32, 15, 69, 53, 110, 41, 71, 28, 32, 44, 44, 175, 179, 87, 154, 70, 65, 33, 79, 44, 50, 114, 0, 0, 1, 1, 142, 255, 236, 2, 170, 1, 10, 0, 11, 0, 0, 101, 20, 22, 51, 50, 54, 53, 52, 38, 7, 34, 6, 1, 142, 78, 61, 61, 84, 80, 61, 65, 78, 115, 59, 76, 80, 65, 63, 78, 2, 88, 0, 255, 255, 1, 191, 255, 236, 3, 114, 4, 118, 4, 38, 0, 96, 49, 0, 0, 7, 0, 96, 0, 200, 3, 108, 255, 255, 1, 66, 254, 176, 3, 105, 4, 118, 4, 39, 0, 96, 0, 191, 3, 108, 0, 7, 0, 95, 0, 128, 0, 0, 255, 255, 0, 174, 255, 236, 4, 172, 1, 10, 4, 39, 0, 96, 255, 32, 0, 0, 0, 39, 0, 96, 0, 151, 0, 0, 0, 7, 0, 96, 2, 2, 0, 0, 0, 1, 1, 255, 2, 106, 2, 223, 3, 76, 0, 11, 0, 0, 65, 20, 22, 51, 50, 54, 53, 52, 38, 7, 6, 6, 1, 255, 61, 51, 44, 68, 63, 48, 50, 62, 2, 214, 48, 60, 65, 49, 48, 64, 2, 2, 65, 0, 0, 1, 1, 169, 2, 20, 3, 56, 3, 220, 0, 25, 0, 0, 65, 7, 20, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 1, 171, 2, 26, 24, 24, 68, 42, 45, 75, 28, 27, 33, 3, 3, 1, 25, 24, 24, 70, 43, 45, 76, 27, 28, 32, 3, 16, 59, 42, 70, 25, 26, 29, 1, 29, 27, 26, 73, 44, 58, 43, 72, 27, 26, 31, 30, 27, 28, 75, 0, 1, 0, 20, 255, 105, 3, 169, 0, 0, 0, 3, 0, 0, 69, 55, 33, 7, 3, 142, 27, 252, 133, 26, 151, 151, 151, 0, 0, 1, 0, 204, 2, 49, 3, 206, 2, 201, 0, 3, 0, 0, 65, 55, 33, 7, 3, 179, 27, 253, 25, 27, 2, 49, 152, 152, 0, 1, 0, 82, 2, 139, 4, 147, 3, 34, 0, 3, 0, 0, 65, 55, 33, 7, 4, 112, 35, 251, 226, 35, 2, 139, 151, 151, 0, 1, 0, 87, 2, 139, 4, 152, 3, 34, 0, 3, 0, 0, 65, 55, 33, 7, 4, 117, 35, 251, 226, 35, 2, 139, 151, 151, 0, 1, 2, 38, 4, 32, 3, 13, 6, 0, 0, 5, 0, 0, 65, 55, 35, 7, 3, 55, 2, 250, 19, 154, 16, 61, 136, 5, 136, 120, 97, 254, 129, 1, 0, 2, 1, 158, 4, 33, 3, 217, 6, 0, 0, 5, 0, 11, 0, 0, 65, 55, 35, 7, 3, 51, 1, 55, 35, 7, 3, 51, 2, 107, 18, 147, 15, 61, 128, 1, 167, 20, 147, 17, 60, 127, 5, 139, 117, 95, 254, 128, 1, 106, 117, 102, 254, 135, 0, 1, 2, 41, 4, 15, 3, 130, 6, 29, 0, 12, 0, 0, 65, 7, 51, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 2, 64, 23, 176, 27, 15, 75, 52, 95, 47, 78, 29, 27, 37, 4, 160, 145, 149, 86, 148, 69, 74, 37, 90, 50, 47, 102, 0, 1, 2, 24, 4, 7, 3, 113, 6, 22, 0, 12, 0, 0, 65, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 3, 89, 24, 177, 26, 16, 74, 52, 95, 46, 77, 29, 27, 38, 5, 132, 146, 150, 86, 148, 69, 74, 36, 88, 50, 47, 105, 0, 1, 1, 32, 254, 209, 2, 125, 0, 225, 0, 9, 0, 0, 101, 55, 35, 7, 6, 6, 7, 23, 54, 54, 2, 102, 23, 180, 27, 15, 74, 53, 99, 88, 120, 77, 148, 151, 86, 147, 69, 75, 72, 195, 255, 255, 1, 139, 4, 15, 4, 31, 6, 29, 4, 39, 0, 108, 255, 98, 0, 0, 0, 7, 0, 108, 0, 157, 0, 0, 255, 255, 1, 125, 4, 7, 4, 24, 6, 22, 4, 39, 0, 109, 255, 101, 0, 0, 0, 7, 0, 109, 0, 167, 0, 0, 0, 2, 0, 151, 254, 207, 3, 14, 0, 223, 0, 9, 0, 22, 0, 0, 101, 55, 35, 7, 6, 6, 7, 23, 54, 54, 37, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 1, 221, 23, 180, 27, 15, 75, 52, 99, 88, 120, 1, 44, 24, 181, 26, 16, 74, 53, 99, 47, 79, 30, 26, 37, 76, 147, 151, 86, 147, 69, 75, 72, 195, 114, 147, 151, 86, 147, 69, 75, 38, 91, 51, 46, 101, 0, 255, 255, 2, 38, 4, 32, 3, 13, 6, 0, 6, 6, 0, 106, 0, 0, 255, 255, 1, 158, 4, 33, 3, 217, 6, 0, 6, 6, 0, 107, 0, 0, 0, 1, 1, 70, 254, 42, 3, 236, 6, 108, 0, 36, 0, 0, 65, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 18, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 7, 6, 6, 1, 89, 2, 12, 5, 10, 9, 46, 40, 39, 115, 78, 47, 60, 80, 24, 24, 20, 1, 1, 14, 11, 2, 20, 72, 57, 57, 161, 110, 27, 95, 159, 65, 65, 104, 38, 39, 53, 2, 75, 11, 87, 192, 97, 98, 192, 87, 88, 150, 55, 112, 54, 141, 80, 80, 172, 86, 86, 164, 72, 15, 131, 1, 6, 121, 120, 213, 81, 124, 48, 138, 85, 85, 192, 102, 102, 207, 0, 1, 0, 160, 254, 41, 3, 72, 6, 107, 0, 33, 0, 0, 65, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 2, 7, 6, 6, 7, 23, 54, 54, 55, 54, 18, 3, 53, 2, 12, 5, 9, 10, 46, 39, 40, 116, 79, 46, 59, 79, 24, 24, 21, 1, 1, 14, 10, 2, 20, 72, 57, 57, 161, 111, 28, 143, 218, 78, 75, 98, 2, 73, 11, 87, 192, 98, 98, 192, 88, 87, 150, 55, 112, 54, 140, 80, 81, 174, 86, 86, 164, 71, 15, 131, 254, 248, 122, 123, 215, 81, 115, 71, 240, 143, 142, 1, 57, 0, 1, 1, 14, 254, 200, 3, 197, 6, 128, 0, 7, 0, 0, 65, 55, 33, 1, 33, 55, 35, 1, 3, 172, 25, 254, 126, 254, 203, 1, 130, 24, 215, 1, 5, 5, 232, 152, 248, 72, 152, 6, 136, 0, 0, 1, 0, 250, 254, 200, 3, 177, 6, 128, 0, 7, 0, 0, 65, 7, 51, 1, 35, 7, 33, 1, 2, 47, 24, 215, 254, 251, 215, 24, 1, 130, 1, 53, 6, 128, 152, 249, 120, 152, 7, 184, 0, 1, 1, 52, 254, 147, 4, 86, 6, 64, 0, 48, 0, 0, 65, 55, 38, 38, 39, 38, 54, 55, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 7, 7, 6, 6, 7, 7, 22, 22, 23, 22, 22, 7, 7, 6, 22, 23, 22, 22, 3, 44, 25, 63, 67, 13, 14, 2, 6, 21, 5, 13, 20, 20, 68, 48, 120, 142, 17, 22, 8, 30, 30, 29, 94, 73, 10, 99, 152, 54, 54, 65, 12, 22, 20, 161, 138, 15, 66, 90, 27, 26, 18, 7, 22, 8, 27, 37, 37, 124, 254, 147, 115, 8, 73, 51, 50, 116, 50, 170, 53, 101, 44, 44, 73, 26, 51, 171, 131, 170, 61, 122, 50, 49, 64, 5, 117, 6, 79, 63, 63, 165, 92, 170, 139, 135, 2, 144, 3, 38, 34, 35, 99, 64, 170, 79, 160, 66, 66, 87, 0, 0, 1, 0, 178, 254, 143, 3, 212, 6, 59, 0, 45, 0, 0, 87, 23, 54, 54, 55, 54, 54, 55, 55, 54, 54, 55, 55, 38, 38, 55, 55, 54, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 6, 7, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 7, 6, 6, 7, 6, 6, 178, 10, 97, 151, 55, 54, 67, 12, 22, 19, 162, 138, 15, 131, 103, 14, 21, 9, 23, 36, 36, 123, 90, 29, 67, 68, 12, 14, 7, 6, 22, 5, 13, 20, 20, 67, 48, 120, 140, 17, 22, 9, 34, 31, 31, 93, 252, 117, 6, 80, 64, 63, 164, 91, 169, 139, 134, 4, 144, 6, 137, 129, 171, 80, 160, 66, 65, 86, 6, 114, 7, 70, 46, 51, 119, 55, 171, 53, 101, 44, 45, 74, 26, 50, 171, 130, 169, 57, 121, 50, 51, 68, 0, 1, 1, 118, 0, 153, 3, 107, 3, 181, 0, 6, 0, 0, 65, 1, 35, 1, 7, 19, 51, 2, 35, 1, 72, 151, 254, 164, 2, 226, 124, 2, 28, 1, 153, 254, 123, 20, 254, 125, 0, 1, 1, 44, 0, 152, 3, 32, 3, 181, 0, 6, 0, 0, 65, 35, 19, 1, 51, 1, 55, 2, 64, 126, 178, 254, 184, 152, 1, 91, 1, 3, 181, 254, 123, 254, 104, 1, 134, 20, 0, 1, 0, 114, 0, 146, 4, 92, 4, 182, 0, 11, 0, 0, 65, 19, 35, 3, 33, 7, 33, 3, 51, 19, 33, 55, 2, 209, 74, 181, 74, 254, 119, 33, 1, 139, 79, 181, 78, 1, 139, 32, 3, 13, 1, 169, 254, 87, 184, 254, 61, 1, 195, 184, 0, 1, 0, 172, 2, 139, 3, 242, 3, 34, 0, 3, 0, 0, 65, 55, 33, 7, 3, 215, 27, 252, 213, 27, 2, 139, 151, 151, 0, 2, 0, 96, 0, 1, 4, 57, 4, 243, 0, 11, 0, 15, 0, 0, 65, 19, 35, 3, 33, 7, 33, 3, 51, 19, 33, 55, 3, 55, 33, 7, 2, 216, 65, 164, 65, 254, 139, 24, 1, 118, 66, 165, 65, 1, 96, 24, 174, 27, 252, 213, 27, 3, 87, 1, 156, 254, 100, 152, 254, 98, 1, 158, 152, 252, 170, 151, 151, 0, 0, 1, 0, 129, 0, 206, 4, 92, 4, 99, 0, 11, 0, 0, 83, 23, 1, 1, 55, 1, 1, 39, 1, 1, 7, 1, 129, 102, 1, 123, 1, 8, 128, 254, 249, 1, 121, 102, 254, 135, 254, 252, 129, 1, 5, 1, 82, 132, 1, 80, 254, 176, 114, 1, 82, 1, 77, 132, 254, 178, 1, 78, 115, 254, 178, 0, 0, 3, 0, 111, 0, 174, 4, 89, 4, 183, 0, 3, 0, 15, 0, 27, 0, 0, 65, 55, 33, 7, 1, 6, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 3, 20, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 4, 56, 33, 252, 54, 32, 1, 211, 1, 60, 47, 46, 60, 1, 60, 47, 47, 58, 144, 59, 47, 46, 60, 1, 60, 47, 47, 59, 2, 88, 184, 184, 1, 238, 47, 58, 2, 2, 60, 47, 45, 62, 2, 2, 62, 252, 162, 45, 60, 2, 2, 60, 47, 45, 62, 2, 2, 62, 0, 2, 0, 126, 1, 109, 4, 70, 3, 173, 0, 3, 0, 7, 0, 0, 65, 55, 33, 7, 1, 55, 33, 7, 4, 42, 28, 252, 157, 29, 3, 28, 28, 252, 157, 29, 3, 12, 161, 161, 254, 97, 160, 160, 0, 1, 0, 122, 0, 182, 4, 66, 4, 63, 0, 19, 0, 0, 65, 55, 33, 55, 33, 55, 35, 55, 39, 7, 33, 7, 33, 7, 33, 7, 33, 7, 23, 55, 3, 222, 28, 254, 93, 166, 1, 41, 28, 221, 63, 70, 97, 253, 226, 29, 1, 208, 170, 254, 175, 29, 1, 4, 83, 78, 118, 1, 109, 160, 255, 161, 96, 50, 146, 161, 255, 160, 125, 58, 183, 0, 0, 2, 0, 94, 1, 22, 4, 89, 3, 254, 0, 43, 0, 90, 0, 0, 83, 7, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 7, 34, 6, 7, 6, 6, 3, 7, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 184, 6, 26, 57, 32, 32, 72, 40, 31, 56, 26, 26, 50, 27, 50, 96, 59, 39, 70, 31, 30, 53, 23, 9, 26, 57, 32, 32, 71, 40, 32, 56, 27, 21, 43, 22, 54, 103, 64, 39, 71, 31, 31, 54, 107, 6, 26, 58, 32, 32, 71, 40, 31, 56, 26, 26, 51, 26, 49, 98, 59, 39, 69, 31, 30, 54, 23, 9, 26, 57, 32, 32, 72, 40, 30, 54, 26, 23, 45, 23, 27, 51, 27, 27, 57, 31, 39, 71, 31, 31, 55, 3, 105, 169, 28, 52, 21, 20, 25, 12, 10, 11, 27, 15, 29, 42, 23, 21, 20, 53, 29, 171, 28, 52, 20, 21, 24, 14, 11, 9, 23, 13, 31, 45, 1, 24, 20, 21, 53, 254, 56, 169, 28, 52, 20, 20, 25, 11, 10, 10, 28, 15, 29, 42, 23, 21, 20, 53, 29, 171, 28, 53, 20, 21, 24, 13, 10, 10, 25, 13, 15, 27, 11, 10, 12, 25, 20, 20, 53, 0, 1, 0, 161, 0, 201, 4, 52, 4, 80, 0, 8, 0, 0, 83, 1, 55, 37, 39, 55, 37, 55, 1, 161, 2, 246, 33, 253, 205, 38, 65, 2, 118, 30, 252, 135, 2, 68, 254, 133, 187, 240, 15, 20, 240, 201, 254, 134, 0, 1, 0, 101, 0, 192, 4, 27, 4, 72, 0, 8, 0, 0, 119, 1, 55, 1, 7, 5, 23, 7, 5, 101, 3, 156, 26, 252, 231, 32, 2, 84, 45, 71, 253, 109, 192, 1, 124, 145, 1, 123, 183, 244, 16, 20, 240, 0, 0, 2, 0, 79, 0, 9, 4, 103, 4, 158, 0, 8, 0, 12, 0, 0, 65, 55, 37, 55, 1, 7, 1, 55, 37, 1, 55, 33, 7, 1, 146, 65, 2, 118, 30, 252, 135, 26, 2, 246, 33, 253, 205, 1, 194, 27, 252, 213, 27, 2, 255, 18, 216, 181, 254, 171, 131, 254, 171, 168, 216, 253, 24, 151, 151, 0, 0, 2, 0, 87, 0, 7, 4, 78, 4, 169, 0, 8, 0, 12, 0, 0, 65, 7, 5, 7, 1, 55, 1, 7, 5, 19, 55, 33, 7, 3, 150, 71, 253, 109, 36, 3, 156, 26, 252, 231, 32, 2, 84, 25, 27, 252, 213, 27, 3, 27, 18, 216, 181, 1, 86, 130, 1, 85, 164, 220, 252, 222, 151, 151, 0, 1, 0, 189, 1, 119, 4, 0, 3, 32, 0, 5, 0, 0, 65, 19, 33, 7, 33, 3, 3, 182, 74, 252, 218, 29, 2, 115, 47, 1, 119, 1, 169, 161, 254, 248, 0, 1, 0, 114, 255, 131, 4, 124, 5, 176, 0, 3, 0, 0, 69, 1, 35, 1, 1, 29, 3, 95, 170, 252, 160, 125, 6, 45, 249, 211, 0, 1, 1, 120, 255, 131, 3, 79, 5, 176, 0, 3, 0, 0, 65, 1, 51, 1, 1, 120, 1, 60, 155, 254, 196, 5, 176, 249, 211, 6, 45, 0, 0, 1, 0, 233, 0, 215, 3, 230, 4, 207, 0, 3, 0, 0, 101, 1, 39, 1, 1, 84, 2, 146, 107, 253, 110, 215, 3, 177, 71, 252, 79, 0, 0, 5, 0, 130, 255, 233, 4, 80, 5, 199, 0, 25, 0, 51, 0, 77, 0, 103, 0, 107, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 51, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 51, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 5, 1, 39, 1, 141, 7, 4, 26, 29, 29, 89, 60, 62, 103, 38, 37, 47, 7, 7, 4, 25, 29, 29, 89, 60, 63, 102, 38, 38, 47, 124, 7, 3, 20, 18, 17, 50, 35, 34, 42, 12, 12, 7, 2, 7, 4, 20, 17, 17, 51, 34, 34, 42, 12, 12, 7, 1, 49, 7, 4, 26, 29, 29, 90, 60, 62, 103, 38, 37, 47, 7, 8, 4, 26, 29, 29, 89, 60, 63, 103, 38, 38, 47, 124, 7, 4, 20, 18, 17, 51, 35, 34, 42, 12, 11, 7, 2, 7, 4, 20, 17, 17, 51, 34, 34, 42, 12, 12, 8, 254, 127, 2, 216, 104, 253, 41, 4, 169, 76, 56, 100, 39, 39, 47, 1, 2, 44, 39, 39, 103, 59, 77, 56, 102, 39, 39, 46, 2, 1, 44, 39, 39, 105, 137, 80, 30, 58, 24, 23, 28, 1, 30, 23, 24, 57, 28, 79, 30, 58, 22, 23, 28, 30, 23, 23, 56, 253, 18, 77, 56, 101, 38, 39, 47, 1, 1, 44, 38, 38, 104, 59, 78, 56, 101, 39, 39, 46, 2, 1, 43, 39, 39, 105, 138, 81, 30, 58, 23, 23, 28, 1, 30, 23, 23, 57, 28, 80, 30, 58, 23, 23, 28, 1, 29, 24, 23, 56, 41, 4, 8, 65, 251, 248, 0, 0, 6, 0, 92, 255, 231, 4, 73, 5, 199, 0, 49, 0, 75, 0, 101, 0, 127, 0, 153, 0, 157, 0, 0, 65, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 5, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 37, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 3, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 39, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 3, 1, 39, 1, 1, 22, 3, 3, 20, 25, 24, 80, 57, 36, 62, 28, 13, 25, 12, 10, 24, 12, 26, 61, 33, 61, 96, 35, 34, 40, 5, 3, 3, 19, 24, 24, 80, 57, 37, 63, 28, 13, 24, 12, 8, 18, 9, 27, 66, 37, 62, 97, 34, 35, 40, 1, 218, 2, 13, 14, 13, 44, 32, 30, 36, 9, 8, 4, 1, 3, 2, 13, 13, 14, 43, 32, 30, 36, 9, 9, 4, 1, 254, 173, 2, 13, 14, 13, 43, 33, 30, 35, 9, 9, 4, 1, 3, 2, 13, 13, 14, 43, 32, 30, 36, 9, 9, 4, 1, 121, 2, 13, 14, 13, 43, 32, 30, 36, 9, 8, 4, 1, 3, 2, 14, 13, 14, 43, 31, 30, 35, 9, 9, 4, 1, 134, 4, 2, 22, 26, 25, 81, 57, 60, 94, 34, 33, 39, 5, 3, 3, 21, 24, 25, 81, 58, 62, 95, 33, 34, 39, 11, 3, 100, 55, 252, 156, 1, 40, 45, 50, 97, 38, 39, 47, 1, 19, 17, 8, 19, 11, 13, 21, 9, 17, 16, 1, 1, 47, 40, 39, 104, 56, 45, 50, 98, 39, 39, 49, 1, 1, 19, 18, 8, 19, 11, 10, 18, 8, 20, 21, 1, 48, 40, 41, 105, 55, 25, 59, 25, 25, 32, 33, 24, 24, 55, 23, 44, 26, 57, 24, 25, 32, 31, 24, 23, 55, 23, 45, 25, 59, 25, 24, 33, 33, 24, 24, 55, 23, 44, 26, 57, 24, 25, 32, 32, 24, 23, 54, 23, 3, 170, 25, 59, 25, 24, 33, 33, 24, 24, 55, 23, 44, 25, 57, 24, 25, 32, 31, 24, 23, 54, 23, 44, 45, 51, 97, 38, 38, 47, 1, 1, 47, 40, 39, 102, 55, 45, 51, 100, 39, 39, 49, 1, 1, 48, 40, 41, 106, 252, 226, 2, 125, 90, 253, 131, 0, 1, 1, 111, 254, 114, 3, 35, 5, 176, 0, 3, 0, 0, 65, 1, 35, 1, 2, 1, 1, 34, 146, 254, 222, 254, 114, 7, 62, 248, 194, 0, 0, 2, 1, 88, 254, 242, 3, 57, 5, 176, 0, 3, 0, 7, 0, 0, 65, 51, 19, 35, 55, 19, 35, 3, 1, 88, 181, 138, 181, 211, 132, 181, 132, 254, 242, 3, 23, 177, 2, 246, 253, 10, 0, 1, 0, 166, 0, 0, 4, 128, 5, 176, 0, 11, 0, 0, 65, 55, 33, 19, 35, 3, 33, 7, 33, 3, 51, 19, 4, 104, 24, 254, 119, 59, 181, 59, 254, 125, 25, 1, 133, 146, 181, 145, 3, 161, 153, 1, 118, 254, 138, 153, 252, 95, 3, 161, 0, 1, 0, 23, 254, 96, 4, 129, 5, 176, 0, 19, 0, 0, 97, 55, 33, 19, 33, 55, 33, 19, 35, 3, 33, 7, 33, 3, 33, 7, 33, 3, 51, 19, 3, 216, 24, 254, 117, 121, 1, 139, 24, 254, 117, 59, 181, 59, 254, 127, 24, 1, 130, 122, 254, 127, 24, 1, 130, 66, 181, 65, 151, 3, 10, 153, 1, 118, 254, 138, 153, 252, 246, 151, 254, 96, 1, 160, 0, 3, 0, 67, 255, 233, 4, 95, 4, 80, 0, 51, 0, 75, 0, 108, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 3, 45, 107, 7, 23, 18, 18, 50, 35, 39, 48, 13, 13, 7, 2, 8, 4, 24, 21, 20, 60, 41, 36, 47, 14, 13, 9, 2, 109, 2, 23, 25, 28, 88, 58, 63, 101, 36, 36, 43, 6, 8, 3, 23, 27, 27, 87, 61, 65, 100, 33, 26, 33, 253, 126, 11, 88, 70, 66, 172, 97, 93, 141, 46, 46, 40, 10, 11, 85, 67, 67, 175, 100, 93, 142, 45, 46, 39, 77, 11, 51, 57, 57, 173, 112, 79, 145, 64, 63, 106, 40, 40, 50, 8, 7, 18, 24, 24, 77, 51, 51, 127, 74, 79, 144, 63, 64, 107, 40, 40, 50, 1, 187, 1, 31, 51, 18, 18, 20, 1, 1, 36, 28, 28, 67, 32, 90, 36, 69, 27, 27, 34, 21, 19, 18, 50, 31, 1, 52, 84, 30, 33, 37, 1, 1, 47, 40, 41, 107, 58, 87, 55, 104, 40, 40, 50, 1, 2, 40, 38, 30, 80, 140, 96, 178, 67, 66, 73, 3, 2, 80, 64, 65, 164, 86, 95, 176, 67, 68, 79, 3, 2, 82, 65, 65, 166, 87, 105, 198, 77, 78, 96, 2, 2, 42, 38, 38, 107, 64, 64, 144, 76, 69, 135, 61, 61, 104, 38, 38, 45, 1, 2, 41, 38, 38, 106, 63, 64, 144, 0, 4, 0, 67, 255, 233, 4, 95, 4, 79, 0, 32, 0, 56, 0, 76, 0, 91, 0, 0, 83, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 37, 51, 23, 51, 3, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 3, 51, 19, 55, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 75, 8, 23, 28, 22, 66, 42, 52, 135, 79, 79, 145, 64, 63, 106, 40, 40, 50, 8, 10, 50, 57, 57, 173, 112, 79, 145, 63, 64, 107, 39, 40, 51, 80, 10, 86, 67, 67, 174, 100, 93, 142, 46, 46, 39, 10, 10, 87, 66, 66, 176, 99, 93, 141, 46, 46, 40, 1, 69, 121, 77, 103, 95, 28, 54, 22, 21, 27, 3, 3, 32, 29, 30, 78, 43, 199, 100, 106, 55, 30, 106, 24, 43, 15, 15, 15, 5, 4, 26, 18, 18, 44, 22, 2, 21, 75, 145, 63, 52, 89, 34, 43, 51, 2, 2, 41, 38, 38, 107, 64, 63, 144, 75, 105, 197, 77, 77, 95, 3, 2, 41, 38, 38, 106, 64, 64, 144, 76, 95, 175, 67, 66, 78, 3, 2, 81, 64, 65, 164, 86, 94, 177, 66, 66, 79, 3, 2, 81, 65, 64, 165, 39, 253, 1, 30, 11, 28, 20, 19, 52, 33, 49, 69, 22, 22, 22, 1, 1, 253, 133, 1, 94, 188, 1, 1, 8, 10, 10, 36, 28, 24, 35, 11, 11, 12, 1, 0, 2, 0, 233, 3, 151, 4, 173, 5, 176, 0, 12, 0, 20, 0, 0, 65, 3, 51, 19, 35, 3, 3, 35, 3, 51, 19, 19, 55, 1, 55, 33, 7, 51, 3, 51, 19, 4, 56, 67, 90, 94, 113, 208, 69, 108, 94, 90, 69, 67, 52, 254, 239, 14, 254, 135, 14, 143, 80, 91, 80, 5, 19, 254, 132, 2, 25, 254, 117, 1, 139, 253, 231, 1, 136, 254, 120, 1, 1, 199, 81, 81, 254, 56, 1, 200, 0, 2, 1, 198, 3, 190, 3, 182, 5, 198, 0, 23, 0, 47, 0, 0, 65, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 201, 3, 31, 30, 29, 84, 50, 54, 96, 36, 36, 44, 3, 3, 30, 28, 29, 81, 50, 55, 98, 37, 37, 45, 119, 2, 24, 20, 19, 50, 28, 26, 41, 14, 13, 12, 2, 2, 23, 18, 19, 49, 27, 26, 42, 14, 15, 14, 4, 183, 49, 89, 34, 34, 41, 1, 1, 44, 37, 36, 97, 53, 48, 90, 35, 35, 43, 1, 1, 44, 37, 38, 99, 50, 27, 50, 20, 19, 24, 22, 18, 18, 46, 24, 27, 48, 18, 19, 23, 20, 17, 17, 44, 0, 1, 0, 217, 1, 215, 4, 123, 5, 176, 0, 14, 0, 0, 65, 1, 23, 1, 19, 55, 3, 37, 39, 5, 19, 35, 3, 37, 7, 2, 55, 254, 210, 133, 1, 3, 151, 152, 200, 1, 131, 25, 254, 141, 94, 174, 42, 254, 177, 77, 3, 150, 254, 189, 111, 1, 95, 254, 148, 105, 1, 72, 94, 184, 148, 1, 166, 254, 87, 153, 170, 0, 0, 2, 0, 26, 0, 0, 4, 195, 5, 176, 0, 27, 0, 31, 0, 0, 65, 3, 51, 19, 51, 55, 35, 19, 51, 55, 35, 19, 35, 3, 35, 19, 35, 3, 33, 7, 51, 3, 35, 7, 51, 3, 51, 19, 55, 19, 51, 3, 2, 139, 150, 145, 149, 242, 24, 217, 128, 223, 24, 197, 152, 144, 153, 250, 153, 145, 152, 254, 238, 25, 249, 129, 254, 24, 230, 150, 145, 149, 49, 128, 251, 129, 1, 154, 254, 102, 1, 154, 137, 1, 98, 139, 1, 160, 254, 96, 1, 160, 254, 96, 139, 254, 158, 137, 254, 102, 1, 154, 137, 1, 98, 254, 158, 0, 0, 3, 0, 57, 255, 235, 4, 102, 5, 201, 0, 39, 0, 53, 0, 69, 0, 0, 83, 6, 22, 23, 22, 54, 55, 23, 51, 39, 54, 54, 55, 35, 6, 6, 7, 3, 55, 54, 54, 55, 54, 38, 39, 38, 6, 7, 6, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 1, 38, 38, 55, 54, 54, 55, 54, 54, 55, 55, 19, 6, 6, 3, 54, 54, 23, 50, 22, 7, 6, 6, 7, 7, 38, 38, 39, 38, 38, 69, 12, 216, 167, 100, 177, 78, 61, 202, 133, 89, 99, 13, 160, 14, 60, 50, 230, 114, 85, 149, 6, 8, 155, 124, 166, 209, 12, 3, 13, 13, 12, 36, 19, 38, 49, 93, 38, 46, 59, 1, 115, 103, 104, 12, 6, 38, 28, 27, 65, 32, 31, 240, 61, 135, 37, 8, 103, 87, 61, 55, 6, 6, 72, 50, 128, 12, 23, 7, 8, 6, 1, 110, 173, 210, 2, 2, 70, 59, 108, 235, 91, 219, 127, 85, 150, 70, 1, 140, 87, 62, 149, 115, 124, 173, 4, 4, 204, 158, 45, 85, 41, 41, 80, 39, 25, 32, 73, 43, 52, 122, 254, 202, 2, 133, 99, 42, 77, 34, 34, 59, 25, 25, 254, 82, 42, 60, 3, 224, 77, 130, 2, 94, 55, 65, 92, 37, 92, 27, 56, 29, 28, 60, 0, 0, 2, 0, 67, 255, 248, 4, 158, 5, 180, 0, 109, 0, 137, 0, 0, 65, 54, 2, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 35, 38, 38, 39, 38, 38, 39, 38, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 5, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 4, 136, 22, 47, 93, 47, 134, 89, 100, 171, 72, 73, 116, 43, 44, 57, 14, 13, 2, 14, 14, 62, 52, 51, 147, 98, 68, 134, 57, 22, 54, 118, 63, 80, 113, 37, 38, 40, 7, 7, 8, 11, 12, 46, 35, 34, 93, 59, 58, 143, 84, 73, 103, 34, 68, 22, 14, 4, 11, 10, 10, 30, 21, 22, 57, 38, 26, 23, 3, 3, 5, 3, 118, 32, 87, 55, 63, 103, 41, 42, 64, 23, 23, 30, 8, 4, 7, 2, 1, 14, 16, 16, 54, 41, 33, 57, 25, 25, 44, 20, 11, 71, 60, 56, 89, 35, 34, 51, 18, 18, 22, 253, 91, 6, 20, 15, 15, 43, 29, 29, 74, 47, 14, 24, 13, 114, 14, 35, 20, 21, 49, 29, 20, 24, 6, 6, 2, 2, 1, 6, 3, 27, 146, 1, 52, 99, 49, 59, 2, 2, 65, 57, 58, 155, 86, 87, 182, 85, 82, 165, 76, 77, 134, 49, 50, 58, 1, 1, 35, 38, 119, 29, 35, 1, 49, 42, 42, 110, 63, 62, 132, 63, 70, 153, 73, 72, 131, 49, 48, 54, 2, 2, 50, 40, 81, 250, 114, 25, 75, 41, 41, 82, 32, 32, 39, 2, 1, 28, 20, 20, 44, 18, 1, 249, 44, 46, 1, 2, 43, 37, 38, 100, 55, 55, 114, 51, 27, 72, 38, 39, 75, 29, 30, 37, 20, 17, 16, 44, 24, 57, 63, 2, 1, 46, 39, 38, 100, 54, 53, 105, 86, 36, 84, 42, 42, 77, 29, 29, 34, 3, 1, 7, 5, 254, 62, 22, 43, 17, 18, 20, 2, 1, 26, 20, 19, 47, 24, 23, 39, 0, 0, 2, 255, 215, 254, 14, 4, 146, 5, 197, 0, 112, 0, 148, 0, 0, 65, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 1, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 22, 22, 4, 53, 5, 24, 24, 31, 97, 56, 39, 84, 42, 32, 70, 33, 34, 58, 20, 21, 20, 6, 9, 65, 47, 47, 111, 54, 63, 96, 32, 32, 29, 4, 180, 6, 55, 55, 55, 161, 100, 59, 121, 56, 57, 99, 38, 39, 49, 5, 4, 11, 18, 10, 31, 20, 46, 78, 29, 30, 38, 4, 8, 62, 56, 24, 55, 30, 39, 88, 44, 30, 68, 34, 33, 60, 22, 21, 21, 5, 8, 66, 47, 48, 111, 53, 65, 106, 36, 36, 36, 5, 185, 5, 64, 61, 61, 170, 100, 90, 181, 74, 73, 98, 8, 4, 19, 27, 10, 24, 15, 46, 80, 31, 30, 37, 254, 47, 30, 69, 34, 34, 62, 22, 22, 21, 6, 6, 35, 26, 27, 66, 37, 9, 17, 9, 28, 57, 29, 49, 109, 43, 44, 49, 9, 7, 39, 29, 24, 59, 34, 37, 76, 1, 183, 61, 98, 40, 49, 75, 27, 19, 32, 14, 10, 22, 14, 14, 36, 25, 24, 64, 42, 60, 85, 27, 26, 23, 1, 2, 42, 37, 37, 101, 61, 102, 159, 55, 54, 59, 2, 1, 17, 19, 20, 61, 42, 42, 108, 66, 48, 91, 40, 25, 47, 21, 22, 56, 35, 35, 87, 52, 95, 135, 47, 21, 35, 15, 21, 33, 15, 10, 22, 14, 15, 37, 24, 25, 62, 40, 59, 85, 26, 27, 24, 1, 1, 38, 36, 36, 104, 66, 2, 106, 160, 54, 54, 56, 2, 2, 42, 46, 45, 144, 101, 58, 105, 46, 16, 31, 15, 22, 55, 35, 35, 87, 1, 50, 10, 23, 15, 15, 38, 25, 25, 64, 40, 40, 64, 24, 25, 35, 11, 3, 7, 3, 10, 20, 9, 16, 36, 28, 28, 84, 64, 45, 70, 25, 20, 29, 9, 14, 26, 0, 1, 1, 7, 0, 0, 4, 72, 5, 177, 0, 16, 0, 0, 97, 51, 19, 37, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 23, 2, 150, 181, 253, 254, 235, 108, 190, 73, 73, 93, 10, 9, 49, 54, 53, 160, 101, 72, 5, 176, 1, 67, 61, 62, 175, 110, 101, 167, 60, 61, 69, 3, 1, 0, 0, 1, 0, 232, 2, 165, 3, 209, 5, 176, 0, 8, 0, 0, 83, 51, 1, 55, 23, 19, 51, 3, 35, 232, 177, 1, 17, 28, 1, 108, 158, 174, 125, 2, 165, 1, 229, 70, 69, 254, 26, 3, 11, 0, 0, 1, 0, 28, 1, 144, 4, 134, 3, 36, 0, 49, 0, 0, 65, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 4, 134, 121, 8, 31, 24, 24, 65, 40, 29, 53, 24, 24, 43, 21, 25, 54, 28, 43, 95, 53, 71, 113, 41, 42, 51, 7, 131, 7, 31, 23, 23, 64, 40, 28, 53, 24, 24, 44, 20, 32, 67, 37, 36, 80, 45, 71, 114, 41, 41, 48, 2, 230, 15, 36, 69, 27, 28, 34, 17, 14, 14, 36, 19, 23, 42, 17, 26, 31, 1, 1, 54, 46, 46, 120, 65, 17, 36, 66, 26, 25, 32, 17, 14, 15, 35, 18, 29, 51, 19, 19, 23, 1, 58, 48, 48, 123, 0, 255, 255, 255, 226, 0, 0, 4, 115, 7, 32, 6, 38, 0, 2, 0, 0, 0, 7, 1, 91, 0, 200, 1, 87, 255, 255, 255, 226, 0, 0, 4, 87, 7, 75, 6, 38, 0, 2, 0, 0, 0, 7, 1, 95, 0, 95, 1, 152, 255, 255, 255, 226, 0, 0, 4, 60, 7, 72, 6, 38, 0, 2, 0, 0, 0, 7, 1, 92, 0, 191, 1, 91, 255, 255, 255, 226, 0, 0, 4, 91, 7, 34, 6, 38, 0, 2, 0, 0, 0, 7, 1, 97, 0, 86, 1, 91, 255, 255, 255, 226, 0, 0, 4, 2, 7, 35, 6, 38, 0, 2, 0, 0, 0, 7, 1, 90, 255, 227, 1, 90, 255, 255, 255, 226, 0, 0, 4, 140, 6, 250, 6, 38, 0, 2, 0, 0, 0, 7, 1, 94, 0, 87, 1, 74, 0, 2, 255, 226, 254, 79, 4, 2, 5, 176, 0, 36, 0, 39, 0, 0, 69, 54, 54, 55, 54, 54, 55, 55, 51, 3, 35, 1, 51, 19, 33, 19, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 1, 1, 19, 3, 18, 4, 39, 28, 28, 66, 32, 5, 38, 195, 152, 253, 59, 188, 180, 1, 213, 42, 41, 79, 31, 32, 40, 1, 1, 24, 23, 22, 63, 40, 44, 85, 38, 21, 23, 50, 26, 31, 29, 254, 142, 1, 43, 76, 226, 39, 67, 28, 27, 45, 17, 3, 5, 176, 250, 80, 1, 121, 254, 167, 23, 57, 35, 35, 84, 48, 41, 69, 23, 23, 26, 1, 20, 22, 123, 11, 16, 2, 1, 33, 3, 29, 2, 118, 253, 138, 0, 255, 255, 255, 226, 0, 0, 4, 2, 7, 140, 6, 38, 0, 2, 0, 0, 0, 7, 1, 98, 0, 86, 1, 164, 255, 255, 255, 226, 0, 0, 4, 144, 8, 23, 6, 38, 0, 2, 0, 0, 0, 7, 2, 107, 0, 68, 1, 166, 255, 255, 255, 226, 0, 0, 4, 130, 7, 81, 6, 38, 0, 2, 0, 0, 0, 7, 1, 93, 0, 215, 1, 97, 255, 255, 255, 178, 0, 0, 5, 6, 7, 32, 6, 38, 0, 72, 0, 0, 0, 7, 1, 91, 1, 24, 1, 87, 255, 255, 0, 100, 255, 233, 4, 155, 7, 53, 6, 38, 0, 4, 0, 0, 0, 7, 1, 91, 0, 240, 1, 108, 255, 255, 0, 100, 255, 233, 4, 145, 7, 95, 6, 38, 0, 4, 0, 0, 0, 7, 1, 100, 0, 116, 1, 113, 255, 255, 0, 100, 254, 75, 4, 133, 5, 198, 6, 38, 0, 4, 0, 0, 0, 6, 1, 102, 52, 0, 255, 255, 0, 100, 255, 233, 4, 133, 7, 93, 6, 38, 0, 4, 0, 0, 0, 7, 1, 92, 0, 231, 1, 112, 255, 255, 0, 46, 0, 0, 4, 119, 7, 74, 6, 38, 0, 5, 0, 0, 0, 7, 1, 100, 0, 23, 1, 92, 0, 2, 255, 211, 0, 0, 4, 134, 5, 176, 0, 22, 0, 45, 0, 0, 115, 33, 50, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 3, 35, 7, 51, 33, 55, 35, 19, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 7, 39, 19, 61, 1, 83, 151, 250, 94, 94, 121, 22, 15, 11, 13, 24, 25, 85, 59, 62, 162, 99, 254, 196, 111, 220, 27, 221, 1, 142, 27, 215, 85, 155, 70, 109, 40, 40, 56, 15, 16, 4, 9, 16, 18, 88, 69, 69, 186, 117, 133, 89, 103, 91, 90, 246, 144, 107, 89, 166, 73, 72, 125, 44, 48, 55, 2, 1, 253, 129, 151, 151, 1, 231, 1, 3, 39, 34, 35, 95, 55, 59, 132, 67, 110, 109, 191, 70, 71, 82, 1, 1, 2, 3, 0, 255, 255, 0, 72, 0, 0, 4, 161, 7, 32, 6, 38, 0, 6, 0, 0, 0, 7, 1, 91, 0, 190, 1, 87, 255, 255, 0, 72, 0, 0, 4, 161, 7, 75, 6, 38, 0, 6, 0, 0, 0, 7, 1, 95, 0, 85, 1, 152, 255, 255, 0, 72, 0, 0, 4, 161, 7, 74, 6, 38, 0, 6, 0, 0, 0, 7, 1, 100, 0, 66, 1, 92, 255, 255, 0, 72, 0, 0, 4, 161, 7, 72, 6, 38, 0, 6, 0, 0, 0, 7, 1, 92, 0, 181, 1, 91, 255, 255, 0, 72, 0, 0, 4, 161, 7, 34, 6, 38, 0, 6, 0, 0, 0, 7, 1, 97, 0, 76, 1, 91, 255, 255, 0, 72, 0, 0, 4, 161, 7, 27, 6, 38, 0, 6, 0, 0, 0, 7, 1, 96, 0, 65, 1, 91, 255, 255, 0, 72, 0, 0, 4, 161, 7, 35, 6, 38, 0, 6, 0, 0, 0, 7, 1, 90, 255, 217, 1, 90, 255, 255, 0, 72, 0, 0, 4, 161, 6, 250, 6, 38, 0, 6, 0, 0, 0, 7, 1, 94, 0, 77, 1, 74, 0, 1, 0, 65, 254, 73, 4, 146, 5, 176, 0, 28, 0, 0, 65, 35, 3, 1, 35, 3, 51, 19, 1, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 4, 146, 181, 187, 254, 203, 175, 253, 181, 187, 1, 51, 16, 5, 23, 19, 20, 58, 40, 24, 49, 23, 26, 28, 56, 29, 80, 124, 45, 44, 54, 10, 5, 176, 251, 205, 4, 51, 250, 80, 4, 53, 251, 217, 103, 34, 71, 29, 29, 37, 9, 7, 148, 8, 10, 54, 47, 47, 129, 75, 0, 0, 1, 0, 72, 254, 79, 4, 161, 5, 176, 0, 41, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 55, 51, 55, 33, 19, 3, 191, 28, 253, 178, 81, 2, 167, 28, 252, 164, 253, 2, 88, 33, 61, 23, 24, 29, 1, 1, 17, 17, 22, 70, 46, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 32, 7, 74, 28, 253, 80, 90, 2, 161, 157, 1, 212, 158, 250, 80, 22, 53, 31, 32, 72, 40, 35, 60, 23, 30, 33, 1, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 17, 3, 157, 2, 4, 0, 2, 255, 211, 0, 0, 4, 134, 5, 176, 0, 22, 0, 45, 0, 0, 115, 33, 50, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 3, 35, 7, 51, 33, 55, 35, 19, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 7, 39, 19, 61, 1, 83, 151, 250, 94, 94, 121, 22, 15, 11, 13, 24, 25, 85, 59, 62, 162, 99, 254, 196, 111, 220, 27, 221, 1, 142, 27, 215, 85, 155, 70, 109, 40, 40, 56, 15, 16, 4, 9, 16, 18, 88, 69, 69, 186, 117, 133, 89, 103, 91, 90, 246, 144, 107, 89, 166, 73, 72, 125, 44, 48, 55, 2, 1, 253, 129, 151, 151, 1, 231, 1, 3, 39, 34, 35, 95, 55, 59, 132, 67, 110, 109, 191, 70, 71, 82, 1, 1, 2, 3, 0, 255, 255, 0, 96, 255, 232, 4, 133, 7, 96, 6, 38, 0, 8, 0, 0, 0, 7, 1, 95, 0, 108, 1, 173, 255, 255, 0, 96, 255, 232, 4, 133, 7, 93, 6, 38, 0, 8, 0, 0, 0, 7, 1, 92, 0, 204, 1, 112, 255, 255, 0, 96, 254, 37, 4, 133, 5, 198, 6, 38, 0, 8, 0, 0, 0, 7, 1, 104, 0, 119, 254, 207, 0, 2, 0, 29, 0, 0, 4, 251, 5, 176, 0, 19, 0, 23, 0, 0, 65, 19, 35, 3, 33, 19, 35, 3, 35, 7, 51, 3, 51, 19, 33, 3, 51, 19, 51, 55, 1, 33, 55, 33, 4, 127, 50, 171, 50, 253, 190, 50, 170, 50, 111, 25, 111, 178, 170, 117, 2, 66, 117, 171, 178, 124, 25, 254, 158, 253, 190, 34, 2, 66, 4, 143, 1, 33, 254, 223, 1, 33, 254, 223, 143, 252, 0, 2, 161, 253, 95, 4, 0, 143, 254, 175, 194, 0, 255, 255, 0, 32, 0, 0, 4, 180, 7, 72, 6, 38, 0, 9, 0, 0, 0, 7, 1, 92, 0, 170, 1, 91, 255, 255, 0, 64, 0, 0, 4, 148, 7, 32, 6, 38, 0, 10, 0, 0, 0, 7, 1, 91, 0, 140, 1, 87, 255, 255, 0, 64, 0, 0, 4, 148, 7, 75, 6, 38, 0, 10, 0, 0, 0, 7, 1, 95, 0, 35, 1, 152, 255, 255, 0, 64, 0, 0, 4, 148, 7, 72, 6, 38, 0, 10, 0, 0, 0, 7, 1, 92, 0, 131, 1, 91, 255, 255, 0, 64, 0, 0, 4, 148, 7, 34, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 0, 26, 1, 91, 255, 255, 0, 64, 0, 0, 4, 148, 7, 27, 6, 38, 0, 10, 0, 0, 0, 7, 1, 96, 0, 15, 1, 91, 255, 255, 0, 64, 0, 0, 4, 148, 7, 35, 6, 38, 0, 10, 0, 0, 0, 7, 1, 90, 255, 167, 1, 90, 255, 255, 0, 64, 0, 0, 4, 148, 6, 250, 6, 38, 0, 10, 0, 0, 0, 7, 1, 94, 0, 27, 1, 74, 0, 1, 0, 64, 254, 79, 4, 148, 5, 176, 0, 41, 0, 0, 65, 7, 33, 3, 33, 7, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 39, 51, 55, 33, 19, 33, 55, 1, 61, 29, 1, 76, 197, 254, 181, 28, 2, 18, 33, 61, 23, 24, 29, 1, 1, 19, 19, 22, 68, 44, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 32, 5, 143, 28, 254, 173, 197, 1, 82, 29, 5, 176, 161, 251, 145, 160, 22, 53, 31, 32, 72, 40, 37, 63, 23, 27, 31, 1, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 17, 3, 160, 4, 111, 161, 0, 255, 255, 0, 64, 0, 0, 4, 148, 7, 81, 6, 38, 0, 10, 0, 0, 0, 7, 1, 93, 0, 155, 1, 97, 255, 255, 0, 63, 255, 234, 5, 106, 7, 59, 6, 38, 0, 11, 0, 0, 0, 7, 1, 92, 1, 237, 1, 78, 255, 255, 0, 62, 254, 62, 4, 252, 5, 176, 6, 38, 0, 12, 0, 0, 0, 7, 1, 104, 0, 128, 254, 232, 255, 255, 0, 88, 0, 0, 3, 219, 7, 0, 6, 38, 0, 13, 0, 0, 0, 7, 1, 91, 255, 126, 1, 55, 255, 255, 0, 88, 0, 0, 4, 74, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 0, 109, 0, 217, 255, 154, 255, 255, 0, 88, 254, 56, 3, 219, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 1, 104, 0, 128, 254, 226, 255, 255, 0, 88, 0, 0, 3, 219, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 1, 96, 0, 14, 253, 197, 0, 1, 0, 51, 0, 0, 3, 223, 5, 176, 0, 13, 0, 0, 65, 19, 35, 3, 7, 7, 55, 3, 33, 55, 33, 19, 37, 55, 1, 164, 105, 181, 116, 147, 30, 148, 107, 3, 103, 28, 253, 77, 90, 1, 12, 30, 3, 81, 2, 95, 253, 101, 45, 169, 46, 253, 147, 157, 2, 11, 83, 169, 255, 255, 0, 34, 0, 0, 4, 179, 7, 32, 6, 38, 0, 15, 0, 0, 0, 7, 1, 91, 0, 162, 1, 87, 255, 255, 0, 34, 0, 0, 4, 179, 7, 74, 6, 38, 0, 15, 0, 0, 0, 7, 1, 100, 0, 38, 1, 92, 255, 255, 0, 34, 254, 56, 4, 179, 5, 176, 6, 38, 0, 15, 0, 0, 0, 7, 1, 104, 0, 78, 254, 226, 255, 255, 0, 34, 0, 0, 4, 179, 7, 81, 6, 38, 0, 15, 0, 0, 0, 7, 1, 93, 0, 177, 1, 97, 255, 255, 0, 102, 255, 234, 4, 122, 7, 53, 6, 38, 0, 16, 0, 0, 0, 7, 1, 91, 0, 207, 1, 108, 255, 255, 0, 102, 255, 234, 4, 109, 7, 96, 6, 38, 0, 16, 0, 0, 0, 7, 1, 95, 0, 102, 1, 173, 255, 255, 0, 102, 255, 234, 4, 109, 7, 93, 6, 38, 0, 16, 0, 0, 0, 7, 1, 92, 0, 198, 1, 112, 255, 255, 0, 102, 255, 234, 4, 109, 7, 55, 6, 38, 0, 16, 0, 0, 0, 7, 1, 97, 0, 93, 1, 112, 255, 255, 0, 102, 255, 234, 4, 109, 7, 56, 6, 38, 0, 16, 0, 0, 0, 7, 1, 90, 255, 234, 1, 111, 0, 2, 0, 95, 255, 234, 5, 60, 5, 251, 0, 50, 0, 88, 0, 0, 65, 55, 54, 38, 39, 54, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 66, 26, 13, 13, 30, 54, 87, 31, 34, 41, 7, 159, 7, 23, 18, 18, 53, 37, 21, 51, 30, 40, 100, 60, 90, 151, 61, 62, 97, 35, 36, 47, 13, 26, 10, 3, 15, 15, 60, 47, 47, 131, 86, 90, 151, 62, 61, 96, 36, 35, 47, 140, 27, 9, 30, 22, 23, 62, 41, 41, 106, 65, 62, 85, 28, 28, 28, 5, 5, 5, 7, 28, 9, 30, 23, 23, 63, 42, 41, 105, 65, 62, 85, 28, 27, 28, 5, 4, 7, 2, 133, 165, 93, 199, 91, 15, 55, 39, 44, 115, 70, 1, 38, 70, 28, 29, 40, 8, 30, 51, 20, 26, 31, 1, 2, 54, 48, 49, 132, 74, 75, 159, 77, 166, 71, 152, 73, 73, 132, 50, 50, 61, 2, 2, 54, 48, 48, 132, 75, 74, 159, 246, 170, 53, 116, 56, 57, 102, 38, 39, 43, 2, 2, 51, 41, 40, 104, 55, 55, 108, 45, 169, 52, 116, 57, 56, 101, 39, 38, 43, 2, 2, 50, 40, 40, 103, 54, 55, 108, 0, 255, 255, 0, 102, 255, 234, 5, 52, 7, 95, 6, 38, 0, 16, 0, 0, 0, 7, 1, 99, 0, 211, 1, 112, 255, 255, 0, 102, 255, 234, 4, 147, 7, 15, 6, 38, 0, 16, 0, 0, 0, 7, 1, 94, 0, 94, 1, 95, 0, 3, 255, 198, 255, 163, 5, 15, 5, 236, 0, 46, 0, 69, 0, 86, 0, 0, 65, 55, 54, 54, 39, 38, 38, 39, 19, 35, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 6, 23, 22, 22, 23, 3, 51, 55, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 1, 38, 38, 53, 52, 54, 37, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 1, 22, 6, 4, 65, 26, 7, 3, 5, 5, 22, 19, 221, 151, 134, 19, 45, 26, 39, 99, 60, 90, 151, 61, 62, 97, 35, 36, 48, 12, 26, 8, 2, 7, 7, 29, 24, 219, 151, 140, 48, 129, 88, 90, 151, 62, 61, 96, 36, 35, 47, 252, 229, 28, 9, 30, 23, 23, 63, 42, 41, 105, 65, 38, 62, 25, 21, 33, 12, 253, 151, 7, 7, 6, 2, 148, 27, 9, 30, 22, 23, 62, 41, 41, 106, 65, 62, 84, 28, 2, 94, 7, 6, 2, 133, 165, 50, 105, 53, 53, 103, 47, 1, 39, 180, 24, 43, 17, 25, 30, 1, 2, 54, 48, 49, 132, 74, 75, 159, 77, 166, 54, 116, 57, 58, 110, 49, 254, 219, 187, 51, 61, 2, 2, 54, 48, 48, 132, 75, 74, 159, 75, 169, 52, 116, 57, 56, 101, 39, 38, 43, 2, 1, 21, 18, 15, 42, 24, 252, 197, 34, 72, 35, 36, 71, 202, 170, 53, 116, 56, 57, 102, 38, 39, 43, 2, 2, 49, 40, 3, 42, 60, 119, 0, 255, 255, 255, 198, 255, 163, 5, 15, 7, 94, 6, 38, 0, 219, 0, 0, 0, 7, 1, 91, 0, 201, 1, 149, 255, 255, 0, 102, 255, 234, 4, 137, 7, 102, 6, 38, 0, 16, 0, 0, 0, 7, 1, 93, 0, 222, 1, 118, 255, 255, 0, 71, 0, 0, 4, 127, 7, 20, 6, 38, 0, 19, 0, 0, 0, 7, 1, 91, 0, 185, 1, 75, 255, 255, 0, 71, 0, 0, 4, 127, 7, 62, 6, 38, 0, 19, 0, 0, 0, 7, 1, 100, 0, 61, 1, 80, 255, 255, 0, 71, 254, 56, 4, 127, 5, 176, 6, 38, 0, 19, 0, 0, 0, 7, 1, 104, 0, 102, 254, 226, 255, 255, 0, 83, 255, 234, 4, 141, 7, 53, 6, 38, 0, 20, 0, 0, 0, 7, 1, 91, 0, 183, 1, 108, 255, 255, 0, 83, 255, 234, 4, 141, 7, 95, 6, 38, 0, 20, 0, 0, 0, 7, 1, 100, 0, 59, 1, 113, 255, 255, 0, 83, 254, 66, 4, 141, 5, 198, 6, 38, 0, 20, 0, 0, 0, 6, 1, 102, 87, 247, 255, 255, 0, 83, 255, 234, 4, 141, 7, 93, 6, 38, 0, 20, 0, 0, 0, 7, 1, 92, 0, 174, 1, 112, 0, 1, 0, 194, 0, 0, 4, 247, 5, 176, 0, 15, 0, 0, 65, 55, 35, 19, 33, 55, 33, 7, 33, 3, 35, 7, 51, 3, 51, 19, 3, 184, 27, 229, 57, 1, 180, 28, 251, 231, 28, 1, 181, 57, 214, 27, 215, 142, 176, 142, 3, 55, 151, 1, 68, 158, 158, 254, 188, 151, 252, 201, 3, 55, 255, 255, 0, 194, 0, 0, 4, 247, 7, 62, 6, 38, 0, 21, 0, 0, 0, 7, 1, 100, 0, 71, 1, 80, 255, 255, 0, 104, 255, 234, 4, 181, 7, 20, 6, 38, 0, 22, 0, 0, 0, 7, 1, 91, 0, 227, 1, 75, 255, 255, 0, 104, 255, 234, 4, 181, 7, 63, 6, 38, 0, 22, 0, 0, 0, 7, 1, 95, 0, 122, 1, 140, 255, 255, 0, 104, 255, 234, 4, 181, 7, 60, 6, 38, 0, 22, 0, 0, 0, 7, 1, 92, 0, 218, 1, 79, 255, 255, 0, 104, 255, 234, 4, 181, 7, 22, 6, 38, 0, 22, 0, 0, 0, 7, 1, 97, 0, 113, 1, 79, 255, 255, 0, 104, 255, 234, 4, 181, 7, 23, 6, 38, 0, 22, 0, 0, 0, 7, 1, 90, 255, 254, 1, 78, 0, 1, 0, 104, 255, 234, 5, 241, 5, 233, 0, 43, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 54, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 4, 181, 175, 172, 12, 56, 43, 44, 117, 71, 67, 91, 27, 27, 18, 7, 165, 172, 170, 11, 44, 51, 50, 154, 100, 106, 182, 70, 70, 92, 15, 112, 82, 127, 45, 49, 59, 9, 159, 8, 26, 22, 22, 64, 46, 5, 176, 252, 38, 64, 122, 47, 47, 55, 2, 2, 61, 47, 47, 116, 59, 3, 219, 252, 37, 94, 175, 67, 68, 83, 2, 2, 78, 68, 67, 180, 100, 2, 151, 7, 48, 43, 46, 141, 94, 1, 50, 81, 31, 31, 39, 8, 255, 255, 0, 104, 255, 234, 5, 72, 7, 62, 6, 38, 0, 22, 0, 0, 0, 7, 1, 99, 0, 231, 1, 79, 255, 255, 0, 104, 255, 234, 4, 181, 6, 238, 6, 38, 0, 22, 0, 0, 0, 7, 1, 94, 0, 114, 1, 62, 0, 1, 0, 105, 254, 126, 4, 181, 5, 176, 0, 60, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 48, 48, 49, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 34, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 4, 181, 175, 172, 12, 56, 44, 43, 117, 71, 67, 91, 27, 27, 18, 7, 165, 172, 170, 10, 39, 46, 46, 140, 92, 19, 33, 11, 12, 14, 1, 1, 32, 31, 21, 55, 33, 44, 85, 38, 21, 23, 50, 26, 32, 28, 3, 3, 24, 18, 19, 46, 25, 73, 123, 47, 47, 62, 12, 5, 176, 252, 38, 64, 122, 47, 47, 55, 2, 2, 61, 47, 47, 116, 59, 3, 219, 252, 37, 90, 168, 67, 67, 86, 9, 19, 42, 23, 23, 51, 27, 48, 76, 23, 17, 18, 1, 20, 22, 123, 11, 16, 2, 34, 33, 30, 53, 23, 23, 40, 17, 25, 92, 61, 61, 146, 79, 255, 255, 0, 104, 255, 234, 4, 181, 7, 128, 6, 38, 0, 22, 0, 0, 0, 7, 1, 98, 0, 113, 1, 152, 255, 255, 0, 104, 255, 234, 4, 181, 7, 69, 6, 38, 0, 22, 0, 0, 0, 7, 1, 93, 0, 242, 1, 85, 255, 255, 0, 149, 0, 0, 5, 3, 7, 32, 6, 38, 0, 24, 0, 0, 0, 7, 1, 91, 0, 175, 1, 87, 255, 255, 0, 149, 0, 0, 5, 3, 7, 72, 6, 38, 0, 24, 0, 0, 0, 7, 1, 92, 0, 166, 1, 91, 255, 255, 0, 149, 0, 0, 5, 3, 7, 34, 6, 38, 0, 24, 0, 0, 0, 7, 1, 97, 0, 61, 1, 91, 255, 255, 0, 149, 0, 0, 5, 3, 7, 35, 6, 38, 0, 24, 0, 0, 0, 7, 1, 90, 255, 202, 1, 90, 255, 255, 0, 212, 0, 0, 4, 241, 7, 31, 6, 38, 0, 26, 0, 0, 0, 7, 1, 91, 0, 180, 1, 86, 255, 255, 0, 212, 0, 0, 4, 241, 7, 71, 6, 38, 0, 26, 0, 0, 0, 7, 1, 92, 0, 171, 1, 90, 255, 255, 0, 212, 0, 0, 4, 241, 7, 33, 6, 38, 0, 26, 0, 0, 0, 7, 1, 97, 0, 66, 1, 90, 255, 255, 0, 212, 0, 0, 4, 241, 7, 34, 6, 38, 0, 26, 0, 0, 0, 7, 1, 90, 255, 207, 1, 89, 255, 255, 0, 19, 0, 0, 4, 129, 7, 20, 6, 38, 0, 27, 0, 0, 0, 7, 1, 91, 0, 204, 1, 75, 255, 255, 0, 19, 0, 0, 4, 129, 7, 62, 6, 38, 0, 27, 0, 0, 0, 7, 1, 100, 0, 80, 1, 80, 255, 255, 0, 19, 0, 0, 4, 129, 7, 15, 6, 38, 0, 27, 0, 0, 0, 7, 1, 96, 0, 79, 1, 79, 255, 255, 0, 97, 255, 236, 4, 55, 5, 222, 6, 38, 0, 28, 0, 0, 0, 7, 1, 91, 0, 140, 0, 21, 255, 255, 0, 97, 255, 236, 4, 27, 6, 9, 6, 38, 0, 28, 0, 0, 0, 6, 1, 95, 35, 86, 255, 255, 0, 97, 255, 236, 4, 15, 6, 6, 6, 38, 0, 28, 0, 0, 0, 7, 1, 92, 0, 131, 0, 25, 255, 255, 0, 97, 255, 236, 4, 31, 5, 224, 6, 38, 0, 28, 0, 0, 0, 6, 1, 97, 26, 25, 255, 255, 0, 97, 255, 236, 4, 15, 5, 225, 6, 38, 0, 28, 0, 0, 0, 6, 1, 90, 167, 24, 255, 255, 0, 97, 255, 236, 4, 80, 5, 184, 6, 38, 0, 28, 0, 0, 0, 6, 1, 94, 27, 8, 0, 2, 0, 97, 254, 79, 4, 15, 4, 80, 0, 85, 0, 108, 0, 0, 101, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 55, 51, 55, 38, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 39, 34, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 6, 6, 37, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 23, 7, 6, 6, 7, 6, 6, 2, 247, 39, 75, 30, 30, 37, 1, 1, 22, 20, 22, 66, 42, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 32, 6, 36, 2, 13, 1, 9, 84, 9, 52, 50, 51, 142, 82, 74, 154, 64, 65, 88, 9, 181, 10, 50, 35, 34, 83, 43, 49, 81, 28, 28, 27, 6, 13, 206, 60, 123, 57, 58, 102, 39, 39, 49, 4, 4, 49, 45, 44, 121, 68, 54, 100, 45, 36, 68, 32, 2, 2, 254, 216, 41, 68, 24, 24, 22, 5, 4, 20, 15, 19, 52, 31, 55, 125, 55, 155, 39, 27, 69, 39, 41, 93, 25, 23, 56, 34, 35, 81, 46, 39, 66, 24, 24, 28, 1, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 17, 3, 17, 54, 110, 55, 1, 247, 87, 134, 47, 46, 48, 2, 1, 39, 40, 40, 121, 82, 1, 45, 65, 21, 21, 20, 1, 1, 28, 27, 27, 78, 51, 86, 1, 15, 17, 18, 56, 40, 41, 108, 70, 72, 114, 40, 40, 44, 1, 1, 23, 22, 18, 47, 28, 24, 46, 92, 1, 24, 23, 22, 66, 43, 30, 49, 19, 25, 36, 12, 22, 14, 1, 220, 37, 61, 21, 23, 24, 0, 255, 255, 0, 97, 255, 236, 4, 15, 6, 74, 6, 38, 0, 28, 0, 0, 0, 6, 1, 98, 26, 98, 255, 255, 0, 97, 255, 236, 4, 84, 6, 213, 6, 38, 0, 28, 0, 0, 0, 6, 2, 107, 8, 100, 255, 255, 0, 97, 255, 236, 4, 70, 6, 15, 6, 38, 0, 28, 0, 0, 0, 7, 1, 93, 0, 155, 0, 31, 255, 255, 255, 241, 255, 235, 4, 163, 5, 223, 6, 38, 0, 73, 0, 0, 0, 7, 1, 91, 0, 163, 0, 22, 255, 255, 0, 122, 255, 233, 4, 73, 5, 222, 6, 38, 0, 30, 0, 0, 0, 7, 1, 91, 0, 158, 0, 21, 255, 255, 0, 122, 255, 233, 4, 63, 6, 8, 6, 38, 0, 30, 0, 0, 0, 6, 1, 100, 34, 26, 255, 255, 0, 122, 254, 75, 4, 44, 4, 81, 6, 38, 0, 30, 0, 0, 0, 6, 1, 102, 72, 0, 255, 255, 0, 122, 255, 233, 4, 44, 6, 6, 6, 38, 0, 30, 0, 0, 0, 7, 1, 92, 0, 149, 0, 25, 255, 255, 0, 48, 255, 235, 6, 25, 6, 21, 4, 38, 0, 31, 186, 0, 0, 7, 0, 109, 2, 168, 255, 255, 0, 2, 0, 103, 255, 235, 5, 54, 6, 0, 0, 43, 0, 72, 0, 0, 65, 55, 35, 55, 35, 7, 35, 7, 51, 3, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 51, 19, 1, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 52, 5, 27, 27, 191, 26, 181, 28, 245, 27, 244, 48, 23, 53, 30, 37, 84, 45, 77, 130, 52, 53, 83, 30, 30, 38, 8, 2, 6, 6, 14, 14, 51, 40, 39, 109, 70, 55, 99, 44, 31, 56, 26, 19, 164, 214, 252, 197, 3, 9, 51, 43, 43, 124, 84, 34, 58, 24, 32, 49, 16, 87, 25, 58, 33, 33, 78, 45, 51, 74, 25, 25, 28, 6, 7, 4, 210, 151, 151, 151, 151, 254, 252, 29, 44, 16, 19, 19, 1, 2, 44, 40, 40, 108, 63, 63, 136, 67, 21, 59, 124, 59, 60, 107, 41, 41, 49, 2, 1, 23, 24, 16, 45, 27, 114, 4, 210, 253, 56, 21, 72, 145, 59, 58, 72, 3, 1, 16, 15, 19, 60, 39, 254, 7, 34, 58, 21, 20, 23, 2, 1, 36, 30, 29, 76, 43, 42, 88, 255, 255, 0, 108, 255, 234, 4, 51, 5, 223, 6, 38, 0, 32, 0, 0, 0, 7, 1, 91, 0, 136, 0, 22, 255, 255, 0, 108, 255, 234, 4, 43, 6, 10, 6, 38, 0, 32, 0, 0, 0, 6, 1, 95, 31, 87, 255, 255, 0, 108, 255, 234, 4, 43, 6, 9, 6, 38, 0, 32, 0, 0, 0, 6, 1, 100, 12, 27, 255, 255, 0, 108, 255, 234, 4, 43, 6, 7, 6, 38, 0, 32, 0, 0, 0, 6, 1, 92, 127, 26, 255, 255, 0, 108, 255, 234, 4, 43, 5, 225, 6, 38, 0, 32, 0, 0, 0, 6, 1, 97, 22, 26, 255, 255, 0, 108, 255, 234, 4, 43, 5, 218, 6, 38, 0, 32, 0, 0, 0, 6, 1, 96, 11, 26, 255, 255, 0, 108, 255, 234, 4, 43, 5, 226, 6, 38, 0, 32, 0, 0, 0, 6, 1, 90, 163, 25, 255, 255, 0, 108, 255, 234, 4, 76, 5, 185, 6, 38, 0, 32, 0, 0, 0, 6, 1, 94, 23, 9, 0, 1, 0, 74, 254, 72, 4, 12, 4, 79, 0, 49, 0, 0, 115, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 22, 54, 55, 54, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 7, 74, 181, 141, 24, 54, 30, 36, 83, 47, 61, 75, 20, 19, 7, 6, 126, 6, 24, 20, 21, 60, 41, 25, 50, 24, 30, 29, 59, 31, 81, 126, 46, 45, 55, 10, 126, 9, 21, 35, 35, 122, 91, 67, 113, 48, 29, 52, 23, 23, 161, 3, 43, 29, 48, 17, 20, 21, 1, 2, 43, 36, 36, 96, 53, 253, 0, 36, 69, 26, 27, 32, 8, 8, 156, 9, 11, 1, 52, 47, 47, 129, 76, 3, 3, 82, 150, 58, 58, 70, 2, 1, 38, 35, 21, 51, 30, 155, 1, 0, 2, 0, 108, 254, 97, 4, 43, 4, 80, 0, 68, 0, 82, 0, 0, 101, 39, 6, 6, 39, 38, 38, 39, 38, 38, 55, 52, 54, 53, 55, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 48, 48, 49, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 1, 22, 22, 23, 22, 22, 7, 7, 37, 54, 54, 55, 54, 54, 3, 209, 104, 64, 159, 94, 73, 106, 32, 29, 26, 4, 1, 1, 2, 233, 13, 13, 30, 45, 45, 154, 112, 77, 139, 59, 60, 97, 36, 37, 46, 8, 5, 9, 42, 50, 49, 153, 101, 51, 70, 2, 1, 25, 25, 22, 62, 38, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 3, 35, 26, 26, 62, 30, 75, 131, 254, 255, 59, 88, 28, 28, 20, 9, 4, 253, 204, 21, 64, 44, 43, 112, 187, 88, 66, 80, 3, 2, 62, 50, 45, 113, 60, 5, 8, 5, 6, 83, 100, 189, 74, 74, 91, 3, 2, 42, 38, 39, 106, 63, 63, 139, 71, 43, 99, 180, 70, 70, 90, 9, 42, 106, 66, 43, 69, 24, 22, 24, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 37, 64, 27, 26, 43, 17, 24, 91, 3, 61, 2, 51, 41, 41, 104, 55, 18, 2, 58, 114, 44, 44, 53, 255, 255, 0, 45, 254, 82, 4, 82, 6, 9, 6, 38, 0, 34, 0, 0, 0, 6, 1, 95, 14, 86, 255, 255, 0, 45, 254, 82, 4, 82, 6, 6, 6, 38, 0, 34, 0, 0, 0, 6, 1, 92, 110, 25, 255, 255, 0, 45, 254, 82, 4, 82, 6, 149, 6, 38, 0, 34, 0, 0, 0, 6, 2, 78, 22, 88, 0, 1, 0, 79, 0, 0, 4, 47, 6, 0, 0, 39, 0, 0, 65, 55, 33, 55, 35, 7, 35, 7, 51, 3, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 2, 228, 27, 254, 243, 29, 181, 27, 171, 27, 172, 214, 181, 137, 28, 67, 38, 37, 83, 46, 59, 77, 22, 22, 12, 6, 115, 181, 114, 9, 24, 36, 36, 124, 92, 54, 97, 43, 44, 77, 33, 59, 4, 210, 151, 151, 151, 151, 251, 46, 3, 19, 34, 58, 22, 21, 23, 1, 2, 41, 35, 36, 93, 53, 253, 84, 2, 169, 82, 151, 58, 58, 70, 2, 1, 27, 24, 24, 68, 40, 1, 58, 255, 255, 0, 64, 0, 0, 4, 32, 7, 111, 6, 38, 0, 35, 0, 0, 0, 7, 1, 92, 0, 102, 1, 130, 255, 255, 0, 92, 0, 0, 4, 92, 5, 201, 6, 38, 1, 109, 0, 0, 0, 7, 1, 91, 0, 177, 0, 0, 255, 255, 0, 92, 0, 0, 4, 64, 5, 244, 6, 38, 1, 109, 0, 0, 0, 6, 1, 95, 72, 65, 255, 255, 0, 92, 0, 0, 4, 37, 5, 241, 6, 38, 1, 109, 0, 0, 0, 7, 1, 92, 0, 168, 0, 4, 255, 255, 0, 92, 0, 0, 4, 68, 5, 203, 6, 38, 1, 109, 0, 0, 0, 6, 1, 97, 63, 4, 255, 255, 0, 92, 0, 0, 3, 233, 5, 204, 6, 38, 1, 109, 0, 0, 0, 6, 1, 90, 204, 3, 255, 255, 0, 92, 0, 0, 4, 117, 5, 164, 6, 38, 1, 109, 0, 0, 0, 6, 1, 94, 64, 244, 0, 2, 0, 92, 254, 79, 3, 233, 5, 197, 0, 39, 0, 63, 0, 0, 65, 7, 33, 3, 33, 7, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 39, 33, 55, 33, 19, 3, 20, 22, 23, 22, 22, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 7, 6, 6, 7, 6, 6, 1, 24, 28, 1, 101, 132, 254, 156, 29, 1, 95, 33, 61, 23, 24, 29, 1, 1, 22, 21, 22, 66, 41, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 32, 5, 1, 91, 29, 254, 169, 160, 155, 13, 11, 14, 44, 26, 26, 42, 14, 12, 14, 15, 14, 15, 39, 24, 24, 39, 14, 15, 16, 4, 58, 161, 253, 7, 160, 22, 53, 31, 32, 72, 40, 40, 66, 23, 25, 27, 1, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 17, 3, 160, 3, 154, 1, 25, 21, 36, 13, 17, 17, 1, 1, 18, 16, 14, 38, 22, 24, 40, 14, 14, 16, 1, 1, 17, 14, 15, 42, 255, 255, 0, 92, 0, 0, 4, 107, 5, 250, 6, 38, 1, 109, 0, 0, 0, 7, 1, 93, 0, 192, 0, 10, 255, 255, 0, 1, 254, 73, 4, 77, 5, 232, 6, 38, 1, 113, 0, 0, 0, 7, 1, 92, 0, 208, 255, 251, 255, 255, 0, 66, 254, 64, 4, 100, 6, 0, 6, 38, 0, 38, 0, 0, 0, 7, 1, 104, 0, 47, 254, 234, 255, 255, 0, 92, 0, 0, 4, 155, 7, 102, 6, 38, 0, 39, 0, 0, 0, 7, 1, 91, 0, 240, 1, 157, 255, 255, 0, 22, 0, 0, 5, 25, 6, 4, 4, 38, 0, 39, 186, 0, 0, 7, 0, 109, 1, 168, 255, 238, 255, 255, 0, 92, 254, 57, 3, 233, 6, 0, 6, 38, 0, 39, 0, 0, 0, 7, 1, 104, 0, 154, 254, 227, 255, 255, 0, 21, 0, 0, 4, 24, 6, 0, 4, 38, 0, 39, 185, 0, 0, 7, 1, 96, 0, 209, 253, 231, 0, 1, 0, 92, 0, 0, 4, 79, 6, 0, 0, 17, 0, 0, 65, 7, 33, 3, 5, 7, 37, 3, 33, 7, 33, 55, 33, 19, 37, 55, 5, 19, 1, 103, 29, 1, 102, 84, 254, 157, 30, 1, 99, 97, 254, 156, 29, 3, 112, 29, 254, 169, 112, 1, 50, 27, 254, 209, 97, 6, 0, 161, 254, 30, 154, 171, 154, 253, 206, 160, 160, 2, 134, 133, 170, 131, 2, 46, 255, 255, 0, 64, 0, 0, 4, 36, 5, 222, 6, 38, 0, 41, 0, 0, 0, 6, 1, 91, 121, 21, 255, 255, 0, 64, 0, 0, 4, 31, 6, 8, 6, 38, 0, 41, 0, 0, 0, 6, 1, 100, 254, 26, 255, 255, 0, 64, 254, 56, 4, 31, 4, 79, 6, 38, 0, 41, 0, 0, 0, 7, 1, 104, 0, 93, 254, 226, 255, 255, 0, 64, 0, 0, 4, 51, 6, 15, 6, 38, 0, 41, 0, 0, 0, 7, 1, 93, 0, 136, 0, 31, 255, 255, 0, 99, 255, 233, 4, 48, 5, 222, 6, 38, 0, 42, 0, 0, 0, 7, 1, 91, 0, 130, 0, 21, 255, 255, 0, 99, 255, 233, 4, 48, 6, 9, 6, 38, 0, 42, 0, 0, 0, 6, 1, 95, 25, 86, 255, 255, 0, 99, 255, 233, 4, 48, 6, 6, 6, 38, 0, 42, 0, 0, 0, 6, 1, 92, 121, 25, 255, 255, 0, 99, 255, 233, 4, 48, 5, 224, 6, 38, 0, 42, 0, 0, 0, 6, 1, 97, 16, 25, 255, 255, 0, 99, 255, 233, 4, 48, 5, 225, 6, 38, 0, 42, 0, 0, 0, 6, 1, 90, 157, 24, 0, 2, 0, 93, 255, 233, 4, 233, 4, 172, 0, 44, 0, 73, 0, 0, 65, 6, 6, 7, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 54, 54, 55, 54, 54, 55, 7, 6, 6, 3, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 4, 28, 19, 54, 38, 49, 139, 91, 80, 139, 58, 59, 95, 35, 35, 45, 9, 3, 11, 38, 49, 25, 67, 42, 39, 95, 55, 118, 193, 71, 71, 89, 14, 2, 8, 20, 30, 53, 83, 29, 30, 36, 7, 158, 7, 22, 190, 2, 11, 54, 45, 46, 128, 83, 52, 77, 27, 52, 28, 10, 3, 10, 54, 45, 45, 128, 84, 40, 65, 24, 23, 35, 12, 25, 10, 4, 35, 28, 39, 7, 53, 62, 2, 2, 41, 37, 38, 105, 62, 63, 141, 73, 22, 102, 192, 76, 39, 64, 22, 21, 25, 1, 3, 90, 77, 76, 202, 109, 23, 83, 159, 69, 16, 58, 41, 41, 109, 66, 2, 38, 70, 253, 235, 15, 80, 144, 58, 58, 72, 3, 2, 36, 30, 58, 183, 84, 22, 72, 147, 59, 59, 73, 3, 2, 23, 19, 18, 48, 28, 59, 138, 0, 255, 255, 0, 99, 255, 233, 4, 231, 6, 8, 6, 38, 0, 42, 0, 0, 0, 7, 1, 99, 0, 134, 0, 25, 255, 255, 0, 99, 255, 233, 4, 70, 5, 184, 6, 38, 0, 42, 0, 0, 0, 6, 1, 94, 17, 8, 0, 3, 0, 86, 255, 121, 4, 70, 4, 185, 0, 37, 0, 54, 0, 71, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 7, 51, 55, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 55, 35, 7, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 1, 38, 38, 39, 38, 54, 37, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 1, 22, 22, 23, 22, 6, 110, 3, 6, 8, 16, 16, 53, 39, 147, 131, 104, 39, 92, 54, 118, 193, 71, 71, 89, 14, 2, 6, 7, 14, 15, 51, 37, 148, 131, 103, 41, 97, 57, 121, 192, 70, 70, 89, 165, 3, 10, 54, 45, 45, 128, 84, 34, 57, 24, 254, 69, 17, 21, 4, 5, 1, 2, 88, 2, 11, 54, 45, 46, 128, 83, 31, 53, 23, 1, 184, 15, 18, 4, 4, 1, 2, 32, 22, 62, 122, 55, 56, 98, 39, 225, 160, 20, 23, 2, 3, 90, 77, 76, 202, 109, 23, 61, 119, 56, 55, 99, 39, 226, 158, 23, 26, 2, 3, 88, 81, 80, 203, 131, 22, 72, 147, 59, 59, 73, 3, 1, 17, 16, 253, 88, 30, 70, 37, 37, 75, 67, 22, 72, 145, 58, 58, 72, 3, 1, 14, 13, 2, 161, 30, 69, 36, 36, 72, 255, 255, 0, 86, 255, 121, 4, 70, 5, 221, 6, 38, 1, 56, 0, 0, 0, 6, 1, 91, 93, 20, 255, 255, 0, 99, 255, 233, 4, 60, 6, 15, 6, 38, 0, 42, 0, 0, 0, 7, 1, 93, 0, 145, 0, 31, 255, 255, 0, 215, 0, 0, 4, 97, 5, 222, 6, 38, 0, 45, 0, 0, 0, 6, 1, 91, 101, 21, 255, 255, 0, 215, 0, 0, 4, 97, 6, 8, 6, 38, 0, 45, 0, 0, 0, 6, 1, 100, 234, 26, 255, 255, 0, 94, 254, 56, 4, 97, 4, 80, 6, 38, 0, 45, 0, 0, 0, 7, 1, 104, 255, 177, 254, 226, 255, 255, 0, 124, 255, 234, 4, 47, 5, 222, 6, 38, 0, 46, 0, 0, 0, 7, 1, 91, 0, 132, 0, 21, 255, 255, 0, 124, 255, 234, 4, 40, 6, 8, 6, 38, 0, 46, 0, 0, 0, 6, 1, 100, 8, 26, 255, 255, 0, 124, 254, 67, 4, 40, 4, 79, 6, 38, 0, 46, 0, 0, 0, 6, 1, 102, 74, 248, 255, 255, 0, 124, 255, 234, 4, 40, 6, 6, 6, 38, 0, 46, 0, 0, 0, 6, 1, 92, 123, 25, 0, 1, 0, 196, 255, 236, 4, 54, 5, 64, 0, 40, 0, 0, 65, 55, 35, 55, 33, 55, 33, 19, 35, 3, 33, 7, 33, 7, 35, 7, 51, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 3, 54, 27, 227, 31, 1, 144, 25, 254, 112, 46, 182, 46, 254, 237, 25, 1, 20, 31, 211, 27, 213, 39, 13, 28, 34, 34, 112, 81, 37, 77, 38, 36, 69, 31, 17, 54, 109, 55, 48, 63, 17, 17, 13, 7, 42, 2, 90, 151, 186, 143, 1, 6, 254, 250, 143, 186, 151, 234, 79, 145, 50, 51, 61, 1, 1, 4, 7, 6, 22, 17, 133, 12, 20, 2, 1, 34, 28, 28, 76, 44, 252, 0, 255, 255, 0, 176, 255, 235, 5, 8, 6, 179, 4, 38, 0, 47, 236, 0, 0, 7, 0, 109, 1, 151, 0, 157, 255, 255, 0, 141, 255, 234, 4, 84, 5, 202, 6, 38, 0, 48, 0, 0, 0, 6, 1, 91, 125, 1, 255, 255, 0, 141, 255, 234, 4, 84, 5, 245, 6, 38, 0, 48, 0, 0, 0, 6, 1, 95, 20, 66, 255, 255, 0, 141, 255, 234, 4, 84, 5, 242, 6, 38, 0, 48, 0, 0, 0, 6, 1, 92, 116, 5, 255, 255, 0, 141, 255, 234, 4, 84, 5, 204, 6, 38, 0, 48, 0, 0, 0, 6, 1, 97, 11, 5, 255, 255, 0, 141, 255, 234, 4, 84, 5, 205, 6, 38, 0, 48, 0, 0, 0, 6, 1, 90, 152, 4, 0, 1, 0, 144, 255, 235, 5, 116, 4, 148, 0, 45, 0, 0, 97, 51, 19, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 55, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 2, 245, 163, 139, 152, 168, 17, 160, 7, 25, 20, 18, 49, 33, 24, 182, 135, 28, 68, 40, 37, 86, 48, 63, 68, 14, 15, 2, 6, 107, 181, 108, 6, 4, 14, 12, 49, 40, 33, 91, 58, 61, 106, 46, 34, 61, 27, 3, 32, 20, 182, 170, 1, 47, 79, 29, 26, 37, 10, 139, 252, 247, 43, 66, 21, 20, 19, 1, 2, 56, 43, 43, 105, 50, 2, 134, 253, 125, 59, 118, 53, 52, 87, 31, 27, 31, 1, 1, 30, 29, 21, 57, 33, 0, 255, 255, 0, 141, 255, 234, 4, 226, 5, 244, 6, 38, 0, 48, 0, 0, 0, 7, 1, 99, 0, 129, 0, 5, 255, 255, 0, 141, 255, 234, 4, 84, 5, 165, 6, 38, 0, 48, 0, 0, 0, 6, 1, 94, 12, 245, 0, 1, 0, 141, 254, 79, 4, 84, 4, 58, 0, 60, 0, 0, 97, 51, 19, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 3, 146, 6, 188, 182, 135, 28, 71, 42, 36, 83, 47, 63, 68, 14, 15, 2, 6, 107, 181, 108, 9, 17, 34, 33, 123, 97, 58, 104, 44, 36, 65, 28, 21, 37, 70, 28, 28, 34, 1, 1, 25, 23, 22, 63, 39, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 32, 4, 58, 252, 247, 44, 67, 21, 19, 18, 1, 2, 56, 43, 43, 105, 50, 2, 134, 253, 125, 83, 163, 65, 65, 81, 2, 1, 28, 27, 22, 58, 35, 132, 23, 55, 33, 34, 77, 45, 42, 69, 24, 22, 25, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 17, 0, 255, 255, 0, 141, 255, 234, 4, 84, 6, 54, 6, 38, 0, 48, 0, 0, 0, 6, 1, 98, 11, 78, 255, 255, 0, 141, 255, 234, 4, 84, 5, 251, 6, 38, 0, 48, 0, 0, 0, 7, 1, 93, 0, 140, 0, 11, 255, 255, 0, 132, 0, 0, 4, 218, 5, 202, 6, 38, 0, 50, 0, 0, 0, 7, 1, 91, 0, 132, 0, 1, 255, 255, 0, 132, 0, 0, 4, 218, 5, 242, 6, 38, 0, 50, 0, 0, 0, 6, 1, 92, 123, 5, 255, 255, 0, 132, 0, 0, 4, 218, 5, 204, 6, 38, 0, 50, 0, 0, 0, 6, 1, 97, 18, 5, 255, 255, 0, 132, 0, 0, 4, 218, 5, 205, 6, 38, 0, 50, 0, 0, 0, 6, 1, 90, 159, 4, 255, 255, 255, 228, 254, 72, 4, 188, 5, 202, 6, 38, 0, 52, 0, 0, 0, 7, 1, 91, 0, 145, 0, 1, 255, 255, 255, 228, 254, 72, 4, 188, 5, 242, 6, 38, 0, 52, 0, 0, 0, 7, 1, 92, 0, 136, 0, 5, 255, 255, 255, 228, 254, 72, 4, 188, 5, 204, 6, 38, 0, 52, 0, 0, 0, 6, 1, 97, 31, 5, 255, 255, 255, 228, 254, 72, 4, 188, 5, 205, 6, 38, 0, 52, 0, 0, 0, 6, 1, 90, 172, 4, 255, 255, 0, 61, 0, 0, 4, 70, 5, 202, 6, 38, 0, 53, 0, 0, 0, 7, 1, 91, 0, 150, 0, 1, 255, 255, 0, 61, 0, 0, 4, 70, 5, 244, 6, 38, 0, 53, 0, 0, 0, 6, 1, 100, 26, 6, 255, 255, 0, 61, 0, 0, 4, 70, 5, 197, 6, 38, 0, 53, 0, 0, 0, 6, 1, 96, 25, 5, 0, 1, 2, 35, 4, 191, 3, 112, 5, 201, 0, 3, 0, 0, 65, 3, 35, 19, 3, 112, 129, 204, 199, 4, 191, 1, 10, 254, 246, 0, 0, 1, 1, 231, 4, 191, 3, 171, 5, 201, 0, 3, 0, 0, 65, 3, 51, 1, 2, 196, 221, 150, 1, 46, 5, 201, 254, 246, 1, 10, 0, 1, 1, 46, 4, 227, 3, 125, 5, 237, 0, 8, 0, 0, 65, 39, 35, 5, 7, 55, 55, 23, 23, 3, 125, 211, 106, 254, 240, 2, 153, 172, 118, 146, 4, 254, 239, 238, 27, 1, 149, 150, 1, 0, 0, 1, 0, 240, 4, 228, 3, 171, 5, 240, 0, 37, 0, 0, 65, 39, 6, 6, 7, 6, 6, 7, 6, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 171, 97, 6, 19, 20, 15, 37, 23, 37, 63, 31, 31, 64, 37, 48, 77, 27, 28, 34, 5, 100, 6, 20, 15, 14, 39, 24, 37, 63, 31, 30, 64, 38, 48, 77, 28, 27, 33, 5, 211, 29, 20, 39, 22, 16, 15, 1, 1, 31, 19, 18, 32, 39, 32, 33, 84, 43, 23, 21, 40, 16, 15, 19, 1, 1, 31, 19, 19, 31, 38, 32, 31, 81, 0, 1, 1, 104, 5, 33, 4, 53, 5, 176, 0, 3, 0, 0, 65, 55, 33, 7, 4, 30, 23, 253, 74, 23, 5, 33, 143, 143, 0, 1, 1, 182, 4, 166, 3, 248, 5, 179, 0, 25, 0, 0, 65, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 3, 248, 145, 6, 26, 20, 21, 55, 35, 35, 47, 15, 15, 12, 1, 146, 1, 38, 36, 35, 99, 61, 63, 107, 41, 41, 51, 5, 178, 1, 32, 54, 20, 20, 22, 23, 20, 20, 54, 32, 1, 61, 98, 34, 35, 39, 1, 1, 36, 35, 34, 100, 0, 1, 2, 102, 4, 222, 3, 71, 5, 192, 0, 11, 0, 0, 65, 20, 22, 55, 54, 54, 55, 54, 38, 7, 6, 6, 2, 102, 65, 47, 48, 63, 1, 1, 63, 49, 50, 62, 5, 75, 49, 60, 2, 2, 62, 49, 49, 62, 1, 2, 64, 0, 0, 2, 1, 142, 4, 238, 4, 5, 5, 199, 0, 11, 0, 23, 0, 0, 65, 6, 22, 55, 54, 54, 55, 54, 38, 7, 6, 6, 5, 20, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 1, 143, 1, 60, 47, 46, 60, 1, 1, 62, 46, 47, 59, 1, 160, 60, 46, 47, 60, 1, 60, 47, 47, 59, 5, 89, 47, 58, 1, 2, 60, 46, 47, 59, 1, 2, 61, 48, 47, 58, 1, 2, 60, 46, 48, 59, 1, 2, 62, 0, 0, 2, 2, 8, 4, 93, 3, 150, 5, 232, 0, 23, 0, 47, 0, 0, 65, 6, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 2, 9, 1, 27, 25, 25, 68, 40, 43, 76, 29, 28, 34, 2, 1, 26, 24, 24, 68, 40, 43, 77, 29, 29, 36, 97, 2, 20, 16, 15, 41, 23, 21, 33, 11, 11, 10, 2, 3, 19, 15, 16, 39, 22, 21, 33, 12, 11, 12, 5, 24, 40, 68, 25, 25, 29, 31, 28, 27, 74, 43, 39, 70, 26, 26, 31, 32, 28, 29, 76, 40, 22, 41, 16, 16, 19, 18, 14, 15, 37, 20, 21, 40, 15, 16, 18, 16, 13, 14, 37, 0, 2, 1, 88, 4, 226, 4, 97, 5, 239, 0, 3, 0, 7, 0, 0, 65, 1, 51, 1, 33, 3, 51, 1, 3, 118, 254, 223, 181, 1, 87, 253, 221, 230, 161, 1, 29, 5, 239, 254, 243, 1, 13, 254, 243, 1, 13, 0, 0, 1, 1, 193, 4, 227, 4, 29, 5, 238, 0, 8, 0, 0, 65, 39, 39, 7, 23, 51, 37, 55, 7, 2, 206, 118, 149, 2, 210, 112, 1, 25, 1, 161, 5, 86, 151, 1, 23, 244, 247, 20, 2, 0, 0, 1, 252, 172, 254, 165, 253, 140, 255, 136, 0, 11, 0, 0, 69, 20, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 252, 172, 65, 47, 48, 63, 1, 63, 48, 50, 62, 238, 49, 60, 2, 2, 62, 49, 48, 64, 2, 2, 65, 0, 0, 1, 1, 23, 254, 75, 2, 95, 0, 0, 0, 30, 0, 0, 97, 35, 7, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 1, 247, 131, 45, 21, 52, 22, 21, 26, 5, 5, 38, 26, 26, 59, 27, 4, 34, 75, 35, 37, 69, 25, 23, 28, 1, 1, 21, 21, 15, 42, 26, 133, 3, 6, 8, 9, 33, 30, 32, 41, 11, 12, 10, 1, 108, 1, 9, 10, 10, 35, 25, 23, 64, 42, 37, 60, 22, 15, 23, 6, 0, 1, 1, 1, 254, 79, 2, 104, 0, 57, 0, 28, 0, 0, 69, 39, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 2, 104, 86, 45, 95, 39, 40, 52, 1, 1, 22, 21, 22, 66, 41, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 3, 60, 22, 60, 38, 38, 94, 55, 40, 66, 23, 25, 27, 1, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 0, 1, 0, 173, 255, 86, 1, 214, 0, 239, 0, 9, 0, 0, 101, 55, 35, 7, 6, 6, 7, 23, 54, 54, 1, 206, 8, 173, 10, 12, 60, 42, 100, 78, 98, 170, 69, 73, 73, 128, 61, 74, 64, 175, 255, 255, 0, 189, 0, 118, 3, 247, 3, 146, 4, 39, 0, 122, 255, 71, 255, 221, 0, 7, 0, 122, 0, 140, 255, 221, 0, 1, 0, 6, 254, 96, 4, 70, 4, 58, 0, 33, 0, 0, 65, 35, 1, 51, 19, 22, 22, 23, 50, 54, 55, 54, 54, 55, 7, 51, 19, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 1, 190, 180, 254, 252, 180, 89, 45, 110, 60, 41, 73, 33, 35, 63, 28, 19, 162, 188, 182, 139, 22, 54, 31, 37, 87, 50, 44, 58, 17, 18, 16, 2, 2, 5, 4, 4, 58, 250, 38, 1, 214, 41, 33, 1, 16, 15, 18, 53, 35, 116, 4, 58, 252, 224, 36, 55, 19, 23, 20, 2, 1, 32, 26, 25, 65, 36, 36, 73, 32, 255, 255, 0, 150, 0, 152, 3, 216, 3, 181, 4, 39, 0, 123, 255, 106, 0, 0, 0, 7, 0, 123, 0, 184, 0, 0, 0, 1, 0, 92, 0, 0, 3, 233, 4, 58, 0, 9, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 1, 24, 28, 1, 101, 132, 254, 156, 29, 3, 112, 29, 254, 169, 160, 4, 58, 161, 253, 7, 160, 160, 3, 154, 0, 2, 0, 20, 255, 235, 4, 193, 5, 176, 0, 3, 0, 31, 0, 0, 115, 19, 35, 3, 1, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 200, 253, 181, 252, 3, 248, 192, 6, 24, 22, 22, 64, 45, 41, 48, 12, 12, 5, 2, 183, 4, 31, 36, 35, 111, 76, 82, 131, 47, 47, 59, 11, 193, 5, 176, 250, 80, 5, 176, 251, 146, 40, 70, 26, 27, 29, 1, 1, 35, 27, 27, 67, 33, 1, 72, 123, 46, 46, 53, 1, 2, 47, 45, 45, 128, 79, 4, 109, 0, 4, 255, 229, 254, 77, 4, 179, 5, 194, 0, 23, 0, 33, 0, 45, 0, 57, 0, 0, 65, 7, 51, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 33, 7, 51, 3, 35, 7, 33, 55, 35, 19, 1, 6, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 5, 6, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 2, 237, 29, 216, 157, 10, 47, 37, 38, 102, 64, 45, 89, 44, 30, 53, 104, 54, 102, 163, 60, 60, 76, 14, 186, 252, 45, 29, 228, 132, 232, 28, 2, 118, 28, 217, 160, 1, 157, 1, 60, 48, 48, 60, 1, 61, 48, 48, 59, 253, 207, 1, 61, 48, 48, 59, 1, 59, 49, 48, 59, 4, 58, 161, 252, 97, 62, 100, 35, 35, 37, 1, 1, 6, 8, 158, 8, 10, 60, 57, 56, 159, 98, 4, 63, 161, 253, 7, 160, 160, 3, 154, 1, 22, 48, 58, 2, 2, 60, 48, 48, 60, 2, 2, 62, 49, 48, 58, 2, 2, 60, 48, 47, 61, 2, 2, 62, 0, 0, 1, 1, 82, 0, 0, 4, 140, 6, 46, 0, 21, 0, 0, 97, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 1, 82, 181, 193, 10, 54, 42, 41, 112, 70, 23, 45, 21, 34, 36, 72, 38, 105, 168, 61, 62, 78, 14, 4, 102, 65, 113, 41, 41, 45, 1, 1, 6, 6, 143, 8, 12, 1, 1, 67, 61, 61, 169, 99, 0, 1, 0, 1, 254, 73, 3, 102, 4, 58, 0, 23, 0, 0, 65, 7, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 1, 80, 29, 1, 98, 158, 9, 46, 37, 37, 103, 65, 45, 89, 45, 26, 53, 103, 54, 102, 163, 60, 60, 75, 14, 185, 4, 58, 161, 252, 95, 62, 102, 36, 37, 40, 1, 1, 7, 8, 154, 8, 9, 61, 57, 56, 160, 98, 4, 65, 0, 2, 1, 15, 254, 133, 2, 57, 255, 172, 0, 23, 0, 44, 0, 0, 69, 6, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 1, 16, 1, 21, 20, 19, 53, 30, 31, 56, 21, 20, 25, 1, 1, 21, 19, 19, 51, 30, 32, 56, 21, 22, 25, 83, 5, 14, 9, 9, 25, 16, 10, 17, 6, 9, 9, 2, 2, 14, 10, 10, 25, 13, 29, 26, 239, 30, 52, 19, 19, 20, 24, 21, 20, 55, 32, 30, 52, 20, 19, 22, 25, 21, 21, 56, 29, 12, 26, 10, 10, 12, 8, 6, 9, 27, 14, 13, 24, 9, 10, 11, 38, 0, 1, 253, 141, 4, 188, 254, 114, 6, 22, 0, 3, 0, 0, 65, 3, 35, 19, 254, 114, 64, 165, 115, 4, 188, 1, 90, 254, 166, 0, 0, 1, 253, 225, 4, 188, 255, 78, 6, 23, 0, 3, 0, 0, 65, 3, 51, 19, 254, 156, 187, 123, 242, 6, 23, 254, 165, 1, 91, 0, 255, 255, 253, 13, 4, 228, 255, 200, 5, 240, 4, 7, 1, 93, 252, 29, 0, 0, 0, 1, 253, 240, 4, 216, 255, 48, 6, 115, 0, 27, 0, 0, 65, 23, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 253, 240, 138, 11, 33, 60, 23, 23, 28, 2, 2, 52, 40, 41, 96, 41, 14, 16, 52, 24, 24, 32, 4, 4, 35, 23, 24, 51, 21, 4, 217, 1, 72, 6, 23, 19, 19, 54, 37, 54, 68, 21, 20, 16, 2, 105, 1, 2, 7, 7, 28, 27, 27, 30, 8, 8, 5, 2, 0, 2, 252, 187, 4, 228, 255, 101, 5, 238, 0, 3, 0, 7, 0, 0, 65, 3, 35, 19, 33, 3, 35, 19, 254, 105, 197, 233, 251, 1, 175, 137, 215, 193, 4, 228, 1, 10, 254, 246, 1, 10, 254, 246, 0, 1, 2, 138, 4, 247, 3, 210, 6, 122, 0, 3, 0, 0, 65, 3, 51, 19, 3, 13, 131, 95, 233, 6, 122, 254, 125, 1, 131, 0, 0, 3, 1, 142, 4, 223, 4, 89, 6, 191, 0, 3, 0, 15, 0, 27, 0, 0, 65, 3, 51, 19, 1, 20, 22, 55, 54, 54, 55, 54, 38, 7, 6, 6, 5, 20, 22, 55, 54, 54, 55, 52, 38, 7, 6, 6, 3, 34, 93, 139, 161, 253, 157, 64, 47, 49, 62, 1, 1, 63, 49, 50, 61, 1, 235, 63, 47, 49, 63, 1, 63, 48, 50, 61, 6, 191, 254, 248, 1, 8, 254, 142, 49, 61, 2, 2, 63, 49, 49, 62, 1, 2, 65, 49, 49, 61, 2, 2, 63, 49, 48, 64, 2, 2, 65, 0, 255, 255, 2, 53, 2, 106, 3, 21, 3, 76, 4, 6, 0, 100, 54, 0, 0, 1, 0, 71, 0, 0, 4, 165, 5, 176, 0, 5, 0, 0, 65, 55, 33, 3, 51, 19, 4, 138, 27, 252, 159, 253, 182, 226, 5, 24, 152, 250, 80, 5, 24, 0, 0, 2, 255, 192, 0, 0, 4, 37, 5, 176, 0, 3, 0, 8, 0, 0, 65, 1, 33, 3, 1, 1, 55, 23, 19, 2, 179, 253, 13, 4, 101, 213, 253, 124, 1, 202, 68, 17, 116, 5, 176, 250, 80, 5, 176, 250, 231, 3, 144, 137, 137, 252, 112, 0, 0, 3, 0, 102, 255, 234, 4, 109, 5, 198, 0, 3, 0, 41, 0, 79, 0, 0, 65, 55, 33, 7, 5, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 3, 63, 26, 254, 61, 27, 2, 206, 26, 10, 3, 14, 15, 59, 47, 47, 131, 87, 90, 151, 61, 62, 97, 35, 36, 47, 13, 26, 10, 3, 15, 15, 60, 47, 47, 131, 86, 90, 151, 62, 61, 96, 36, 35, 47, 140, 27, 9, 30, 22, 23, 62, 41, 41, 106, 65, 62, 85, 28, 28, 28, 5, 5, 6, 6, 28, 9, 30, 23, 23, 63, 42, 41, 105, 65, 62, 85, 28, 27, 28, 5, 4, 7, 2, 148, 151, 151, 15, 165, 71, 153, 74, 73, 132, 50, 50, 61, 2, 2, 54, 48, 49, 132, 74, 75, 159, 77, 166, 71, 152, 73, 73, 132, 50, 50, 61, 2, 2, 54, 48, 48, 132, 75, 74, 159, 246, 170, 53, 116, 56, 57, 102, 38, 39, 43, 2, 2, 51, 41, 40, 104, 55, 55, 108, 45, 169, 52, 116, 57, 56, 101, 39, 38, 43, 2, 2, 50, 40, 40, 103, 54, 55, 108, 0, 0, 1, 255, 200, 0, 0, 4, 18, 5, 176, 0, 6, 0, 0, 65, 19, 51, 3, 35, 1, 51, 2, 192, 160, 178, 218, 158, 253, 46, 192, 4, 154, 251, 102, 5, 176, 250, 80, 0, 3, 0, 36, 0, 0, 4, 159, 5, 176, 0, 3, 0, 7, 0, 11, 0, 0, 119, 7, 33, 55, 1, 7, 33, 55, 1, 7, 33, 55, 63, 27, 3, 139, 27, 253, 61, 27, 2, 221, 27, 253, 63, 27, 3, 124, 27, 151, 151, 151, 2, 167, 152, 152, 2, 114, 152, 152, 0, 1, 0, 53, 0, 0, 4, 159, 5, 176, 0, 7, 0, 0, 97, 19, 33, 3, 51, 19, 33, 3, 3, 163, 252, 252, 146, 252, 180, 227, 2, 4, 226, 5, 176, 250, 80, 5, 24, 250, 232, 0, 0, 1, 0, 4, 0, 0, 4, 178, 5, 176, 0, 12, 0, 0, 65, 55, 1, 33, 55, 33, 7, 1, 1, 7, 33, 55, 33, 3, 23, 3, 254, 165, 2, 216, 27, 252, 79, 24, 1, 114, 253, 196, 27, 3, 226, 27, 253, 4, 2, 205, 26, 2, 49, 152, 135, 253, 185, 253, 183, 153, 152, 0, 0, 3, 0, 80, 0, 0, 4, 131, 5, 176, 0, 29, 0, 42, 0, 55, 0, 0, 65, 55, 35, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 7, 51, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 1, 54, 54, 55, 54, 54, 55, 3, 38, 38, 39, 38, 38, 37, 6, 6, 7, 6, 6, 7, 19, 22, 22, 23, 22, 22, 3, 26, 41, 180, 42, 109, 183, 68, 69, 84, 11, 9, 34, 44, 44, 141, 98, 39, 180, 40, 109, 183, 68, 68, 85, 11, 9, 35, 44, 44, 141, 253, 144, 9, 48, 41, 40, 115, 75, 137, 68, 81, 21, 21, 7, 2, 194, 9, 47, 40, 40, 114, 75, 137, 66, 81, 21, 20, 7, 4, 224, 208, 206, 8, 89, 71, 71, 188, 108, 92, 175, 71, 71, 96, 12, 198, 196, 9, 89, 72, 71, 188, 108, 91, 174, 71, 70, 96, 253, 248, 71, 131, 52, 52, 70, 10, 253, 15, 12, 74, 51, 51, 120, 77, 71, 131, 52, 53, 71, 10, 2, 241, 13, 74, 50, 51, 119, 0, 0, 1, 0, 132, 0, 0, 4, 229, 5, 176, 0, 35, 0, 0, 65, 19, 35, 3, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 3, 51, 19, 54, 54, 55, 54, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 2, 152, 175, 181, 174, 60, 70, 17, 17, 4, 7, 104, 181, 103, 11, 25, 39, 39, 134, 98, 62, 181, 62, 109, 172, 63, 63, 79, 15, 104, 180, 105, 11, 46, 37, 37, 104, 1, 220, 3, 212, 252, 48, 19, 76, 49, 49, 112, 56, 2, 103, 253, 154, 92, 171, 70, 70, 97, 16, 254, 186, 1, 68, 13, 86, 68, 67, 178, 106, 2, 102, 253, 154, 67, 119, 48, 48, 68, 0, 1, 255, 249, 0, 0, 4, 120, 5, 198, 0, 74, 0, 0, 101, 7, 33, 55, 5, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 7, 7, 33, 55, 38, 38, 39, 38, 38, 53, 52, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 2, 73, 30, 1, 184, 27, 254, 251, 78, 123, 45, 45, 58, 14, 11, 9, 6, 16, 17, 63, 48, 48, 131, 85, 88, 151, 63, 62, 99, 37, 36, 49, 11, 12, 15, 22, 41, 19, 52, 33, 253, 28, 1, 184, 30, 70, 72, 19, 9, 7, 11, 6, 12, 8, 30, 23, 24, 64, 43, 43, 107, 66, 63, 86, 28, 28, 28, 5, 5, 5, 6, 11, 10, 34, 27, 39, 140, 192, 192, 151, 3, 51, 135, 80, 79, 176, 91, 78, 72, 149, 70, 70, 124, 47, 47, 57, 2, 2, 49, 45, 46, 123, 71, 72, 156, 78, 79, 109, 221, 98, 48, 89, 40, 3, 151, 193, 20, 102, 71, 38, 81, 40, 58, 111, 44, 82, 55, 116, 55, 54, 97, 35, 36, 40, 2, 3, 47, 38, 39, 98, 53, 53, 107, 47, 82, 67, 147, 71, 100, 156, 0, 0, 2, 0, 103, 255, 234, 4, 37, 4, 81, 0, 55, 0, 87, 0, 0, 65, 35, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 37, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 4, 37, 113, 75, 16, 39, 22, 43, 107, 58, 78, 126, 50, 50, 76, 28, 27, 34, 8, 2, 6, 3, 12, 12, 47, 37, 37, 104, 69, 58, 104, 46, 30, 57, 26, 6, 20, 15, 23, 67, 42, 32, 55, 27, 10, 12, 26, 13, 23, 21, 3, 1, 2, 3, 1, 253, 134, 3, 6, 22, 18, 18, 50, 35, 35, 89, 57, 39, 67, 28, 23, 39, 14, 94, 25, 57, 32, 33, 75, 43, 48, 67, 22, 21, 24, 5, 4, 3, 4, 58, 128, 25, 42, 16, 32, 33, 1, 2, 49, 44, 43, 116, 65, 66, 138, 65, 22, 57, 120, 57, 57, 101, 39, 39, 46, 2, 1, 26, 26, 17, 46, 27, 27, 44, 17, 25, 25, 1, 1, 16, 16, 140, 2, 4, 2, 1, 28, 19, 7, 16, 8, 13, 24, 10, 219, 22, 45, 101, 49, 49, 89, 34, 33, 38, 2, 1, 23, 20, 18, 49, 31, 253, 235, 32, 55, 19, 20, 22, 2, 1, 35, 28, 28, 74, 40, 39, 82, 0, 0, 2, 255, 254, 254, 128, 4, 83, 5, 198, 0, 38, 0, 78, 0, 0, 65, 38, 6, 7, 6, 6, 7, 3, 51, 19, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 3, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 2, 224, 89, 165, 66, 66, 90, 13, 249, 181, 87, 22, 49, 25, 43, 95, 48, 102, 177, 67, 66, 82, 8, 4, 17, 22, 23, 73, 51, 45, 81, 31, 30, 40, 5, 7, 50, 49, 49, 140, 187, 72, 27, 150, 54, 77, 23, 23, 16, 6, 8, 56, 43, 44, 115, 67, 39, 77, 35, 29, 50, 20, 143, 9, 53, 39, 39, 100, 56, 49, 76, 26, 25, 22, 5, 6, 49, 38, 38, 99, 5, 196, 2, 59, 54, 54, 150, 88, 250, 79, 1, 204, 19, 29, 11, 19, 19, 1, 2, 65, 61, 60, 169, 102, 55, 106, 47, 46, 76, 25, 24, 60, 38, 37, 91, 54, 85, 140, 51, 50, 56, 253, 150, 1, 151, 1, 3, 51, 39, 39, 96, 49, 65, 111, 40, 40, 45, 1, 1, 16, 16, 14, 42, 28, 3, 61, 54, 93, 34, 34, 38, 1, 1, 37, 31, 32, 83, 47, 59, 88, 30, 30, 31, 0, 1, 0, 157, 254, 96, 4, 204, 4, 58, 0, 10, 0, 0, 65, 1, 7, 39, 3, 35, 1, 3, 51, 19, 1, 4, 10, 254, 58, 46, 5, 196, 176, 1, 8, 84, 182, 79, 2, 118, 4, 58, 252, 249, 103, 85, 3, 25, 252, 7, 254, 31, 1, 196, 4, 22, 0, 2, 0, 91, 255, 233, 4, 66, 6, 31, 0, 63, 0, 92, 0, 0, 65, 6, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 54, 22, 23, 55, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 3, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 1, 115, 2, 20, 21, 20, 60, 37, 12, 85, 143, 53, 53, 68, 10, 2, 10, 42, 52, 52, 165, 113, 117, 194, 73, 73, 91, 14, 3, 10, 36, 44, 45, 138, 91, 27, 68, 29, 16, 25, 8, 7, 6, 3, 6, 42, 30, 30, 71, 35, 67, 130, 62, 52, 37, 75, 38, 36, 77, 40, 72, 141, 57, 57, 73, 92, 3, 6, 31, 24, 23, 64, 40, 39, 95, 55, 66, 95, 29, 29, 23, 7, 2, 11, 57, 46, 47, 129, 82, 78, 100, 28, 28, 15, 4, 237, 42, 77, 33, 33, 53, 18, 18, 18, 83, 60, 61, 152, 85, 22, 104, 189, 72, 72, 86, 3, 3, 83, 73, 72, 195, 111, 22, 100, 169, 69, 69, 107, 38, 11, 32, 22, 12, 27, 16, 13, 31, 17, 38, 55, 18, 18, 18, 1, 39, 26, 128, 18, 32, 12, 12, 14, 1, 1, 35, 37, 38, 116, 252, 185, 21, 46, 97, 45, 45, 79, 28, 28, 26, 7, 8, 77, 54, 55, 127, 57, 20, 74, 140, 54, 54, 63, 2, 2, 68, 53, 52, 132, 0, 0, 1, 0, 80, 255, 234, 4, 79, 4, 78, 0, 88, 0, 0, 83, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 23, 55, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 84, 4, 35, 33, 32, 88, 50, 49, 104, 48, 84, 174, 74, 73, 100, 11, 181, 11, 70, 47, 47, 106, 48, 25, 61, 30, 30, 55, 20, 21, 21, 4, 4, 25, 19, 15, 36, 21, 46, 108, 49, 226, 26, 248, 38, 85, 34, 18, 29, 9, 9, 7, 3, 7, 67, 45, 45, 102, 44, 40, 87, 37, 37, 47, 1, 178, 1, 76, 60, 60, 150, 74, 75, 159, 72, 79, 107, 3, 2, 23, 21, 21, 56, 33, 49, 90, 35, 35, 44, 1, 40, 60, 93, 34, 35, 49, 15, 15, 14, 1, 2, 35, 41, 40, 131, 95, 1, 53, 74, 22, 23, 20, 1, 6, 8, 7, 25, 19, 18, 52, 34, 34, 51, 19, 15, 23, 9, 19, 12, 1, 148, 1, 1, 10, 16, 8, 23, 15, 15, 39, 25, 53, 67, 20, 19, 14, 1, 1, 18, 20, 20, 64, 48, 1, 85, 120, 39, 39, 37, 2, 1, 26, 31, 35, 131, 100, 39, 66, 27, 27, 43, 16, 16, 44, 32, 32, 85, 0, 1, 0, 130, 254, 128, 4, 164, 5, 176, 0, 56, 0, 0, 69, 54, 38, 39, 38, 38, 39, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 1, 55, 33, 7, 33, 1, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 3, 107, 4, 35, 31, 32, 83, 45, 205, 33, 48, 15, 22, 12, 6, 11, 76, 53, 53, 125, 62, 1, 206, 22, 252, 98, 27, 2, 183, 254, 160, 60, 136, 60, 74, 101, 9, 8, 30, 36, 35, 109, 72, 169, 18, 43, 18, 18, 21, 3, 4, 26, 17, 18, 40, 18, 92, 35, 72, 30, 30, 40, 79, 55, 71, 24, 23, 27, 11, 52, 9, 29, 20, 27, 74, 47, 87, 143, 63, 62, 110, 54, 1, 163, 128, 152, 254, 196, 52, 122, 69, 82, 180, 96, 76, 119, 44, 45, 60, 16, 36, 4, 14, 11, 11, 33, 24, 28, 52, 23, 24, 43, 19, 89, 26, 67, 39, 39, 87, 0, 1, 0, 54, 254, 97, 4, 31, 4, 79, 0, 31, 0, 0, 65, 35, 3, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 1, 149, 163, 188, 182, 142, 30, 69, 38, 35, 78, 43, 63, 81, 22, 22, 12, 7, 186, 182, 186, 9, 25, 37, 37, 129, 94, 61, 109, 47, 38, 67, 29, 4, 58, 251, 198, 3, 41, 36, 56, 17, 16, 16, 1, 2, 41, 35, 35, 97, 57, 251, 183, 4, 76, 87, 151, 56, 56, 65, 2, 1, 30, 29, 23, 62, 38, 0, 0, 3, 0, 166, 255, 234, 4, 51, 5, 199, 0, 37, 0, 58, 0, 79, 0, 0, 65, 19, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 63, 3, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 3, 244, 54, 8, 1, 11, 11, 47, 40, 40, 115, 78, 82, 132, 53, 53, 79, 29, 29, 38, 10, 53, 8, 1, 12, 11, 48, 40, 39, 115, 78, 82, 132, 53, 52, 79, 29, 28, 37, 154, 22, 6, 21, 16, 16, 46, 32, 32, 83, 53, 50, 66, 20, 21, 20, 2, 3, 6, 5, 21, 26, 20, 6, 18, 15, 13, 40, 29, 33, 91, 61, 50, 66, 21, 20, 19, 3, 2, 6, 5, 19, 2, 46, 1, 84, 63, 135, 64, 63, 114, 43, 43, 52, 2, 2, 45, 41, 42, 113, 65, 65, 141, 69, 254, 171, 64, 133, 63, 64, 113, 43, 43, 52, 2, 2, 45, 41, 41, 113, 65, 65, 140, 171, 141, 43, 92, 44, 44, 78, 29, 29, 32, 2, 2, 39, 31, 31, 80, 43, 42, 84, 36, 142, 151, 129, 39, 85, 41, 40, 75, 32, 36, 41, 2, 2, 39, 30, 31, 79, 42, 42, 85, 36, 130, 0, 1, 0, 233, 255, 235, 3, 191, 4, 58, 0, 23, 0, 0, 65, 7, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 55, 19, 1, 6, 29, 1, 86, 95, 14, 21, 29, 28, 102, 80, 65, 114, 54, 28, 37, 74, 42, 44, 51, 12, 13, 6, 8, 124, 4, 58, 161, 253, 191, 83, 127, 47, 48, 56, 2, 2, 33, 35, 133, 18, 25, 28, 25, 24, 67, 51, 2, 238, 0, 1, 255, 203, 255, 237, 3, 231, 5, 236, 0, 44, 0, 0, 65, 34, 6, 7, 7, 54, 54, 23, 22, 22, 23, 22, 22, 23, 23, 1, 51, 1, 55, 19, 22, 22, 23, 22, 22, 55, 54, 54, 55, 55, 6, 6, 39, 38, 38, 39, 38, 38, 39, 3, 38, 38, 39, 38, 38, 1, 132, 24, 48, 23, 12, 17, 34, 17, 34, 46, 16, 16, 19, 6, 29, 253, 200, 209, 1, 97, 53, 112, 12, 39, 31, 31, 85, 59, 14, 25, 14, 15, 11, 24, 11, 27, 36, 11, 12, 13, 5, 190, 12, 45, 33, 33, 90, 5, 236, 8, 5, 143, 1, 3, 1, 2, 39, 28, 28, 64, 27, 132, 251, 237, 2, 165, 128, 253, 214, 48, 98, 38, 39, 47, 3, 1, 8, 5, 153, 2, 3, 1, 2, 32, 22, 22, 51, 22, 3, 181, 51, 97, 38, 37, 45, 0, 0, 1, 0, 134, 254, 119, 4, 125, 5, 198, 0, 93, 0, 0, 65, 55, 38, 38, 35, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 23, 55, 39, 34, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 4, 87, 38, 62, 126, 64, 58, 127, 62, 62, 114, 44, 44, 55, 4, 3, 34, 30, 30, 80, 44, 77, 138, 54, 54, 69, 7, 9, 61, 59, 58, 161, 92, 53, 19, 44, 18, 18, 21, 3, 3, 25, 17, 17, 41, 19, 91, 34, 72, 30, 29, 40, 3, 4, 36, 31, 32, 83, 44, 103, 56, 102, 37, 37, 38, 8, 11, 95, 70, 69, 168, 86, 127, 27, 150, 34, 78, 38, 38, 68, 24, 25, 23, 7, 6, 44, 32, 32, 78, 41, 41, 80, 34, 56, 107, 5, 8, 151, 18, 20, 1, 13, 15, 16, 52, 39, 40, 108, 71, 51, 86, 34, 35, 53, 18, 23, 68, 49, 49, 132, 86, 107, 150, 51, 52, 66, 22, 13, 5, 12, 10, 11, 32, 25, 30, 51, 23, 23, 42, 20, 88, 26, 66, 39, 38, 86, 46, 54, 71, 23, 22, 27, 11, 26, 13, 47, 36, 35, 98, 65, 97, 128, 38, 37, 30, 1, 152, 1, 6, 9, 8, 28, 24, 23, 67, 47, 42, 63, 22, 21, 28, 8, 7, 4, 21, 0, 0, 1, 0, 110, 255, 236, 4, 128, 4, 58, 0, 29, 0, 0, 65, 55, 33, 7, 51, 3, 51, 19, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 52, 55, 19, 4, 101, 27, 252, 42, 27, 128, 161, 181, 161, 1, 98, 108, 5, 10, 22, 21, 81, 65, 48, 83, 41, 29, 22, 45, 24, 28, 30, 6, 7, 2, 111, 3, 161, 153, 153, 252, 95, 3, 161, 253, 117, 57, 105, 41, 41, 51, 1, 2, 24, 26, 132, 8, 14, 22, 18, 18, 45, 23, 2, 151, 0, 0, 2, 255, 239, 254, 96, 4, 31, 4, 81, 0, 33, 0, 62, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 51, 19, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 21, 3, 7, 4, 14, 14, 55, 43, 43, 121, 79, 100, 185, 68, 78, 79, 18, 171, 181, 98, 21, 48, 26, 46, 107, 56, 76, 126, 50, 49, 75, 27, 30, 38, 169, 3, 9, 50, 42, 42, 121, 80, 39, 68, 29, 32, 51, 17, 50, 11, 52, 42, 41, 115, 75, 54, 74, 23, 23, 24, 4, 4, 5, 1, 250, 22, 67, 136, 63, 63, 110, 42, 41, 50, 2, 3, 77, 68, 73, 201, 107, 252, 29, 2, 17, 25, 40, 15, 27, 26, 1, 1, 41, 37, 35, 97, 57, 60, 134, 88, 21, 70, 137, 53, 54, 65, 2, 1, 18, 17, 19, 59, 40, 1, 38, 64, 134, 55, 55, 68, 2, 2, 42, 33, 34, 88, 46, 47, 93, 0, 0, 1, 0, 95, 254, 87, 4, 41, 4, 81, 0, 66, 0, 0, 65, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 2, 155, 116, 193, 72, 72, 90, 13, 5, 11, 53, 57, 56, 168, 104, 22, 64, 29, 29, 37, 4, 5, 35, 25, 25, 60, 30, 64, 52, 101, 41, 40, 53, 3, 3, 26, 24, 25, 66, 37, 38, 78, 36, 72, 110, 35, 35, 29, 8, 6, 10, 57, 46, 46, 127, 81, 56, 90, 31, 30, 30, 3, 170, 4, 55, 52, 53, 149, 4, 79, 2, 87, 75, 76, 198, 109, 43, 109, 175, 65, 65, 84, 18, 4, 9, 11, 11, 38, 33, 36, 59, 23, 24, 37, 14, 127, 22, 62, 41, 40, 101, 62, 47, 70, 25, 25, 34, 12, 11, 16, 7, 14, 63, 48, 47, 123, 73, 42, 71, 142, 56, 56, 68, 2, 1, 34, 30, 31, 89, 57, 1, 92, 145, 51, 50, 55, 0, 0, 2, 0, 83, 255, 233, 4, 184, 4, 59, 0, 28, 0, 54, 0, 0, 65, 55, 37, 34, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 1, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 4, 157, 27, 253, 205, 116, 190, 70, 71, 88, 13, 3, 11, 35, 47, 47, 158, 114, 108, 186, 71, 69, 94, 12, 3, 7, 19, 28, 15, 40, 26, 253, 136, 3, 10, 52, 44, 44, 123, 81, 76, 94, 25, 24, 10, 7, 3, 10, 51, 43, 44, 125, 83, 78, 93, 23, 24, 9, 3, 161, 153, 1, 84, 72, 73, 195, 110, 23, 101, 194, 76, 77, 95, 3, 3, 79, 71, 69, 191, 106, 24, 76, 141, 64, 34, 64, 30, 254, 108, 22, 70, 141, 56, 55, 67, 3, 3, 71, 54, 55, 132, 62, 22, 71, 145, 58, 59, 72, 3, 3, 76, 58, 57, 137, 0, 0, 1, 0, 223, 255, 235, 4, 103, 4, 58, 0, 25, 0, 0, 65, 55, 33, 7, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 55, 19, 4, 75, 28, 252, 148, 28, 1, 94, 97, 8, 15, 27, 27, 101, 80, 63, 114, 52, 29, 35, 73, 39, 43, 50, 12, 12, 3, 4, 99, 3, 156, 158, 158, 253, 178, 71, 127, 48, 48, 58, 2, 1, 33, 35, 133, 17, 25, 30, 25, 25, 67, 38, 2, 89, 0, 1, 0, 121, 255, 233, 4, 42, 4, 60, 0, 36, 0, 0, 65, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 2, 39, 39, 22, 18, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 1, 161, 180, 104, 12, 33, 46, 46, 154, 110, 84, 139, 57, 57, 87, 32, 32, 41, 10, 17, 11, 38, 182, 35, 18, 19, 11, 54, 43, 44, 122, 84, 71, 84, 21, 21, 7, 7, 4, 58, 253, 151, 103, 176, 65, 65, 75, 2, 2, 45, 41, 41, 112, 66, 66, 145, 74, 129, 1, 5, 125, 2, 125, 254, 250, 129, 72, 160, 64, 66, 79, 1, 2, 61, 48, 47, 117, 58, 0, 0, 2, 0, 87, 254, 34, 4, 81, 4, 60, 0, 55, 0, 77, 0, 0, 69, 3, 51, 19, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 38, 38, 39, 38, 38, 39, 38, 52, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 55, 19, 54, 54, 55, 54, 54, 55, 54, 22, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 6, 6, 1, 152, 86, 181, 85, 113, 180, 65, 64, 78, 12, 5, 2, 10, 11, 42, 33, 34, 95, 64, 57, 93, 34, 35, 43, 7, 120, 32, 50, 17, 14, 20, 6, 16, 9, 10, 42, 30, 29, 75, 44, 86, 66, 107, 40, 45, 57, 10, 11, 19, 36, 16, 44, 28, 34, 89, 252, 123, 3, 11, 9, 9, 26, 18, 36, 46, 14, 13, 11, 1, 1, 5, 2, 8, 49, 39, 40, 109, 12, 254, 46, 1, 207, 15, 98, 75, 74, 193, 111, 48, 116, 59, 59, 110, 43, 43, 53, 1, 1, 36, 33, 34, 92, 54, 253, 76, 13, 41, 25, 19, 45, 24, 54, 120, 54, 61, 116, 52, 50, 91, 39, 136, 44, 109, 62, 72, 166, 90, 91, 181, 75, 34, 62, 25, 30, 43, 139, 2, 192, 16, 31, 13, 12, 15, 1, 1, 43, 35, 36, 87, 43, 43, 72, 21, 70, 131, 54, 55, 82, 0, 0, 1, 0, 85, 254, 40, 4, 113, 4, 59, 0, 45, 0, 0, 65, 35, 3, 38, 38, 39, 38, 38, 53, 38, 54, 55, 19, 35, 3, 6, 6, 23, 22, 22, 23, 22, 22, 23, 3, 51, 19, 54, 54, 55, 54, 54, 55, 54, 18, 39, 39, 22, 16, 7, 6, 6, 7, 6, 6, 7, 2, 252, 181, 168, 44, 57, 17, 17, 15, 1, 7, 5, 82, 181, 81, 7, 4, 4, 6, 30, 33, 35, 118, 87, 85, 181, 84, 121, 186, 67, 66, 80, 16, 17, 6, 23, 183, 23, 20, 12, 52, 41, 42, 116, 76, 4, 58, 252, 84, 17, 59, 38, 37, 86, 45, 44, 87, 38, 1, 233, 254, 26, 52, 108, 52, 62, 115, 55, 59, 87, 17, 254, 51, 1, 201, 13, 101, 78, 77, 202, 115, 127, 1, 2, 126, 1, 126, 254, 254, 127, 74, 139, 57, 58, 85, 21, 0, 1, 0, 54, 255, 233, 4, 113, 4, 60, 0, 88, 0, 0, 65, 35, 6, 2, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 38, 38, 39, 39, 22, 18, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 1, 183, 194, 69, 89, 18, 6, 9, 2, 1, 21, 26, 25, 86, 65, 51, 79, 32, 32, 49, 21, 6, 32, 26, 26, 72, 46, 68, 104, 39, 38, 53, 18, 18, 22, 7, 8, 10, 1, 14, 16, 181, 28, 2, 17, 3, 8, 8, 8, 25, 19, 19, 54, 37, 33, 38, 10, 10, 4, 2, 1, 8, 2, 47, 182, 47, 3, 10, 9, 9, 27, 20, 20, 56, 37, 30, 31, 6, 7, 1, 4, 4, 11, 2, 10, 41, 26, 25, 58, 4, 57, 123, 254, 250, 140, 43, 118, 63, 64, 125, 50, 50, 63, 2, 1, 35, 30, 30, 78, 41, 43, 76, 28, 29, 34, 1, 2, 57, 49, 48, 125, 66, 66, 126, 50, 64, 130, 65, 65, 130, 63, 2, 129, 254, 252, 130, 23, 83, 49, 49, 101, 41, 41, 51, 1, 1, 41, 32, 32, 79, 38, 37, 64, 18, 1, 44, 254, 212, 24, 71, 39, 39, 77, 30, 30, 35, 3, 2, 57, 42, 42, 101, 47, 46, 75, 16, 69, 134, 66, 65, 128, 0, 2, 0, 111, 255, 233, 4, 136, 5, 200, 0, 58, 0, 81, 0, 0, 65, 55, 6, 6, 7, 19, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 7, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 54, 1, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 3, 38, 38, 39, 38, 38, 4, 135, 1, 33, 66, 34, 53, 11, 5, 13, 7, 19, 12, 34, 113, 80, 78, 128, 47, 48, 58, 8, 2, 7, 48, 51, 50, 151, 95, 30, 9, 43, 35, 36, 101, 68, 63, 84, 23, 24, 14, 6, 56, 183, 54, 11, 41, 48, 48, 148, 97, 104, 167, 61, 61, 77, 15, 26, 40, 77, 254, 10, 1, 4, 24, 21, 21, 61, 42, 23, 34, 13, 12, 16, 6, 10, 1, 3, 60, 56, 84, 28, 35, 29, 2, 115, 149, 8, 12, 5, 1, 63, 68, 105, 41, 22, 39, 18, 51, 62, 2, 2, 52, 47, 48, 129, 74, 17, 97, 169, 66, 67, 92, 19, 169, 60, 110, 41, 41, 48, 3, 2, 52, 41, 41, 105, 56, 1, 81, 2, 254, 178, 93, 164, 61, 62, 72, 3, 3, 69, 62, 61, 168, 98, 160, 5, 14, 1, 242, 17, 36, 70, 28, 27, 32, 1, 1, 12, 10, 10, 26, 15, 32, 75, 34, 254, 169, 16, 56, 38, 47, 121, 0, 1, 0, 193, 0, 0, 5, 16, 5, 191, 0, 46, 0, 0, 65, 3, 7, 39, 3, 38, 38, 39, 38, 38, 39, 38, 6, 7, 23, 54, 54, 51, 50, 22, 23, 22, 22, 23, 19, 3, 51, 19, 1, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 3, 134, 236, 42, 6, 110, 12, 35, 25, 25, 70, 48, 27, 48, 25, 10, 11, 21, 11, 17, 28, 11, 12, 17, 6, 175, 102, 179, 99, 1, 121, 9, 9, 9, 21, 62, 42, 11, 21, 10, 37, 28, 53, 32, 54, 84, 33, 34, 53, 4, 217, 254, 111, 94, 76, 1, 160, 40, 80, 32, 32, 41, 2, 1, 10, 12, 152, 3, 5, 11, 10, 9, 28, 16, 253, 129, 253, 181, 2, 57, 2, 101, 14, 15, 14, 33, 48, 5, 6, 148, 14, 12, 1, 1, 39, 32, 33, 83, 0, 0, 2, 0, 39, 255, 233, 4, 200, 4, 58, 0, 40, 0, 86, 0, 0, 65, 55, 33, 7, 55, 6, 2, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 39, 3, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 55, 35, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 5, 22, 22, 4, 171, 29, 251, 184, 28, 107, 64, 80, 16, 5, 3, 5, 5, 27, 26, 25, 78, 56, 51, 79, 32, 31, 49, 20, 6, 32, 27, 26, 72, 47, 59, 91, 35, 34, 49, 17, 17, 20, 6, 16, 3, 3, 195, 2, 7, 6, 7, 19, 15, 16, 42, 29, 33, 39, 10, 10, 4, 2, 1, 8, 2, 38, 181, 39, 3, 10, 8, 9, 27, 20, 20, 54, 37, 25, 28, 7, 7, 1, 2, 2, 7, 2, 17, 93, 61, 1, 229, 8, 1, 3, 161, 153, 153, 2, 116, 255, 0, 132, 41, 98, 49, 50, 92, 36, 36, 45, 1, 2, 36, 30, 30, 78, 41, 43, 76, 29, 29, 34, 1, 2, 41, 36, 35, 93, 52, 51, 105, 46, 124, 244, 125, 254, 17, 19, 60, 34, 35, 69, 28, 28, 34, 41, 32, 32, 79, 38, 38, 64, 18, 252, 252, 24, 70, 39, 39, 78, 30, 30, 35, 3, 2, 38, 29, 28, 68, 33, 32, 54, 14, 132, 255, 117, 1, 125, 244, 0, 0, 1, 0, 162, 255, 243, 4, 178, 5, 176, 0, 48, 0, 0, 65, 55, 33, 7, 33, 3, 51, 19, 54, 54, 51, 54, 50, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 19, 4, 151, 27, 252, 11, 27, 1, 81, 226, 180, 124, 14, 27, 14, 16, 32, 16, 38, 60, 22, 16, 25, 9, 23, 14, 6, 6, 35, 30, 31, 90, 61, 13, 97, 158, 58, 57, 69, 9, 8, 39, 47, 19, 48, 29, 40, 99, 59, 29, 55, 29, 85, 5, 24, 152, 152, 250, 232, 2, 175, 1, 2, 1, 1, 1, 18, 15, 11, 27, 16, 39, 102, 57, 57, 98, 36, 36, 43, 2, 145, 2, 56, 53, 52, 153, 99, 95, 164, 61, 25, 42, 16, 22, 25, 1, 1, 4, 2, 1, 200, 0, 0, 1, 0, 114, 255, 233, 4, 147, 5, 199, 0, 67, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 33, 55, 33, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 4, 36, 174, 18, 58, 43, 43, 116, 76, 57, 82, 27, 27, 32, 6, 6, 2, 6, 14, 2, 40, 27, 253, 214, 12, 7, 27, 21, 24, 74, 48, 38, 94, 56, 71, 94, 29, 28, 24, 2, 180, 2, 51, 51, 52, 157, 106, 85, 146, 60, 61, 96, 36, 36, 48, 12, 49, 9, 7, 18, 17, 64, 48, 47, 127, 81, 108, 181, 69, 69, 91, 1, 185, 3, 68, 115, 41, 42, 44, 3, 2, 42, 35, 34, 88, 48, 48, 99, 44, 89, 152, 75, 48, 99, 46, 56, 101, 34, 27, 30, 1, 2, 52, 43, 43, 113, 64, 100, 170, 62, 62, 71, 2, 2, 44, 40, 41, 112, 66, 67, 148, 76, 254, 199, 71, 141, 65, 66, 113, 42, 42, 50, 2, 3, 66, 62, 61, 172, 0, 2, 255, 186, 255, 254, 4, 102, 5, 176, 0, 49, 0, 64, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 39, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 19, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 6, 6, 7, 39, 3, 106, 253, 219, 119, 4, 8, 6, 6, 17, 12, 13, 34, 22, 23, 58, 37, 19, 17, 37, 83, 122, 43, 31, 46, 17, 18, 26, 8, 7, 11, 5, 94, 189, 226, 1, 24, 63, 105, 43, 42, 65, 24, 23, 28, 5, 7, 18, 30, 31, 111, 86, 75, 26, 98, 40, 46, 7, 8, 6, 3, 5, 26, 24, 25, 76, 57, 78, 5, 176, 253, 84, 22, 77, 48, 48, 109, 52, 53, 97, 37, 37, 45, 2, 1, 150, 2, 81, 67, 48, 115, 61, 61, 131, 59, 43, 77, 31, 2, 20, 250, 232, 1, 35, 31, 31, 86, 51, 50, 111, 56, 72, 152, 63, 62, 82, 4, 2, 152, 2, 1, 63, 41, 45, 100, 31, 46, 105, 45, 45, 61, 1, 1, 0, 2, 0, 22, 255, 254, 4, 80, 5, 176, 0, 24, 0, 39, 0, 0, 65, 19, 35, 3, 51, 19, 51, 3, 51, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 35, 19, 35, 3, 23, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 1, 89, 110, 180, 253, 180, 117, 242, 117, 238, 94, 147, 53, 52, 61, 8, 7, 25, 35, 35, 118, 86, 42, 113, 180, 110, 161, 48, 48, 54, 13, 12, 1, 4, 6, 30, 27, 27, 81, 57, 42, 3, 57, 2, 119, 250, 80, 2, 161, 253, 95, 2, 69, 59, 59, 158, 88, 77, 144, 57, 56, 70, 2, 2, 107, 253, 137, 138, 1, 3, 52, 37, 37, 86, 38, 50, 97, 38, 39, 50, 1, 1, 0, 1, 0, 186, 0, 0, 4, 181, 5, 176, 0, 35, 0, 0, 65, 55, 33, 7, 33, 3, 51, 19, 54, 54, 55, 50, 50, 51, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 34, 34, 7, 6, 6, 7, 19, 4, 154, 27, 252, 32, 27, 1, 80, 226, 181, 126, 14, 30, 14, 12, 24, 12, 59, 74, 20, 20, 9, 6, 75, 181, 75, 10, 36, 44, 45, 140, 93, 11, 23, 11, 13, 27, 14, 84, 5, 24, 152, 152, 250, 232, 2, 190, 1, 2, 1, 2, 38, 32, 32, 90, 54, 254, 54, 1, 201, 92, 148, 52, 51, 57, 1, 1, 1, 3, 2, 1, 197, 0, 1, 0, 53, 254, 153, 4, 160, 5, 176, 0, 11, 0, 0, 65, 3, 33, 3, 51, 19, 33, 19, 35, 3, 33, 19, 1, 49, 252, 1, 97, 63, 181, 63, 1, 88, 253, 181, 227, 253, 252, 226, 5, 176, 250, 80, 254, 153, 1, 103, 5, 176, 250, 231, 5, 25, 0, 2, 0, 53, 255, 255, 4, 147, 5, 176, 0, 18, 0, 33, 0, 0, 65, 55, 33, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 3, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 4, 120, 27, 252, 159, 253, 1, 194, 103, 186, 72, 72, 93, 9, 8, 55, 55, 56, 158, 94, 245, 78, 104, 1, 12, 59, 93, 31, 30, 25, 7, 9, 60, 46, 46, 120, 68, 246, 5, 24, 152, 250, 80, 1, 56, 56, 56, 165, 108, 99, 153, 53, 52, 56, 3, 1, 1, 191, 253, 170, 1, 2, 38, 33, 34, 95, 60, 69, 109, 38, 38, 40, 2, 0, 0, 2, 255, 184, 254, 153, 4, 112, 5, 176, 0, 20, 0, 30, 0, 0, 65, 19, 35, 19, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 39, 3, 51, 19, 33, 3, 3, 19, 33, 3, 5, 54, 54, 55, 54, 54, 3, 160, 105, 123, 226, 253, 137, 132, 12, 26, 16, 17, 46, 32, 32, 88, 58, 62, 56, 153, 63, 2, 170, 62, 208, 96, 1, 21, 200, 254, 75, 61, 84, 30, 29, 41, 254, 155, 1, 252, 5, 25, 253, 183, 61, 134, 68, 68, 134, 59, 60, 101, 36, 1, 254, 2, 1, 103, 254, 155, 4, 204, 1, 177, 251, 127, 3, 75, 175, 94, 94, 193, 0, 0, 1, 255, 176, 0, 0, 4, 254, 5, 176, 0, 21, 0, 0, 65, 19, 51, 3, 1, 35, 1, 35, 19, 35, 3, 39, 3, 35, 19, 1, 51, 1, 51, 3, 51, 19, 2, 242, 89, 212, 134, 1, 101, 217, 254, 228, 58, 118, 179, 117, 67, 53, 204, 96, 254, 119, 231, 1, 59, 57, 117, 178, 117, 2, 139, 253, 117, 2, 206, 2, 226, 253, 114, 2, 142, 253, 114, 1, 2, 141, 253, 50, 253, 30, 2, 140, 253, 116, 2, 140, 0, 1, 0, 46, 255, 233, 4, 147, 5, 197, 0, 79, 0, 0, 65, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 7, 23, 22, 22, 23, 22, 22, 3, 55, 37, 35, 9, 9, 73, 54, 54, 132, 66, 61, 101, 36, 36, 37, 4, 180, 5, 64, 60, 59, 165, 96, 102, 200, 81, 80, 106, 8, 6, 51, 56, 19, 46, 26, 53, 99, 40, 39, 51, 5, 9, 66, 62, 62, 168, 93, 93, 181, 72, 73, 98, 10, 180, 12, 64, 46, 46, 112, 59, 58, 104, 38, 37, 38, 7, 8, 66, 49, 49, 120, 63, 168, 27, 190, 37, 68, 29, 19, 35, 2, 92, 31, 95, 68, 72, 106, 35, 36, 33, 2, 1, 40, 36, 36, 99, 62, 1, 101, 157, 54, 54, 58, 2, 2, 51, 55, 54, 165, 112, 84, 138, 49, 17, 29, 11, 23, 62, 41, 40, 100, 62, 103, 151, 50, 50, 50, 2, 1, 50, 51, 51, 151, 99, 1, 60, 94, 32, 32, 33, 1, 1, 31, 31, 32, 94, 63, 69, 98, 30, 31, 29, 1, 152, 1, 1, 11, 11, 7, 19, 0, 0, 1, 0, 53, 0, 0, 4, 160, 5, 176, 0, 9, 0, 0, 65, 1, 19, 35, 3, 51, 1, 3, 51, 19, 3, 230, 253, 71, 185, 181, 252, 185, 2, 186, 186, 181, 253, 5, 176, 251, 221, 4, 35, 250, 80, 4, 35, 251, 221, 5, 176, 0, 0, 1, 255, 202, 255, 255, 4, 160, 5, 176, 0, 30, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 39, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 33, 3, 51, 4, 160, 253, 2, 138, 6, 14, 12, 13, 37, 29, 15, 36, 22, 20, 49, 28, 36, 17, 55, 87, 130, 48, 47, 65, 22, 22, 28, 11, 110, 1, 150, 226, 181, 5, 176, 252, 249, 39, 109, 59, 60, 116, 46, 23, 39, 13, 13, 15, 1, 150, 1, 63, 54, 53, 140, 76, 76, 153, 67, 2, 111, 250, 232, 0, 0, 1, 0, 1, 255, 233, 5, 43, 5, 176, 0, 26, 0, 0, 65, 39, 3, 35, 1, 7, 6, 6, 7, 6, 6, 35, 38, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 1, 35, 2, 89, 33, 180, 193, 1, 36, 62, 21, 48, 29, 29, 70, 42, 37, 75, 35, 38, 48, 99, 51, 71, 117, 48, 48, 79, 33, 2, 216, 219, 2, 58, 181, 2, 193, 251, 204, 96, 33, 58, 21, 21, 24, 1, 16, 10, 139, 17, 19, 1, 1, 37, 35, 34, 97, 59, 4, 193, 0, 0, 1, 0, 57, 254, 161, 4, 151, 5, 176, 0, 11, 0, 0, 65, 3, 33, 3, 51, 19, 35, 19, 35, 3, 33, 19, 1, 53, 252, 3, 60, 61, 163, 105, 143, 226, 181, 227, 254, 8, 227, 5, 176, 250, 80, 254, 161, 1, 251, 5, 20, 250, 231, 5, 25, 0, 0, 1, 0, 228, 0, 0, 4, 157, 5, 176, 0, 25, 0, 0, 65, 35, 3, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 3, 51, 4, 157, 181, 126, 73, 148, 77, 64, 69, 15, 15, 1, 6, 75, 181, 75, 11, 24, 39, 39, 135, 101, 76, 145, 71, 111, 181, 5, 176, 253, 68, 21, 32, 3, 2, 53, 42, 41, 103, 52, 1, 201, 254, 56, 93, 162, 60, 61, 71, 1, 1, 27, 26, 253, 164, 0, 0, 1, 0, 17, 0, 0, 4, 196, 5, 176, 0, 11, 0, 0, 65, 35, 3, 33, 19, 35, 3, 35, 19, 35, 3, 35, 1, 194, 181, 252, 3, 183, 252, 179, 227, 205, 226, 179, 227, 205, 5, 176, 250, 80, 5, 176, 250, 231, 5, 25, 250, 231, 0, 1, 0, 17, 254, 161, 4, 196, 5, 176, 0, 15, 0, 0, 65, 35, 3, 33, 3, 51, 19, 35, 19, 35, 3, 7, 19, 35, 3, 35, 1, 194, 181, 252, 3, 91, 61, 162, 105, 88, 226, 179, 227, 205, 226, 179, 227, 205, 5, 176, 250, 80, 254, 161, 1, 247, 5, 24, 250, 232, 1, 5, 25, 250, 231, 0, 0, 2, 0, 170, 255, 255, 4, 66, 5, 176, 0, 18, 0, 33, 0, 0, 83, 7, 33, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 3, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 197, 27, 1, 40, 226, 1, 76, 101, 178, 68, 68, 86, 9, 8, 48, 51, 51, 151, 93, 127, 104, 130, 150, 58, 84, 26, 26, 20, 7, 8, 53, 42, 42, 112, 67, 129, 5, 176, 152, 250, 232, 1, 59, 57, 57, 164, 104, 95, 152, 54, 53, 59, 3, 1, 2, 87, 253, 18, 1, 2, 41, 34, 35, 95, 55, 66, 108, 38, 39, 43, 2, 0, 0, 3, 0, 35, 255, 254, 4, 192, 5, 176, 0, 16, 0, 31, 0, 35, 0, 0, 65, 19, 35, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 5, 19, 35, 3, 1, 103, 104, 175, 253, 1, 25, 98, 156, 56, 56, 66, 9, 7, 29, 39, 39, 127, 89, 103, 100, 51, 60, 14, 14, 3, 5, 6, 35, 31, 31, 90, 61, 79, 2, 209, 253, 181, 253, 3, 88, 2, 88, 250, 80, 2, 68, 60, 60, 161, 93, 82, 149, 57, 56, 68, 3, 149, 2, 3, 51, 38, 38, 90, 42, 54, 105, 41, 41, 51, 1, 1, 150, 5, 176, 250, 80, 0, 0, 2, 0, 58, 255, 255, 4, 27, 5, 176, 0, 16, 0, 31, 0, 0, 65, 19, 35, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 5, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 1, 132, 104, 181, 253, 1, 194, 103, 186, 72, 72, 93, 9, 8, 55, 55, 56, 158, 94, 254, 241, 1, 12, 59, 93, 31, 30, 25, 7, 9, 60, 46, 46, 120, 68, 247, 3, 89, 2, 87, 250, 80, 1, 56, 56, 56, 165, 108, 99, 153, 53, 52, 56, 3, 150, 1, 2, 38, 33, 34, 95, 60, 69, 109, 38, 38, 40, 2, 0, 1, 0, 78, 255, 233, 4, 105, 5, 200, 0, 67, 0, 0, 65, 35, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 54, 52, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 33, 7, 33, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 1, 10, 181, 7, 44, 50, 49, 156, 106, 127, 202, 74, 37, 61, 23, 22, 32, 9, 53, 6, 6, 7, 36, 28, 50, 169, 121, 107, 183, 69, 70, 87, 12, 178, 11, 52, 42, 42, 117, 77, 85, 103, 26, 12, 15, 2, 3, 2, 5, 14, 254, 44, 27, 1, 214, 14, 6, 23, 17, 14, 38, 22, 49, 137, 90, 72, 92, 26, 26, 16, 1, 209, 99, 175, 65, 66, 78, 2, 3, 95, 81, 41, 95, 52, 52, 112, 57, 1, 76, 48, 94, 45, 57, 107, 46, 81, 102, 3, 3, 75, 66, 67, 180, 103, 2, 68, 124, 47, 46, 54, 3, 3, 84, 63, 31, 69, 35, 37, 74, 35, 94, 151, 90, 41, 84, 40, 35, 66, 29, 62, 76, 3, 2, 59, 47, 46, 118, 0, 0, 2, 0, 11, 255, 234, 4, 139, 5, 198, 0, 45, 0, 83, 0, 0, 65, 19, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 35, 19, 35, 3, 51, 19, 51, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 3, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 4, 60, 69, 7, 3, 7, 8, 36, 33, 34, 100, 70, 72, 113, 43, 43, 62, 22, 22, 28, 8, 25, 109, 116, 180, 253, 181, 111, 109, 19, 7, 4, 6, 6, 33, 31, 31, 95, 69, 74, 117, 45, 44, 66, 24, 23, 29, 103, 67, 5, 12, 10, 11, 33, 24, 25, 69, 47, 40, 46, 11, 11, 4, 3, 2, 10, 3, 66, 4, 11, 10, 9, 30, 23, 23, 64, 45, 42, 52, 14, 13, 7, 1, 2, 10, 2, 4, 1, 168, 55, 121, 59, 58, 108, 41, 41, 51, 2, 2, 45, 40, 41, 109, 60, 60, 125, 58, 152, 2, 156, 250, 80, 2, 125, 122, 52, 118, 58, 59, 109, 42, 42, 53, 2, 2, 44, 40, 39, 107, 61, 60, 127, 1, 231, 254, 84, 34, 83, 43, 43, 81, 31, 31, 35, 2, 2, 44, 35, 34, 84, 41, 41, 73, 24, 1, 172, 31, 81, 43, 42, 82, 32, 31, 37, 2, 2, 42, 33, 33, 82, 41, 41, 75, 0, 0, 2, 255, 209, 0, 0, 4, 156, 5, 177, 0, 19, 0, 34, 0, 0, 97, 51, 19, 37, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 1, 51, 1, 33, 1, 54, 54, 55, 54, 54, 51, 23, 3, 37, 38, 38, 39, 38, 38, 2, 234, 181, 253, 254, 78, 102, 192, 76, 77, 99, 9, 6, 43, 46, 26, 67, 40, 254, 58, 203, 1, 145, 1, 39, 254, 31, 9, 67, 51, 51, 126, 67, 230, 94, 254, 254, 60, 98, 34, 34, 31, 5, 176, 1, 51, 52, 53, 162, 111, 81, 136, 53, 29, 48, 19, 253, 106, 2, 95, 1, 167, 73, 104, 34, 33, 32, 2, 253, 224, 1, 2, 38, 35, 34, 98, 0, 0, 2, 0, 101, 255, 233, 4, 111, 6, 17, 0, 52, 0, 78, 0, 0, 65, 38, 6, 7, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 15, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 7, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 2, 166, 109, 183, 75, 31, 80, 53, 52, 134, 84, 78, 134, 52, 51, 66, 9, 150, 11, 58, 38, 38, 87, 41, 96, 156, 61, 61, 93, 33, 33, 43, 11, 9, 1, 3, 11, 40, 51, 50, 161, 110, 114, 187, 69, 69, 84, 12, 3, 8, 38, 46, 47, 148, 145, 71, 96, 28, 28, 18, 6, 2, 9, 51, 43, 43, 122, 79, 77, 95, 25, 26, 13, 6, 3, 9, 53, 43, 43, 119, 3, 252, 2, 96, 76, 78, 127, 48, 48, 65, 16, 15, 37, 34, 34, 112, 89, 1, 47, 57, 16, 17, 17, 7, 18, 81, 57, 58, 145, 81, 82, 175, 88, 69, 7, 23, 101, 189, 72, 73, 90, 2, 3, 85, 73, 73, 194, 107, 24, 93, 174, 68, 67, 83, 149, 2, 59, 47, 47, 120, 62, 23, 70, 138, 54, 54, 66, 3, 2, 71, 54, 54, 131, 63, 23, 68, 125, 48, 47, 55, 0, 0, 3, 0, 55, 255, 255, 4, 14, 4, 58, 0, 32, 0, 47, 0, 65, 0, 0, 115, 33, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 19, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 37, 19, 19, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 55, 1, 235, 52, 104, 48, 48, 84, 32, 32, 39, 3, 2, 21, 21, 22, 62, 40, 40, 74, 29, 28, 36, 3, 4, 30, 28, 28, 78, 45, 45, 95, 46, 254, 111, 77, 1, 53, 37, 70, 26, 26, 28, 6, 6, 51, 36, 36, 87, 43, 254, 224, 82, 54, 242, 36, 81, 33, 16, 27, 8, 8, 7, 3, 7, 59, 41, 42, 94, 42, 1, 13, 15, 15, 49, 36, 35, 93, 60, 42, 75, 31, 30, 47, 13, 16, 44, 29, 29, 75, 47, 56, 86, 32, 31, 43, 14, 13, 12, 1, 1, 253, 161, 1, 1, 16, 17, 18, 59, 43, 49, 66, 20, 20, 17, 1, 1, 218, 1, 53, 1, 1, 11, 16, 8, 23, 15, 15, 38, 23, 51, 62, 17, 17, 12, 0, 0, 1, 0, 73, 0, 0, 4, 95, 4, 58, 0, 5, 0, 0, 65, 55, 33, 3, 51, 19, 4, 68, 27, 252, 166, 188, 182, 161, 3, 161, 153, 251, 198, 3, 161, 0, 0, 2, 255, 167, 254, 194, 4, 68, 4, 58, 0, 20, 0, 30, 0, 0, 119, 39, 3, 51, 19, 33, 3, 51, 19, 35, 19, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 1, 55, 33, 3, 5, 54, 54, 55, 54, 54, 66, 91, 64, 161, 56, 2, 219, 56, 164, 99, 135, 161, 253, 91, 85, 7, 17, 13, 13, 38, 27, 28, 73, 1, 141, 49, 1, 66, 132, 254, 81, 44, 60, 22, 22, 30, 149, 2, 254, 43, 1, 62, 254, 194, 1, 213, 3, 163, 254, 106, 34, 102, 58, 58, 116, 47, 47, 62, 2, 12, 235, 253, 8, 3, 56, 128, 68, 68, 140, 0, 1, 255, 163, 0, 0, 4, 193, 4, 58, 0, 21, 0, 0, 65, 19, 51, 3, 1, 35, 1, 35, 19, 35, 3, 39, 3, 35, 19, 1, 51, 1, 51, 3, 51, 19, 2, 206, 129, 204, 188, 1, 98, 218, 254, 247, 54, 83, 181, 82, 58, 104, 199, 161, 254, 119, 227, 1, 37, 54, 87, 181, 85, 1, 214, 254, 42, 2, 41, 2, 17, 254, 63, 1, 193, 254, 63, 1, 1, 192, 254, 3, 253, 195, 1, 215, 254, 41, 1, 215, 0, 1, 0, 79, 255, 236, 4, 58, 4, 78, 0, 88, 0, 0, 65, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 7, 2, 95, 20, 43, 20, 20, 39, 17, 34, 39, 7, 7, 67, 45, 46, 103, 44, 44, 93, 38, 39, 49, 2, 178, 2, 76, 62, 62, 157, 79, 52, 113, 55, 54, 98, 38, 38, 47, 3, 3, 53, 48, 15, 35, 19, 40, 81, 33, 32, 43, 3, 4, 30, 29, 29, 80, 45, 46, 98, 47, 78, 167, 71, 71, 99, 10, 181, 12, 66, 44, 44, 99, 44, 35, 84, 35, 14, 25, 9, 13, 12, 3, 7, 58, 41, 41, 95, 42, 224, 27, 1, 217, 1, 3, 3, 3, 12, 8, 17, 63, 52, 52, 71, 21, 22, 18, 1, 1, 22, 23, 22, 72, 52, 1, 90, 128, 41, 41, 39, 1, 1, 14, 16, 16, 52, 37, 37, 98, 62, 66, 103, 34, 11, 18, 7, 17, 44, 30, 29, 76, 48, 57, 89, 34, 33, 48, 15, 15, 14, 1, 1, 33, 38, 38, 124, 89, 1, 48, 66, 21, 20, 17, 1, 16, 18, 8, 19, 12, 16, 43, 27, 51, 64, 18, 18, 13, 1, 156, 0, 0, 1, 0, 55, 0, 0, 4, 92, 4, 58, 0, 9, 0, 0, 65, 1, 19, 35, 3, 51, 1, 3, 51, 19, 3, 161, 253, 125, 137, 180, 188, 187, 2, 130, 137, 181, 188, 4, 58, 252, 237, 3, 19, 251, 198, 3, 18, 252, 238, 4, 58, 0, 0, 1, 0, 54, 0, 0, 4, 171, 4, 58, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 35, 19, 35, 3, 51, 19, 1, 237, 1, 65, 213, 254, 130, 2, 38, 235, 254, 42, 147, 80, 181, 188, 181, 81, 1, 205, 254, 51, 2, 40, 2, 18, 254, 54, 1, 202, 251, 198, 1, 205, 0, 0, 1, 255, 210, 255, 255, 4, 91, 4, 58, 0, 27, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 35, 35, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 33, 3, 51, 4, 91, 253, 20, 79, 6, 14, 12, 12, 36, 28, 29, 81, 56, 38, 22, 58, 85, 128, 47, 47, 65, 23, 22, 28, 11, 54, 1, 129, 162, 182, 4, 58, 254, 49, 42, 100, 50, 51, 94, 36, 37, 45, 164, 1, 54, 46, 46, 122, 69, 69, 146, 68, 1, 54, 252, 95, 0, 0, 1, 0, 28, 0, 0, 4, 94, 4, 58, 0, 12, 0, 0, 101, 3, 35, 3, 51, 19, 19, 51, 1, 3, 51, 19, 35, 2, 9, 75, 230, 188, 181, 122, 92, 125, 1, 59, 114, 181, 188, 229, 248, 3, 66, 251, 198, 2, 186, 253, 70, 2, 139, 253, 117, 4, 58, 0, 0, 1, 0, 55, 0, 0, 4, 92, 4, 58, 0, 11, 0, 0, 97, 19, 35, 3, 33, 19, 35, 3, 51, 19, 33, 3, 3, 160, 188, 181, 82, 254, 1, 82, 181, 188, 181, 81, 1, 255, 81, 4, 58, 254, 43, 1, 213, 251, 198, 1, 206, 254, 50, 0, 0, 1, 0, 55, 0, 0, 4, 92, 4, 58, 0, 7, 0, 0, 97, 19, 33, 3, 51, 19, 33, 3, 3, 160, 188, 252, 151, 188, 181, 162, 1, 254, 161, 4, 58, 251, 198, 3, 161, 252, 95, 0, 0, 1, 0, 158, 0, 0, 4, 173, 4, 58, 0, 7, 0, 0, 65, 55, 33, 7, 33, 3, 51, 19, 4, 147, 26, 252, 11, 26, 1, 156, 161, 181, 162, 3, 164, 150, 150, 252, 92, 3, 164, 0, 0, 3, 0, 98, 254, 96, 4, 49, 6, 0, 0, 31, 0, 45, 0, 59, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 3, 51, 19, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 19, 35, 3, 6, 6, 7, 6, 6, 1, 19, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 3, 3, 38, 38, 39, 38, 52, 55, 55, 54, 54, 55, 54, 54, 110, 3, 9, 22, 36, 35, 122, 91, 76, 180, 76, 105, 165, 61, 60, 74, 13, 2, 9, 21, 35, 36, 123, 93, 82, 180, 82, 105, 165, 59, 60, 73, 1, 221, 148, 54, 60, 14, 13, 1, 7, 3, 9, 42, 34, 35, 96, 96, 148, 53, 59, 13, 13, 6, 3, 9, 41, 34, 33, 96, 2, 33, 23, 85, 170, 72, 73, 108, 23, 254, 105, 1, 148, 17, 98, 72, 72, 182, 102, 23, 86, 173, 74, 73, 109, 23, 1, 188, 254, 70, 18, 100, 73, 73, 183, 254, 5, 3, 27, 24, 87, 52, 53, 114, 52, 21, 64, 122, 51, 52, 80, 3, 7, 252, 231, 25, 85, 52, 52, 112, 51, 22, 64, 122, 52, 51, 81, 0, 0, 1, 0, 60, 254, 191, 4, 69, 4, 58, 0, 11, 0, 0, 83, 3, 33, 3, 51, 19, 35, 19, 35, 3, 33, 19, 248, 188, 3, 22, 56, 163, 100, 126, 162, 182, 162, 254, 30, 162, 4, 58, 251, 198, 254, 191, 1, 216, 3, 163, 252, 93, 3, 163, 0, 1, 0, 159, 0, 0, 4, 92, 4, 58, 0, 25, 0, 0, 97, 19, 35, 3, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 3, 3, 160, 188, 181, 97, 74, 148, 75, 58, 79, 23, 24, 14, 6, 52, 181, 51, 10, 43, 48, 47, 145, 92, 73, 144, 71, 75, 4, 58, 253, 232, 15, 19, 2, 2, 38, 33, 33, 91, 55, 1, 60, 254, 197, 93, 149, 52, 53, 58, 1, 1, 17, 19, 254, 116, 0, 0, 1, 0, 21, 0, 0, 4, 128, 4, 58, 0, 11, 0, 0, 65, 35, 3, 33, 19, 35, 3, 35, 19, 35, 3, 35, 1, 133, 180, 188, 3, 175, 188, 181, 162, 200, 162, 181, 162, 201, 4, 58, 251, 198, 4, 58, 252, 93, 3, 163, 252, 93, 0, 1, 0, 10, 254, 191, 4, 117, 4, 58, 0, 15, 0, 0, 65, 35, 3, 33, 3, 51, 19, 35, 19, 35, 3, 35, 19, 35, 3, 35, 1, 122, 180, 188, 3, 81, 56, 162, 100, 86, 162, 181, 162, 200, 162, 181, 162, 201, 4, 58, 251, 198, 254, 191, 1, 217, 3, 162, 252, 93, 3, 163, 252, 93, 0, 2, 0, 112, 255, 255, 4, 45, 4, 58, 0, 18, 0, 33, 0, 0, 83, 7, 33, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 3, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 139, 27, 1, 35, 161, 1, 130, 80, 152, 61, 60, 77, 6, 5, 52, 47, 48, 129, 73, 181, 71, 97, 204, 40, 65, 23, 22, 20, 5, 6, 46, 34, 34, 85, 45, 183, 4, 58, 152, 252, 94, 1, 43, 44, 43, 131, 87, 79, 119, 41, 40, 43, 2, 1, 1, 154, 253, 207, 1, 2, 26, 23, 23, 65, 41, 48, 72, 23, 23, 24, 1, 0, 0, 3, 0, 35, 255, 255, 4, 115, 4, 58, 0, 16, 0, 20, 0, 35, 0, 0, 65, 19, 35, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 1, 19, 35, 3, 1, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 1, 71, 71, 174, 189, 1, 32, 79, 140, 53, 53, 66, 5, 5, 40, 40, 41, 116, 71, 2, 23, 188, 181, 188, 254, 49, 106, 37, 52, 15, 14, 9, 4, 5, 29, 22, 28, 77, 48, 85, 2, 159, 1, 155, 251, 198, 1, 47, 45, 45, 130, 81, 73, 117, 42, 42, 47, 2, 253, 98, 4, 58, 251, 198, 2, 9, 1, 2, 31, 25, 25, 63, 34, 38, 65, 24, 29, 33, 1, 1, 0, 2, 0, 56, 255, 255, 3, 247, 4, 58, 0, 16, 0, 31, 0, 0, 65, 19, 35, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 5, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 37, 1, 97, 71, 181, 187, 2, 1, 81, 153, 62, 61, 78, 6, 5, 53, 48, 49, 131, 73, 254, 178, 1, 75, 40, 67, 24, 23, 22, 6, 6, 48, 35, 35, 86, 45, 254, 201, 2, 160, 1, 154, 251, 198, 1, 43, 43, 43, 131, 88, 80, 119, 41, 40, 41, 2, 149, 1, 2, 25, 22, 23, 66, 42, 49, 71, 23, 24, 23, 1, 0, 0, 1, 0, 80, 255, 233, 4, 25, 4, 80, 0, 56, 0, 0, 65, 22, 22, 23, 22, 22, 7, 33, 7, 37, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 2, 107, 69, 99, 30, 30, 24, 4, 254, 102, 27, 1, 166, 20, 64, 46, 46, 124, 79, 52, 83, 29, 29, 29, 3, 170, 4, 54, 51, 51, 143, 85, 119, 198, 75, 74, 92, 14, 5, 8, 21, 30, 18, 53, 34, 50, 133, 84, 80, 160, 66, 67, 91, 9, 171, 11, 57, 41, 40, 96, 3, 183, 2, 54, 44, 45, 116, 63, 152, 1, 69, 128, 48, 48, 56, 3, 1, 38, 33, 32, 87, 50, 1, 86, 142, 51, 52, 59, 2, 3, 84, 74, 74, 200, 113, 43, 83, 154, 66, 41, 72, 29, 42, 49, 1, 2, 51, 47, 48, 136, 84, 1, 50, 79, 28, 28, 28, 0, 2, 0, 5, 255, 234, 4, 94, 4, 81, 0, 43, 0, 81, 0, 0, 65, 19, 35, 3, 51, 19, 55, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 23, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 1, 38, 80, 181, 188, 181, 82, 131, 3, 3, 2, 2, 20, 19, 30, 118, 95, 72, 115, 45, 45, 67, 24, 23, 29, 8, 3, 6, 2, 7, 8, 37, 32, 33, 99, 70, 66, 106, 42, 43, 65, 24, 25, 37, 13, 173, 2, 4, 12, 11, 11, 33, 24, 24, 68, 45, 41, 50, 13, 13, 8, 1, 2, 8, 3, 3, 4, 13, 10, 11, 34, 24, 25, 68, 45, 41, 49, 13, 13, 7, 2, 1, 9, 2, 111, 1, 203, 251, 198, 1, 215, 1, 29, 61, 31, 51, 102, 45, 73, 97, 3, 2, 47, 42, 42, 112, 62, 62, 128, 58, 22, 53, 121, 61, 60, 112, 44, 43, 54, 2, 2, 41, 35, 36, 96, 54, 54, 113, 53, 99, 22, 31, 86, 46, 46, 88, 35, 34, 42, 2, 2, 46, 36, 37, 89, 43, 44, 78, 25, 21, 32, 85, 45, 46, 88, 34, 34, 41, 2, 2, 46, 36, 36, 87, 44, 43, 77, 0, 0, 2, 255, 222, 0, 0, 4, 86, 4, 59, 0, 19, 0, 34, 0, 0, 65, 37, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 1, 51, 1, 33, 3, 51, 1, 54, 54, 55, 54, 54, 55, 5, 3, 37, 38, 38, 39, 38, 38, 4, 86, 254, 7, 79, 155, 62, 63, 82, 6, 4, 33, 37, 19, 47, 28, 254, 160, 207, 1, 67, 1, 63, 74, 181, 253, 185, 7, 50, 36, 36, 88, 44, 1, 47, 62, 254, 166, 37, 62, 21, 22, 19, 4, 58, 1, 40, 41, 42, 128, 88, 62, 113, 44, 22, 36, 14, 254, 59, 1, 165, 254, 91, 2, 230, 49, 71, 24, 23, 23, 1, 1, 254, 153, 1, 2, 24, 21, 21, 61, 0, 0, 1, 0, 56, 254, 71, 4, 24, 6, 0, 0, 61, 0, 0, 65, 55, 33, 55, 35, 7, 35, 7, 51, 3, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 51, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 35, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 2, 189, 27, 254, 255, 33, 181, 31, 183, 27, 184, 210, 181, 137, 28, 67, 38, 37, 83, 46, 59, 77, 22, 22, 12, 6, 115, 4, 15, 6, 24, 20, 21, 60, 41, 26, 51, 24, 30, 30, 59, 32, 81, 127, 46, 45, 55, 10, 90, 4, 38, 9, 24, 36, 36, 124, 92, 54, 97, 43, 44, 77, 33, 54, 4, 185, 151, 176, 176, 151, 251, 71, 3, 19, 34, 58, 22, 21, 23, 1, 2, 41, 35, 36, 93, 53, 253, 84, 89, 36, 71, 28, 29, 36, 8, 8, 147, 9, 10, 1, 1, 53, 47, 47, 129, 76, 2, 31, 227, 82, 151, 58, 58, 70, 2, 1, 27, 24, 24, 68, 40, 1, 33, 0, 0, 1, 0, 121, 255, 233, 4, 44, 4, 81, 0, 59, 0, 0, 101, 38, 38, 39, 38, 38, 39, 38, 38, 55, 33, 55, 33, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 2, 21, 71, 92, 26, 12, 16, 5, 7, 4, 2, 1, 138, 27, 254, 111, 15, 58, 45, 44, 118, 75, 52, 82, 29, 28, 28, 2, 170, 4, 54, 50, 51, 142, 84, 109, 183, 70, 80, 99, 14, 5, 6, 7, 13, 10, 30, 21, 49, 160, 114, 79, 160, 66, 66, 90, 9, 171, 11, 56, 39, 40, 96, 129, 2, 60, 48, 20, 46, 24, 32, 69, 34, 152, 66, 122, 47, 47, 55, 2, 2, 38, 32, 33, 86, 50, 1, 85, 143, 52, 51, 60, 2, 3, 76, 66, 75, 211, 117, 43, 59, 114, 53, 38, 72, 32, 75, 92, 3, 2, 51, 48, 47, 135, 83, 1, 49, 79, 27, 28, 29, 0, 0, 2, 255, 196, 255, 253, 4, 99, 4, 58, 0, 40, 0, 55, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 35, 35, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 35, 3, 69, 253, 220, 78, 5, 10, 9, 10, 29, 23, 24, 68, 47, 27, 19, 49, 78, 115, 42, 41, 56, 19, 18, 23, 9, 53, 187, 161, 1, 0, 78, 139, 53, 53, 66, 5, 4, 39, 40, 40, 115, 71, 55, 18, 68, 40, 53, 15, 12, 8, 4, 5, 33, 26, 27, 72, 43, 57, 4, 58, 254, 49, 32, 94, 51, 52, 102, 41, 41, 52, 154, 3, 58, 50, 49, 130, 70, 69, 138, 58, 1, 54, 252, 95, 1, 47, 45, 44, 129, 81, 72, 117, 42, 42, 48, 2, 1, 150, 2, 3, 31, 25, 21, 57, 33, 42, 71, 27, 27, 32, 1, 0, 2, 0, 21, 255, 255, 4, 70, 4, 58, 0, 24, 0, 39, 0, 0, 65, 19, 35, 3, 51, 19, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 35, 3, 23, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 1, 63, 71, 181, 188, 181, 91, 240, 90, 1, 16, 78, 132, 50, 49, 61, 5, 4, 35, 36, 37, 109, 70, 68, 72, 180, 72, 154, 91, 35, 44, 12, 12, 6, 4, 5, 30, 24, 24, 65, 42, 70, 2, 161, 1, 153, 251, 198, 2, 10, 253, 246, 1, 49, 46, 45, 128, 78, 69, 116, 43, 42, 49, 3, 2, 1, 157, 254, 103, 155, 1, 2, 31, 24, 24, 59, 30, 39, 71, 27, 27, 34, 2, 2, 0, 1, 0, 63, 0, 0, 4, 31, 6, 0, 0, 39, 0, 0, 65, 55, 33, 55, 35, 7, 35, 7, 51, 3, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 2, 240, 27, 254, 212, 32, 181, 30, 140, 27, 141, 211, 181, 137, 28, 67, 38, 37, 83, 46, 59, 77, 22, 22, 12, 6, 115, 181, 114, 9, 24, 36, 36, 124, 92, 54, 97, 43, 44, 77, 33, 55, 4, 190, 151, 171, 171, 151, 251, 66, 3, 19, 34, 58, 22, 21, 23, 1, 2, 41, 35, 36, 93, 53, 253, 84, 2, 169, 82, 151, 58, 58, 70, 2, 1, 27, 24, 24, 68, 40, 1, 38, 0, 1, 0, 56, 254, 156, 4, 92, 4, 58, 0, 11, 0, 0, 65, 35, 3, 33, 3, 51, 19, 33, 19, 35, 3, 33, 1, 168, 181, 187, 1, 92, 62, 181, 62, 1, 87, 188, 181, 162, 254, 1, 4, 58, 251, 198, 254, 156, 1, 100, 4, 58, 252, 93, 0, 1, 0, 56, 255, 234, 4, 241, 5, 176, 0, 74, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 52, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 4, 241, 180, 192, 2, 6, 5, 4, 11, 7, 16, 48, 36, 37, 42, 9, 5, 5, 1, 2, 1, 2, 193, 187, 193, 2, 8, 5, 5, 14, 9, 18, 54, 38, 33, 35, 6, 4, 2, 1, 1, 2, 190, 179, 189, 8, 3, 6, 6, 20, 14, 29, 99, 71, 40, 69, 29, 29, 49, 21, 7, 22, 15, 28, 79, 49, 76, 116, 41, 26, 39, 13, 7, 11, 3, 5, 176, 251, 143, 15, 32, 17, 15, 30, 14, 29, 38, 39, 29, 13, 30, 15, 16, 32, 14, 4, 115, 251, 143, 16, 33, 17, 16, 30, 14, 29, 36, 2, 1, 42, 29, 14, 30, 15, 15, 29, 12, 4, 115, 251, 168, 46, 79, 31, 28, 51, 22, 48, 58, 1, 1, 21, 20, 19, 55, 32, 24, 41, 16, 31, 33, 1, 2, 54, 48, 30, 73, 40, 23, 49, 25, 0, 1, 0, 43, 255, 234, 4, 173, 4, 59, 0, 74, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 4, 173, 181, 128, 4, 18, 15, 8, 20, 12, 12, 31, 18, 17, 28, 10, 12, 15, 5, 10, 3, 3, 126, 186, 129, 5, 21, 18, 8, 21, 12, 15, 34, 20, 20, 28, 9, 7, 9, 3, 7, 1, 2, 127, 180, 130, 4, 6, 11, 8, 31, 35, 27, 82, 51, 40, 69, 30, 29, 49, 21, 11, 37, 25, 26, 66, 37, 43, 74, 32, 24, 43, 18, 41, 50, 9, 4, 59, 253, 0, 28, 65, 28, 14, 25, 8, 9, 10, 1, 9, 9, 8, 25, 15, 28, 65, 27, 3, 0, 253, 0, 31, 67, 27, 13, 22, 8, 9, 10, 1, 1, 15, 12, 9, 22, 12, 28, 63, 24, 3, 0, 252, 255, 41, 79, 36, 26, 61, 34, 27, 30, 1, 1, 21, 20, 19, 54, 33, 34, 53, 19, 19, 20, 1, 1, 16, 16, 13, 34, 20, 46, 125, 69, 0, 2, 0, 109, 255, 255, 3, 243, 6, 24, 0, 24, 0, 39, 0, 0, 65, 55, 33, 19, 35, 3, 35, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 3, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 37, 3, 20, 27, 254, 199, 58, 180, 58, 186, 27, 187, 187, 1, 203, 80, 153, 61, 60, 78, 6, 5, 52, 48, 48, 130, 73, 254, 70, 96, 1, 21, 40, 66, 23, 23, 21, 6, 6, 47, 34, 35, 85, 45, 255, 0, 4, 52, 152, 1, 76, 254, 180, 152, 251, 204, 1, 43, 44, 43, 131, 87, 79, 119, 41, 40, 43, 2, 1, 1, 148, 253, 213, 1, 2, 25, 23, 23, 65, 42, 48, 72, 23, 24, 23, 1, 2, 0, 1, 0, 17, 255, 233, 4, 193, 5, 199, 0, 84, 0, 0, 65, 19, 35, 3, 51, 19, 51, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 55, 33, 55, 33, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 23, 52, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 1, 84, 109, 180, 252, 179, 119, 144, 24, 7, 3, 8, 8, 37, 34, 33, 100, 70, 88, 131, 47, 46, 57, 14, 161, 5, 12, 7, 7, 18, 11, 24, 72, 54, 41, 50, 13, 13, 8, 1, 1, 9, 3, 24, 1, 17, 27, 254, 237, 15, 5, 14, 12, 12, 34, 26, 25, 69, 46, 28, 40, 15, 11, 17, 5, 12, 4, 1, 163, 9, 12, 12, 40, 31, 32, 87, 57, 74, 117, 45, 46, 67, 24, 25, 30, 9, 15, 3, 64, 2, 112, 250, 80, 2, 169, 155, 54, 121, 60, 60, 110, 43, 43, 53, 2, 3, 72, 60, 59, 150, 75, 1, 21, 47, 23, 22, 43, 19, 40, 50, 3, 2, 46, 36, 35, 88, 43, 43, 77, 25, 156, 151, 101, 32, 85, 45, 44, 85, 33, 33, 38, 2, 1, 19, 16, 13, 33, 18, 41, 91, 37, 1, 48, 99, 47, 46, 81, 31, 30, 37, 2, 2, 46, 41, 41, 110, 61, 61, 129, 59, 99, 0, 1, 0, 46, 255, 233, 4, 132, 4, 80, 0, 75, 0, 0, 65, 55, 33, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 35, 19, 35, 3, 51, 19, 55, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 38, 54, 55, 55, 3, 147, 27, 254, 214, 5, 5, 15, 11, 12, 34, 24, 24, 61, 40, 38, 44, 11, 11, 4, 1, 171, 3, 27, 32, 33, 103, 72, 68, 108, 43, 44, 66, 24, 22, 32, 12, 6, 131, 82, 181, 188, 181, 80, 145, 4, 4, 3, 9, 10, 42, 34, 34, 95, 63, 68, 117, 45, 45, 56, 6, 169, 6, 25, 19, 19, 53, 36, 37, 47, 13, 14, 12, 1, 2, 2, 4, 1, 208, 151, 23, 25, 61, 31, 38, 72, 28, 28, 32, 2, 2, 43, 30, 31, 70, 28, 1, 64, 126, 50, 50, 63, 3, 2, 40, 35, 36, 98, 54, 49, 103, 49, 25, 1, 211, 251, 198, 1, 208, 1, 31, 45, 94, 45, 54, 97, 37, 37, 45, 1, 2, 54, 45, 45, 119, 64, 1, 30, 62, 25, 26, 32, 38, 30, 30, 74, 37, 25, 46, 20, 36, 0, 0, 2, 255, 185, 0, 0, 4, 35, 5, 176, 0, 11, 0, 16, 0, 0, 65, 19, 51, 3, 35, 1, 51, 19, 51, 3, 51, 19, 39, 19, 55, 23, 19, 3, 51, 63, 177, 230, 156, 253, 24, 192, 220, 139, 77, 180, 77, 240, 222, 69, 20, 64, 1, 184, 254, 72, 5, 176, 250, 80, 1, 184, 254, 72, 1, 184, 161, 1, 191, 138, 138, 254, 65, 0, 0, 2, 255, 231, 0, 0, 3, 243, 4, 58, 0, 11, 0, 16, 0, 0, 65, 19, 51, 3, 35, 1, 51, 19, 51, 3, 51, 19, 39, 19, 55, 23, 19, 3, 0, 66, 177, 254, 155, 253, 141, 193, 167, 126, 53, 181, 52, 221, 188, 42, 7, 77, 1, 41, 254, 215, 4, 58, 251, 198, 1, 41, 254, 215, 1, 41, 152, 1, 79, 87, 69, 254, 159, 0, 0, 2, 0, 5, 0, 0, 4, 45, 5, 176, 0, 19, 0, 24, 0, 0, 65, 19, 51, 3, 35, 1, 35, 19, 35, 3, 51, 19, 51, 3, 51, 19, 51, 3, 51, 19, 39, 19, 55, 23, 19, 3, 115, 13, 173, 74, 156, 254, 166, 198, 144, 181, 253, 181, 81, 159, 195, 190, 184, 66, 86, 145, 85, 150, 147, 53, 3, 8, 1, 213, 254, 43, 5, 176, 252, 197, 3, 59, 250, 80, 1, 212, 254, 44, 1, 213, 254, 43, 1, 213, 160, 1, 120, 136, 136, 254, 136, 0, 0, 2, 0, 4, 0, 0, 4, 45, 4, 58, 0, 19, 0, 24, 0, 0, 65, 19, 51, 3, 35, 1, 35, 19, 35, 3, 51, 19, 51, 3, 51, 19, 51, 3, 51, 19, 39, 55, 55, 23, 23, 3, 95, 34, 172, 140, 156, 254, 196, 194, 110, 181, 188, 181, 51, 142, 148, 192, 142, 72, 52, 153, 56, 153, 122, 45, 10, 27, 1, 37, 254, 219, 4, 58, 253, 140, 2, 116, 251, 198, 1, 37, 254, 219, 1, 37, 254, 219, 1, 38, 160, 253, 92, 92, 253, 0, 0, 2, 255, 235, 0, 0, 4, 202, 5, 176, 0, 39, 0, 44, 0, 0, 65, 1, 33, 19, 35, 34, 6, 7, 6, 6, 7, 3, 51, 19, 54, 54, 55, 54, 54, 23, 23, 3, 51, 19, 23, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 35, 19, 3, 7, 39, 3, 3, 35, 1, 167, 252, 62, 205, 10, 87, 138, 50, 56, 68, 12, 69, 181, 71, 7, 31, 26, 26, 77, 53, 78, 119, 181, 115, 81, 47, 54, 12, 12, 2, 5, 71, 181, 70, 8, 25, 35, 34, 120, 75, 112, 250, 30, 14, 122, 3, 23, 2, 153, 253, 107, 44, 41, 47, 143, 94, 254, 86, 1, 171, 49, 81, 29, 28, 32, 1, 1, 253, 124, 2, 131, 2, 1, 38, 29, 29, 75, 41, 254, 84, 1, 171, 79, 131, 48, 46, 60, 2, 1, 254, 89, 50, 50, 1, 167, 0, 0, 2, 255, 254, 0, 0, 4, 121, 4, 58, 0, 39, 0, 43, 0, 0, 99, 51, 55, 54, 54, 55, 54, 54, 23, 23, 3, 51, 19, 23, 22, 22, 23, 22, 6, 7, 7, 51, 55, 54, 38, 39, 38, 38, 39, 39, 1, 33, 19, 7, 6, 6, 7, 6, 6, 7, 1, 3, 39, 3, 2, 180, 35, 7, 26, 24, 24, 74, 54, 62, 85, 181, 82, 59, 48, 48, 10, 9, 4, 4, 32, 181, 33, 7, 13, 26, 26, 93, 72, 9, 1, 111, 252, 107, 183, 9, 87, 127, 45, 46, 54, 12, 3, 24, 230, 7, 106, 219, 48, 86, 33, 32, 39, 2, 2, 254, 59, 1, 197, 2, 2, 46, 33, 33, 79, 38, 220, 219, 68, 129, 52, 50, 71, 8, 1, 1, 228, 254, 35, 1, 7, 56, 48, 50, 139, 86, 2, 200, 254, 185, 1, 1, 70, 0, 0, 2, 255, 229, 0, 0, 4, 241, 5, 176, 0, 48, 0, 51, 0, 0, 65, 39, 1, 33, 19, 33, 19, 35, 3, 51, 19, 55, 6, 6, 7, 6, 6, 7, 3, 51, 19, 54, 54, 55, 54, 54, 51, 23, 3, 51, 19, 23, 22, 22, 23, 22, 22, 21, 22, 6, 7, 3, 51, 19, 54, 38, 39, 38, 38, 19, 3, 3, 3, 173, 27, 1, 95, 253, 44, 113, 254, 135, 116, 167, 253, 167, 111, 154, 3, 7, 3, 12, 17, 6, 86, 150, 84, 5, 19, 17, 16, 48, 33, 45, 116, 150, 114, 41, 19, 28, 9, 10, 13, 2, 2, 2, 83, 150, 82, 6, 13, 22, 19, 66, 5, 196, 53, 3, 17, 4, 2, 155, 253, 104, 2, 152, 250, 80, 2, 128, 2, 7, 14, 6, 28, 57, 31, 254, 13, 1, 244, 29, 52, 20, 19, 22, 2, 253, 128, 2, 128, 1, 1, 10, 9, 10, 30, 16, 15, 31, 16, 254, 11, 1, 244, 54, 100, 39, 34, 49, 2, 16, 254, 103, 1, 153, 0, 2, 255, 230, 0, 0, 4, 177, 4, 58, 0, 41, 0, 44, 0, 0, 83, 19, 35, 3, 51, 19, 55, 6, 6, 7, 3, 51, 19, 54, 54, 55, 54, 54, 23, 51, 3, 51, 19, 23, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 1, 33, 19, 1, 3, 3, 244, 85, 167, 188, 167, 77, 155, 19, 23, 8, 51, 150, 50, 5, 20, 17, 17, 48, 33, 43, 83, 151, 81, 38, 30, 34, 8, 7, 1, 3, 48, 149, 48, 5, 9, 18, 19, 69, 55, 1, 42, 253, 54, 120, 1, 67, 175, 64, 2, 83, 1, 231, 251, 198, 1, 187, 2, 35, 70, 38, 254, 210, 1, 47, 29, 52, 20, 20, 22, 1, 254, 67, 1, 187, 2, 2, 23, 18, 19, 47, 27, 254, 207, 1, 47, 49, 95, 39, 39, 54, 9, 1, 238, 254, 25, 1, 88, 254, 195, 1, 61, 0, 2, 0, 68, 254, 71, 4, 71, 7, 117, 0, 86, 0, 95, 0, 0, 65, 39, 7, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 23, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 7, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 19, 39, 39, 7, 23, 51, 37, 55, 7, 2, 42, 128, 27, 149, 45, 80, 32, 27, 44, 13, 17, 12, 6, 8, 61, 46, 46, 116, 64, 45, 65, 126, 49, 50, 63, 3, 2, 32, 30, 29, 79, 45, 80, 27, 49, 18, 18, 17, 5, 4, 34, 25, 24, 59, 30, 53, 67, 127, 56, 28, 53, 24, 71, 91, 8, 4, 26, 31, 25, 74, 48, 54, 102, 41, 40, 53, 5, 7, 62, 57, 58, 154, 84, 254, 227, 27, 1, 53, 52, 89, 32, 32, 31, 7, 8, 65, 48, 49, 119, 130, 118, 149, 2, 210, 112, 1, 25, 1, 161, 3, 53, 2, 151, 1, 1, 17, 16, 13, 39, 25, 28, 75, 47, 66, 103, 36, 36, 38, 1, 26, 31, 31, 101, 74, 53, 93, 39, 39, 63, 23, 123, 13, 34, 22, 21, 54, 33, 33, 46, 15, 14, 13, 1, 1, 25, 25, 12, 31, 19, 55, 162, 105, 63, 110, 44, 37, 58, 19, 22, 60, 40, 39, 102, 63, 93, 141, 49, 48, 51, 2, 1, 152, 1, 2, 29, 28, 29, 84, 56, 69, 96, 30, 31, 28, 3, 168, 151, 1, 23, 244, 247, 20, 2, 0, 2, 0, 88, 254, 72, 4, 6, 6, 31, 0, 92, 0, 101, 0, 0, 65, 39, 7, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 23, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 7, 5, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 19, 39, 39, 7, 23, 51, 37, 55, 7, 2, 20, 127, 26, 149, 25, 58, 29, 28, 51, 19, 18, 19, 5, 8, 58, 40, 41, 94, 43, 40, 65, 125, 50, 50, 63, 3, 2, 32, 30, 29, 79, 44, 83, 27, 50, 18, 18, 18, 5, 4, 34, 25, 24, 59, 30, 48, 52, 108, 51, 50, 91, 35, 34, 42, 3, 2, 23, 22, 23, 63, 38, 40, 80, 32, 32, 43, 3, 2, 14, 14, 16, 48, 29, 56, 140, 66, 254, 232, 27, 1, 47, 33, 76, 31, 14, 25, 8, 10, 9, 3, 7, 62, 43, 44, 99, 120, 118, 149, 2, 210, 112, 1, 25, 1, 161, 2, 104, 1, 151, 1, 1, 4, 6, 7, 21, 17, 18, 50, 34, 50, 66, 20, 21, 18, 1, 27, 31, 31, 101, 74, 53, 93, 39, 39, 63, 22, 120, 14, 34, 22, 21, 54, 34, 34, 46, 14, 14, 13, 1, 1, 16, 17, 16, 53, 37, 37, 97, 60, 42, 71, 29, 28, 42, 15, 16, 44, 29, 29, 75, 48, 38, 66, 27, 30, 48, 19, 36, 34, 2, 1, 153, 1, 1, 13, 16, 7, 20, 12, 15, 37, 23, 53, 65, 18, 19, 13, 3, 31, 151, 1, 23, 244, 247, 20, 2, 0, 3, 0, 95, 255, 234, 4, 102, 5, 198, 0, 37, 0, 58, 0, 79, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 1, 22, 22, 23, 22, 6, 7, 7, 33, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 4, 66, 26, 10, 3, 14, 15, 59, 47, 47, 131, 87, 90, 151, 61, 62, 97, 35, 36, 47, 13, 26, 10, 3, 15, 15, 60, 47, 47, 131, 86, 90, 151, 62, 61, 96, 36, 35, 47, 166, 1, 9, 30, 22, 23, 62, 41, 41, 106, 65, 62, 85, 28, 28, 28, 5, 5, 5, 7, 1, 2, 91, 27, 28, 5, 4, 7, 6, 2, 253, 141, 2, 9, 30, 23, 23, 63, 42, 41, 105, 65, 62, 85, 2, 133, 165, 71, 153, 74, 73, 132, 50, 50, 61, 2, 2, 54, 48, 49, 132, 74, 75, 159, 77, 166, 71, 152, 73, 73, 132, 50, 50, 61, 2, 2, 54, 48, 48, 132, 75, 74, 159, 81, 5, 53, 116, 56, 57, 102, 38, 39, 43, 2, 2, 51, 41, 40, 104, 55, 55, 108, 45, 6, 2, 59, 40, 103, 54, 55, 108, 46, 13, 11, 52, 116, 57, 56, 101, 39, 38, 43, 2, 2, 50, 0, 3, 0, 68, 255, 233, 4, 23, 4, 80, 0, 28, 0, 41, 0, 54, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 1, 22, 22, 23, 22, 22, 7, 33, 54, 54, 55, 54, 54, 3, 38, 38, 39, 38, 38, 55, 33, 6, 6, 7, 6, 6, 82, 3, 11, 38, 49, 49, 161, 113, 118, 193, 71, 71, 89, 14, 2, 11, 37, 49, 49, 161, 114, 80, 139, 58, 59, 95, 35, 35, 45, 2, 26, 68, 90, 27, 26, 20, 1, 253, 186, 16, 59, 44, 44, 116, 70, 70, 91, 26, 27, 18, 2, 2, 73, 16, 59, 44, 44, 118, 2, 32, 22, 102, 192, 76, 76, 93, 3, 3, 90, 77, 76, 202, 109, 23, 102, 195, 77, 76, 95, 3, 2, 41, 37, 38, 105, 62, 63, 141, 1, 78, 2, 61, 47, 47, 117, 58, 64, 121, 47, 47, 55, 252, 200, 2, 63, 48, 48, 119, 59, 65, 124, 48, 48, 56, 0, 0, 1, 0, 177, 0, 0, 5, 79, 5, 197, 0, 22, 0, 0, 65, 3, 35, 19, 51, 1, 54, 54, 55, 54, 54, 51, 23, 55, 39, 34, 6, 7, 6, 6, 7, 1, 7, 2, 13, 151, 197, 238, 166, 2, 61, 13, 32, 21, 21, 52, 35, 10, 21, 51, 69, 103, 39, 39, 58, 25, 254, 129, 58, 1, 110, 4, 66, 250, 80, 4, 136, 28, 53, 21, 20, 24, 1, 171, 1, 50, 40, 41, 106, 57, 252, 222, 134, 0, 0, 1, 0, 166, 0, 0, 4, 143, 4, 80, 0, 26, 0, 0, 65, 3, 35, 19, 51, 1, 54, 54, 55, 54, 54, 51, 54, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 7, 1, 7, 1, 216, 128, 178, 210, 138, 1, 196, 9, 25, 16, 15, 37, 21, 11, 20, 11, 36, 28, 52, 31, 55, 86, 34, 34, 51, 19, 254, 255, 43, 1, 50, 3, 8, 251, 198, 3, 76, 17, 34, 14, 13, 18, 1, 6, 4, 146, 14, 13, 42, 34, 35, 87, 45, 253, 229, 104, 0, 3, 0, 38, 254, 77, 4, 237, 5, 198, 0, 37, 0, 64, 0, 102, 0, 0, 65, 19, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 19, 35, 3, 7, 6, 6, 7, 6, 6, 7, 6, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 1, 35, 3, 1, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 2, 102, 78, 5, 6, 4, 5, 26, 26, 27, 84, 61, 62, 95, 36, 36, 50, 17, 18, 21, 7, 78, 5, 7, 3, 2, 22, 24, 24, 80, 59, 64, 100, 38, 37, 55, 19, 18, 24, 1, 39, 19, 157, 33, 43, 10, 24, 17, 18, 46, 33, 17, 35, 17, 16, 24, 49, 25, 55, 84, 32, 31, 44, 15, 1, 191, 165, 207, 254, 140, 88, 3, 7, 6, 7, 22, 16, 17, 48, 33, 28, 31, 7, 8, 2, 3, 2, 7, 2, 88, 3, 7, 7, 6, 21, 17, 16, 47, 32, 28, 33, 8, 7, 3, 2, 3, 7, 1, 232, 1, 224, 43, 108, 56, 56, 106, 42, 42, 53, 2, 2, 48, 41, 41, 107, 57, 57, 113, 46, 254, 31, 41, 105, 56, 56, 107, 43, 43, 54, 2, 3, 47, 40, 40, 106, 57, 57, 115, 175, 1, 212, 251, 209, 106, 25, 63, 28, 29, 40, 1, 1, 7, 2, 146, 5, 11, 49, 39, 39, 94, 45, 4, 227, 253, 159, 2, 24, 253, 208, 21, 64, 35, 35, 71, 28, 28, 34, 2, 1, 40, 30, 29, 72, 35, 34, 58, 15, 2, 47, 21, 63, 35, 35, 70, 28, 28, 33, 2, 1, 38, 29, 30, 71, 34, 34, 57, 0, 0, 3, 0, 30, 254, 76, 4, 238, 4, 81, 0, 37, 0, 75, 0, 102, 0, 0, 83, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 20, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 54, 54, 5, 55, 19, 35, 3, 7, 6, 6, 7, 6, 6, 7, 6, 38, 39, 7, 22, 22, 51, 22, 54, 55, 54, 54, 55, 1, 35, 45, 3, 6, 6, 4, 3, 27, 28, 27, 90, 66, 69, 108, 41, 40, 58, 20, 19, 24, 7, 3, 5, 7, 3, 4, 27, 28, 28, 91, 67, 70, 107, 40, 40, 57, 19, 20, 23, 171, 2, 3, 8, 7, 7, 24, 20, 20, 57, 40, 35, 39, 9, 8, 4, 4, 11, 2, 2, 3, 7, 7, 8, 24, 20, 20, 57, 41, 35, 39, 8, 9, 1, 4, 4, 11, 2, 152, 17, 20, 157, 33, 43, 10, 24, 17, 18, 46, 33, 17, 35, 17, 16, 24, 49, 25, 55, 84, 32, 31, 44, 15, 1, 191, 165, 2, 35, 23, 47, 116, 60, 60, 114, 45, 45, 56, 2, 2, 50, 44, 43, 115, 62, 62, 124, 53, 24, 47, 118, 60, 60, 115, 45, 45, 57, 2, 2, 51, 44, 44, 116, 62, 63, 125, 75, 23, 26, 81, 46, 45, 91, 37, 36, 44, 2, 2, 49, 37, 38, 92, 44, 44, 73, 20, 23, 26, 81, 45, 45, 91, 36, 36, 44, 2, 1, 50, 38, 37, 91, 44, 43, 73, 46, 157, 1, 210, 251, 209, 106, 25, 63, 28, 29, 40, 1, 1, 7, 2, 146, 5, 11, 1, 49, 39, 39, 95, 45, 4, 227, 0, 0, 4, 0, 102, 255, 115, 4, 109, 6, 53, 0, 3, 0, 7, 0, 45, 0, 83, 0, 0, 65, 19, 35, 3, 3, 19, 35, 3, 1, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 3, 22, 67, 180, 68, 52, 69, 181, 69, 2, 209, 26, 10, 3, 14, 15, 59, 47, 47, 131, 87, 90, 151, 61, 62, 97, 35, 36, 47, 13, 26, 10, 3, 15, 15, 60, 47, 47, 131, 86, 90, 151, 62, 61, 96, 36, 35, 47, 140, 27, 9, 30, 22, 23, 62, 41, 41, 106, 65, 62, 85, 28, 28, 28, 5, 5, 6, 6, 28, 9, 30, 23, 23, 63, 42, 41, 105, 65, 62, 85, 28, 27, 28, 5, 4, 7, 4, 179, 1, 130, 254, 126, 250, 192, 1, 139, 254, 117, 3, 18, 165, 71, 153, 74, 73, 132, 50, 50, 61, 2, 2, 54, 48, 49, 132, 74, 75, 159, 77, 166, 71, 152, 73, 73, 132, 50, 50, 61, 2, 2, 54, 48, 48, 132, 75, 74, 159, 246, 170, 53, 116, 56, 57, 102, 38, 39, 43, 2, 2, 51, 41, 40, 104, 55, 55, 108, 45, 169, 52, 116, 57, 56, 101, 39, 38, 43, 2, 2, 50, 40, 40, 103, 54, 55, 108, 0, 0, 4, 0, 96, 255, 97, 4, 51, 4, 203, 0, 3, 0, 7, 0, 33, 0, 62, 0, 0, 65, 19, 35, 3, 19, 19, 35, 3, 1, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 2, 217, 68, 182, 68, 9, 71, 182, 71, 254, 248, 3, 11, 38, 49, 49, 161, 113, 118, 193, 71, 71, 89, 14, 2, 11, 37, 49, 49, 161, 114, 113, 182, 69, 78, 99, 164, 3, 10, 54, 45, 45, 128, 84, 53, 79, 27, 23, 31, 8, 9, 1, 5, 2, 11, 54, 45, 46, 128, 83, 80, 97, 24, 19, 13, 3, 70, 1, 133, 254, 123, 252, 27, 1, 151, 254, 105, 2, 191, 22, 102, 192, 76, 76, 93, 3, 3, 90, 77, 76, 202, 109, 23, 102, 195, 77, 76, 95, 3, 3, 79, 70, 80, 216, 138, 22, 72, 147, 59, 59, 73, 3, 2, 39, 31, 27, 72, 39, 46, 97, 45, 22, 72, 145, 58, 58, 72, 3, 3, 80, 59, 47, 143, 0, 3, 0, 30, 255, 233, 4, 177, 7, 84, 0, 106, 0, 142, 0, 155, 0, 0, 65, 35, 3, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 23, 22, 6, 7, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 1, 22, 22, 23, 22, 22, 51, 23, 55, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 23, 55, 54, 54, 55, 54, 54, 51, 50, 22, 3, 23, 54, 54, 55, 54, 54, 55, 55, 39, 7, 6, 6, 2, 216, 182, 79, 4, 2, 7, 4, 5, 15, 10, 19, 54, 38, 38, 40, 9, 4, 4, 1, 1, 2, 2, 117, 7, 30, 25, 25, 73, 51, 17, 91, 142, 51, 51, 63, 12, 118, 3, 1, 5, 5, 22, 17, 31, 106, 75, 61, 96, 38, 11, 20, 9, 5, 14, 8, 28, 88, 54, 80, 124, 44, 23, 37, 14, 12, 16, 5, 118, 4, 1, 5, 6, 24, 19, 35, 116, 82, 10, 46, 50, 12, 5, 5, 1, 1, 3, 2, 118, 3, 8, 6, 5, 14, 8, 19, 56, 40, 36, 41, 9, 5, 5, 1, 2, 1, 2, 4, 1, 9, 25, 50, 26, 21, 45, 24, 39, 11, 44, 25, 46, 22, 26, 50, 25, 46, 93, 52, 67, 102, 31, 19, 23, 4, 3, 124, 3, 4, 14, 10, 15, 49, 33, 49, 91, 240, 74, 26, 48, 20, 23, 32, 6, 14, 136, 17, 10, 50, 3, 58, 254, 29, 26, 14, 30, 15, 17, 35, 15, 28, 36, 2, 1, 45, 32, 13, 29, 14, 19, 37, 16, 2, 214, 45, 86, 34, 34, 43, 3, 151, 2, 59, 52, 52, 144, 87, 253, 43, 32, 63, 30, 33, 61, 26, 50, 62, 1, 1, 50, 41, 12, 26, 14, 16, 28, 13, 40, 42, 2, 2, 56, 50, 26, 62, 34, 30, 67, 34, 2, 213, 34, 67, 31, 38, 68, 30, 54, 67, 5, 153, 5, 48, 34, 15, 32, 17, 21, 45, 22, 253, 40, 17, 38, 19, 16, 32, 14, 31, 41, 1, 1, 39, 29, 14, 30, 15, 16, 31, 14, 26, 5, 63, 13, 26, 9, 8, 10, 1, 129, 10, 8, 9, 24, 13, 23, 39, 1, 1, 45, 43, 26, 66, 40, 36, 1, 18, 20, 34, 13, 21, 24, 40, 254, 185, 60, 15, 38, 22, 26, 63, 36, 101, 1, 96, 44, 70, 0, 3, 0, 55, 255, 233, 4, 112, 5, 225, 0, 92, 0, 128, 0, 141, 0, 0, 65, 7, 22, 22, 23, 22, 6, 7, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 52, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 54, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 7, 3, 6, 20, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 54, 38, 39, 38, 38, 19, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 23, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 23, 5, 23, 54, 54, 55, 54, 54, 55, 55, 39, 7, 6, 6, 3, 98, 14, 43, 45, 9, 9, 4, 4, 58, 4, 16, 16, 16, 51, 38, 36, 41, 10, 3, 5, 1, 3, 2, 41, 181, 43, 3, 9, 6, 5, 12, 8, 19, 54, 38, 35, 34, 6, 3, 3, 3, 1, 57, 7, 26, 23, 22, 67, 48, 17, 89, 137, 48, 48, 59, 11, 57, 3, 3, 4, 20, 17, 29, 100, 74, 39, 68, 29, 29, 49, 21, 9, 29, 19, 27, 72, 42, 78, 119, 41, 41, 49, 9, 57, 7, 20, 31, 32, 108, 163, 44, 22, 41, 19, 29, 56, 28, 47, 94, 53, 64, 99, 32, 22, 26, 4, 3, 124, 3, 4, 16, 12, 16, 48, 31, 49, 91, 46, 26, 55, 28, 20, 42, 22, 39, 253, 249, 77, 27, 49, 20, 21, 29, 6, 14, 136, 18, 10, 50, 4, 77, 153, 5, 50, 34, 35, 78, 34, 254, 131, 29, 71, 31, 31, 42, 1, 1, 37, 28, 9, 20, 10, 21, 41, 18, 1, 14, 254, 242, 17, 38, 18, 13, 26, 12, 28, 35, 2, 2, 46, 32, 14, 30, 14, 18, 34, 13, 1, 123, 42, 84, 34, 34, 45, 3, 151, 3, 59, 52, 52, 142, 85, 254, 134, 28, 56, 26, 35, 66, 29, 50, 63, 1, 1, 20, 19, 18, 52, 32, 28, 45, 17, 23, 25, 1, 2, 57, 49, 49, 130, 70, 1, 122, 72, 136, 54, 54, 69, 1, 26, 8, 6, 9, 27, 14, 23, 39, 1, 1, 40, 40, 26, 70, 43, 37, 1, 18, 21, 37, 14, 19, 21, 40, 23, 14, 27, 10, 6, 9, 1, 238, 61, 16, 41, 24, 25, 61, 34, 101, 1, 96, 44, 70, 0, 2, 0, 62, 255, 234, 4, 247, 7, 4, 0, 7, 0, 82, 0, 0, 65, 7, 33, 7, 51, 55, 33, 55, 1, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 1, 226, 20, 1, 5, 23, 165, 22, 1, 20, 18, 254, 78, 76, 116, 41, 22, 34, 13, 11, 15, 4, 192, 180, 192, 2, 6, 5, 4, 11, 7, 16, 48, 36, 37, 42, 9, 5, 5, 1, 2, 1, 2, 193, 187, 193, 2, 7, 5, 5, 15, 9, 18, 54, 38, 33, 35, 6, 2, 3, 1, 1, 2, 1, 190, 179, 194, 3, 2, 5, 5, 21, 16, 29, 99, 71, 40, 69, 29, 29, 49, 21, 8, 25, 17, 28, 76, 7, 4, 108, 125, 125, 108, 248, 232, 2, 54, 48, 25, 59, 33, 28, 63, 32, 4, 112, 251, 143, 15, 32, 17, 15, 30, 14, 29, 38, 39, 29, 14, 30, 15, 16, 31, 14, 4, 115, 251, 143, 15, 32, 16, 16, 33, 14, 29, 36, 2, 1, 42, 29, 10, 21, 11, 20, 38, 15, 4, 115, 251, 142, 30, 60, 28, 31, 57, 25, 48, 58, 1, 1, 21, 20, 19, 55, 32, 27, 44, 17, 28, 29, 0, 0, 2, 0, 44, 255, 233, 4, 173, 5, 176, 0, 7, 0, 82, 0, 0, 65, 7, 33, 7, 51, 55, 33, 55, 1, 38, 38, 39, 38, 38, 39, 38, 52, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 39, 34, 38, 1, 144, 19, 1, 8, 23, 164, 23, 1, 23, 18, 254, 93, 8, 12, 4, 3, 5, 2, 2, 2, 126, 186, 129, 5, 21, 18, 8, 19, 11, 14, 37, 21, 34, 35, 7, 3, 2, 1, 1, 2, 1, 127, 180, 130, 3, 2, 5, 6, 21, 15, 30, 100, 71, 40, 69, 30, 29, 49, 21, 10, 32, 21, 27, 71, 41, 76, 116, 42, 20, 32, 12, 13, 18, 5, 129, 181, 128, 4, 18, 15, 16, 49, 36, 21, 31, 5, 176, 108, 127, 127, 108, 250, 233, 9, 21, 12, 10, 20, 11, 20, 41, 18, 3, 0, 253, 0, 31, 67, 27, 12, 21, 7, 11, 11, 1, 1, 41, 29, 10, 22, 11, 19, 38, 15, 3, 0, 252, 255, 31, 60, 29, 30, 55, 24, 47, 58, 1, 1, 21, 20, 19, 54, 33, 31, 49, 17, 23, 25, 1, 2, 53, 47, 22, 52, 29, 31, 70, 36, 2, 254, 253, 0, 28, 65, 28, 29, 37, 1, 13, 0, 0, 1, 0, 142, 254, 130, 4, 145, 5, 199, 0, 54, 0, 0, 65, 19, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 3, 2, 104, 90, 118, 90, 111, 30, 11, 15, 4, 4, 1, 6, 39, 8, 30, 23, 23, 62, 41, 40, 100, 60, 72, 91, 26, 25, 16, 5, 181, 7, 43, 49, 50, 155, 106, 86, 145, 60, 61, 96, 35, 36, 48, 11, 39, 6, 1, 7, 6, 28, 22, 42, 149, 109, 70, 254, 130, 2, 0, 1, 4, 96, 72, 27, 65, 34, 44, 91, 40, 250, 49, 109, 54, 53, 95, 37, 36, 41, 2, 2, 60, 47, 47, 118, 61, 99, 174, 66, 66, 79, 2, 2, 50, 45, 45, 121, 70, 70, 152, 74, 247, 50, 102, 49, 49, 95, 43, 86, 123, 21, 254, 143, 0, 1, 0, 165, 254, 130, 4, 52, 4, 81, 0, 42, 0, 0, 65, 19, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 3, 2, 61, 89, 111, 74, 85, 20, 21, 6, 7, 6, 9, 52, 43, 42, 121, 78, 51, 77, 25, 25, 23, 2, 170, 4, 48, 47, 48, 135, 84, 114, 187, 68, 69, 84, 13, 5, 9, 20, 33, 33, 119, 91, 69, 254, 130, 2, 0, 2, 4, 78, 57, 57, 133, 57, 42, 67, 141, 57, 57, 72, 3, 2, 41, 33, 33, 86, 47, 1, 82, 143, 53, 52, 62, 2, 3, 90, 76, 77, 197, 105, 43, 83, 169, 73, 73, 109, 22, 254, 142, 0, 0, 1, 0, 66, 0, 0, 4, 186, 5, 62, 0, 19, 0, 0, 65, 1, 23, 55, 39, 1, 35, 3, 39, 7, 23, 1, 39, 7, 23, 1, 51, 19, 23, 55, 2, 46, 1, 16, 250, 85, 255, 1, 44, 172, 242, 252, 84, 253, 254, 243, 254, 82, 251, 254, 219, 176, 234, 252, 82, 1, 183, 1, 117, 169, 113, 171, 1, 159, 254, 180, 170, 116, 171, 254, 139, 170, 114, 171, 254, 107, 1, 66, 169, 114, 0, 1, 1, 48, 4, 166, 4, 24, 5, 252, 0, 7, 0, 0, 65, 33, 55, 39, 7, 33, 7, 23, 1, 233, 2, 9, 38, 161, 18, 253, 245, 42, 162, 5, 35, 216, 1, 108, 233, 1, 0, 1, 1, 115, 5, 22, 4, 80, 6, 20, 0, 35, 0, 0, 65, 35, 7, 55, 50, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 23, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 1, 164, 37, 12, 48, 22, 43, 21, 39, 76, 38, 58, 116, 59, 27, 36, 10, 9, 7, 1, 2, 122, 3, 2, 18, 19, 26, 88, 58, 62, 116, 58, 37, 74, 38, 22, 45, 5, 150, 127, 1, 6, 5, 9, 29, 15, 23, 38, 2, 1, 16, 15, 13, 36, 23, 20, 1, 39, 43, 70, 26, 36, 38, 1, 1, 38, 23, 15, 29, 9, 5, 7, 0, 1, 2, 82, 5, 21, 3, 33, 6, 87, 0, 5, 0, 0, 65, 23, 55, 39, 55, 35, 2, 82, 129, 78, 38, 28, 176, 5, 229, 208, 57, 114, 151, 0, 0, 1, 2, 175, 5, 23, 3, 196, 6, 87, 0, 5, 0, 0, 65, 55, 55, 35, 7, 7, 2, 246, 183, 23, 176, 22, 79, 5, 23, 188, 132, 130, 117, 0, 0, 8, 254, 121, 254, 195, 5, 216, 5, 176, 0, 25, 0, 51, 0, 77, 0, 103, 0, 129, 0, 155, 0, 181, 0, 207, 0, 0, 65, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 1, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 19, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 1, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 1, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 19, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 213, 111, 5, 14, 10, 14, 38, 27, 24, 32, 9, 9, 6, 1, 109, 1, 26, 24, 25, 70, 43, 45, 75, 28, 29, 37, 2, 7, 112, 6, 18, 13, 13, 35, 23, 24, 31, 9, 9, 6, 1, 110, 1, 24, 23, 25, 72, 45, 47, 79, 29, 26, 33, 91, 108, 5, 17, 12, 13, 37, 25, 24, 31, 9, 9, 6, 1, 109, 1, 22, 20, 24, 74, 47, 45, 75, 28, 28, 36, 254, 225, 108, 5, 18, 12, 13, 37, 24, 24, 31, 9, 9, 6, 1, 109, 1, 25, 24, 24, 70, 44, 45, 75, 28, 28, 36, 253, 154, 108, 5, 17, 12, 14, 37, 24, 24, 31, 9, 9, 6, 1, 110, 1, 26, 24, 25, 70, 43, 45, 75, 28, 29, 35, 254, 169, 112, 6, 17, 13, 13, 36, 24, 24, 31, 9, 9, 6, 1, 109, 1, 28, 27, 25, 67, 41, 45, 75, 28, 29, 37, 254, 249, 109, 6, 18, 13, 13, 35, 24, 24, 31, 9, 9, 6, 1, 109, 1, 17, 17, 24, 78, 51, 45, 74, 28, 29, 37, 66, 109, 6, 18, 13, 12, 35, 24, 24, 31, 9, 9, 6, 1, 110, 1, 22, 22, 24, 74, 46, 45, 74, 28, 29, 36, 4, 244, 18, 32, 13, 17, 20, 16, 14, 14, 37, 21, 43, 69, 25, 25, 27, 1, 26, 24, 25, 70, 254, 192, 21, 37, 14, 13, 15, 16, 14, 14, 37, 21, 42, 69, 24, 26, 27, 1, 1, 29, 28, 24, 66, 253, 223, 1, 20, 35, 13, 15, 17, 16, 14, 14, 37, 21, 40, 66, 24, 27, 31, 1, 1, 26, 24, 25, 71, 253, 206, 1, 20, 36, 13, 14, 17, 16, 14, 14, 37, 21, 43, 69, 25, 24, 27, 1, 1, 26, 24, 25, 71, 254, 185, 1, 20, 35, 14, 14, 17, 16, 14, 14, 37, 21, 43, 69, 25, 25, 27, 1, 26, 24, 25, 71, 4, 240, 21, 37, 13, 13, 16, 16, 14, 14, 37, 21, 45, 73, 25, 21, 25, 1, 26, 24, 25, 70, 253, 221, 1, 20, 37, 14, 13, 16, 16, 14, 14, 37, 21, 36, 60, 24, 32, 36, 1, 1, 26, 25, 25, 70, 253, 206, 1, 20, 37, 14, 13, 16, 16, 14, 14, 37, 21, 40, 67, 24, 27, 30, 1, 1, 26, 25, 25, 70, 0, 8, 254, 189, 254, 99, 5, 194, 5, 198, 0, 4, 0, 9, 0, 14, 0, 19, 0, 24, 0, 29, 0, 34, 0, 39, 0, 0, 69, 7, 3, 51, 19, 19, 55, 19, 35, 3, 1, 7, 5, 55, 37, 5, 55, 37, 7, 5, 1, 23, 37, 39, 5, 1, 39, 5, 23, 37, 19, 55, 3, 7, 19, 1, 7, 19, 55, 3, 2, 51, 133, 127, 101, 172, 15, 132, 126, 100, 171, 2, 62, 15, 1, 64, 17, 254, 201, 251, 115, 16, 254, 192, 17, 1, 55, 3, 231, 89, 1, 52, 61, 254, 179, 252, 190, 88, 254, 204, 62, 1, 75, 20, 105, 148, 67, 93, 3, 44, 104, 147, 69, 93, 58, 3, 254, 160, 1, 81, 4, 177, 2, 1, 95, 254, 175, 254, 3, 140, 69, 92, 127, 210, 140, 68, 91, 127, 2, 68, 98, 191, 77, 153, 252, 26, 98, 191, 78, 153, 3, 89, 95, 1, 47, 61, 254, 177, 253, 67, 96, 254, 209, 62, 1, 79, 0, 3, 0, 81, 0, 0, 4, 167, 5, 176, 0, 3, 0, 20, 0, 35, 0, 0, 65, 1, 7, 1, 37, 5, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 51, 19, 19, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 3, 248, 254, 239, 129, 1, 15, 253, 246, 1, 33, 100, 185, 73, 72, 92, 9, 8, 55, 54, 55, 155, 92, 254, 65, 252, 180, 128, 99, 1, 32, 59, 91, 30, 29, 25, 7, 8, 61, 46, 47, 118, 66, 1, 204, 1, 245, 65, 254, 12, 188, 1, 60, 57, 57, 165, 105, 95, 155, 56, 56, 63, 3, 1, 250, 80, 2, 224, 2, 56, 1, 3, 45, 37, 37, 99, 57, 67, 108, 37, 38, 41, 0, 3, 255, 247, 254, 96, 4, 28, 4, 79, 0, 3, 0, 39, 0, 71, 0, 0, 69, 1, 7, 1, 19, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 7, 1, 51, 19, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 173, 254, 219, 117, 1, 39, 217, 2, 7, 4, 12, 13, 49, 39, 40, 110, 74, 52, 94, 42, 35, 63, 29, 19, 164, 254, 252, 181, 97, 19, 43, 23, 43, 100, 53, 115, 174, 61, 34, 53, 18, 14, 19, 174, 2, 4, 13, 10, 13, 39, 25, 44, 125, 84, 38, 66, 26, 27, 41, 15, 91, 25, 59, 33, 32, 74, 42, 52, 74, 26, 13, 20, 8, 23, 7, 6, 1, 126, 86, 254, 130, 2, 116, 21, 61, 127, 60, 60, 106, 41, 40, 48, 2, 1, 20, 21, 17, 50, 31, 119, 1, 250, 38, 2, 9, 23, 37, 14, 26, 25, 1, 2, 98, 80, 45, 106, 56, 42, 89, 64, 21, 30, 60, 30, 42, 80, 35, 59, 72, 2, 1, 20, 18, 18, 53, 35, 2, 11, 33, 56, 20, 19, 20, 1, 1, 36, 29, 14, 36, 19, 57, 135, 0, 0, 1, 0, 72, 0, 0, 4, 246, 6, 255, 0, 7, 0, 0, 65, 19, 35, 3, 33, 3, 51, 19, 4, 161, 85, 181, 59, 253, 63, 253, 182, 226, 5, 24, 1, 231, 254, 177, 250, 80, 5, 24, 0, 1, 0, 72, 0, 0, 4, 156, 5, 119, 0, 7, 0, 0, 65, 19, 35, 3, 33, 3, 51, 19, 4, 74, 82, 181, 56, 253, 85, 188, 182, 161, 3, 161, 1, 214, 254, 195, 251, 198, 3, 161, 0, 1, 0, 75, 254, 222, 4, 169, 5, 176, 0, 33, 0, 0, 65, 55, 33, 3, 51, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 4, 142, 27, 252, 159, 253, 182, 116, 189, 93, 129, 38, 38, 25, 10, 9, 46, 42, 42, 125, 88, 15, 126, 193, 68, 68, 80, 13, 13, 54, 63, 63, 194, 128, 166, 82, 5, 24, 152, 250, 80, 2, 160, 1, 2, 62, 54, 54, 148, 87, 79, 145, 56, 57, 68, 2, 147, 3, 83, 74, 73, 201, 120, 126, 207, 75, 74, 84, 3, 1, 1, 214, 0, 1, 0, 74, 254, 224, 4, 96, 4, 58, 0, 39, 0, 0, 65, 55, 33, 3, 51, 19, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 39, 19, 4, 69, 27, 252, 166, 188, 182, 84, 222, 37, 64, 27, 22, 37, 15, 33, 28, 8, 8, 50, 39, 39, 102, 60, 36, 84, 153, 60, 60, 79, 9, 10, 57, 58, 24, 56, 32, 47, 109, 60, 199, 49, 3, 161, 153, 251, 198, 1, 228, 1, 1, 16, 14, 11, 29, 18, 40, 109, 66, 64, 103, 39, 40, 55, 16, 150, 18, 83, 61, 60, 154, 90, 104, 170, 61, 25, 41, 15, 23, 26, 2, 1, 1, 27, 0, 1, 0, 64, 0, 0, 5, 15, 5, 176, 0, 20, 0, 0, 65, 35, 1, 35, 19, 35, 3, 35, 19, 35, 3, 51, 19, 51, 7, 51, 55, 23, 19, 51, 3, 5, 15, 220, 254, 109, 49, 50, 146, 45, 97, 113, 181, 253, 181, 115, 97, 44, 146, 47, 54, 200, 215, 231, 5, 176, 253, 122, 1, 2, 254, 255, 2, 133, 250, 80, 2, 148, 245, 246, 1, 253, 108, 2, 246, 0, 0, 1, 0, 54, 0, 0, 4, 147, 4, 58, 0, 20, 0, 0, 65, 35, 1, 7, 55, 35, 7, 35, 19, 35, 3, 51, 19, 51, 7, 51, 55, 23, 19, 51, 1, 4, 147, 230, 254, 181, 41, 43, 145, 38, 86, 80, 181, 188, 181, 81, 86, 35, 145, 39, 51, 188, 216, 254, 251, 4, 58, 254, 53, 1, 215, 213, 1, 202, 251, 198, 1, 205, 194, 195, 1, 254, 51, 2, 46, 0, 0, 1, 0, 165, 0, 0, 4, 246, 5, 176, 0, 14, 0, 0, 65, 19, 51, 3, 1, 35, 1, 35, 19, 33, 7, 33, 3, 51, 19, 2, 144, 180, 210, 221, 1, 189, 216, 254, 122, 89, 113, 254, 16, 27, 1, 61, 227, 180, 115, 2, 147, 253, 109, 2, 228, 2, 204, 253, 122, 2, 134, 152, 250, 232, 2, 147, 0, 1, 0, 111, 0, 0, 4, 198, 4, 58, 0, 14, 0, 0, 65, 19, 51, 3, 1, 35, 1, 35, 19, 33, 7, 33, 3, 51, 19, 2, 148, 180, 216, 251, 1, 161, 230, 254, 190, 116, 80, 254, 16, 27, 1, 59, 161, 181, 80, 1, 205, 254, 51, 2, 46, 2, 12, 254, 54, 1, 202, 153, 252, 95, 1, 205, 0, 1, 0, 6, 0, 0, 5, 12, 5, 176, 0, 13, 0, 0, 65, 19, 35, 3, 51, 19, 33, 3, 51, 19, 33, 55, 33, 3, 1, 69, 115, 181, 253, 181, 112, 1, 103, 113, 180, 226, 1, 58, 27, 254, 18, 114, 3, 31, 2, 145, 250, 80, 2, 135, 253, 121, 5, 24, 152, 253, 111, 0, 0, 1, 0, 2, 0, 0, 4, 205, 4, 58, 0, 13, 0, 0, 65, 19, 35, 3, 51, 19, 33, 3, 51, 19, 33, 55, 33, 3, 1, 33, 82, 181, 188, 181, 80, 1, 112, 81, 181, 161, 1, 54, 27, 254, 21, 82, 2, 101, 1, 213, 251, 198, 1, 206, 254, 50, 3, 161, 153, 254, 43, 0, 0, 1, 0, 1, 254, 221, 4, 66, 5, 176, 0, 47, 0, 0, 65, 19, 33, 3, 51, 19, 51, 3, 51, 19, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 2, 239, 113, 253, 158, 253, 180, 226, 250, 226, 181, 120, 7, 46, 64, 19, 20, 19, 3, 2, 6, 4, 4, 15, 12, 13, 39, 28, 28, 77, 51, 15, 117, 165, 55, 27, 41, 15, 16, 21, 6, 7, 2, 11, 12, 48, 39, 38, 105, 70, 3, 63, 2, 113, 250, 80, 5, 24, 250, 232, 2, 158, 1, 7, 42, 32, 33, 81, 43, 44, 87, 38, 41, 91, 44, 45, 82, 31, 32, 39, 1, 147, 3, 95, 77, 38, 86, 47, 48, 106, 53, 63, 130, 62, 62, 110, 43, 40, 52, 6, 0, 1, 0, 8, 254, 225, 4, 26, 4, 58, 0, 35, 0, 0, 65, 19, 33, 3, 51, 19, 51, 3, 51, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 2, 187, 75, 253, 190, 188, 181, 161, 223, 162, 181, 89, 9, 59, 72, 18, 18, 8, 6, 6, 33, 27, 31, 92, 60, 35, 81, 137, 52, 52, 65, 9, 9, 32, 42, 43, 137, 95, 2, 131, 1, 183, 251, 198, 3, 161, 252, 95, 1, 227, 1, 5, 59, 43, 44, 104, 49, 53, 92, 39, 45, 66, 20, 150, 20, 88, 61, 61, 151, 83, 87, 165, 65, 64, 82, 3, 0, 2, 0, 97, 255, 225, 4, 108, 5, 201, 0, 83, 0, 115, 0, 0, 69, 55, 38, 38, 39, 54, 54, 55, 54, 54, 55, 19, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 22, 22, 3, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 3, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 54, 3, 207, 11, 38, 71, 36, 47, 73, 27, 28, 39, 11, 58, 5, 3, 6, 7, 31, 27, 28, 84, 59, 61, 98, 38, 39, 57, 20, 21, 27, 7, 54, 9, 1, 12, 11, 45, 35, 18, 36, 18, 57, 78, 24, 25, 24, 3, 4, 5, 6, 44, 5, 13, 11, 11, 33, 24, 23, 63, 42, 14, 71, 112, 43, 44, 65, 22, 23, 30, 9, 45, 9, 3, 15, 15, 57, 45, 45, 126, 82, 58, 108, 52, 64, 136, 254, 53, 3, 10, 8, 8, 25, 18, 18, 49, 32, 28, 34, 8, 8, 4, 2, 2, 7, 2, 57, 8, 25, 18, 19, 51, 34, 33, 39, 8, 9, 1, 31, 158, 1, 9, 11, 48, 107, 57, 60, 132, 69, 1, 104, 43, 106, 54, 54, 103, 41, 40, 51, 2, 2, 45, 39, 39, 103, 55, 56, 111, 48, 254, 173, 65, 129, 62, 62, 121, 56, 3, 6, 1, 1, 50, 41, 40, 102, 53, 53, 102, 39, 1, 26, 31, 84, 46, 46, 90, 37, 36, 46, 3, 160, 4, 57, 45, 45, 116, 63, 63, 129, 59, 254, 233, 67, 145, 71, 71, 129, 49, 49, 59, 1, 1, 29, 26, 32, 31, 2, 156, 1, 89, 21, 67, 38, 37, 76, 30, 30, 36, 1, 1, 42, 32, 32, 77, 36, 37, 61, 15, 254, 148, 51, 103, 48, 49, 91, 40, 43, 97, 51, 51, 106, 0, 2, 0, 78, 255, 234, 4, 70, 4, 81, 0, 74, 0, 103, 0, 0, 69, 55, 38, 38, 39, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 22, 22, 1, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 7, 6, 6, 7, 38, 38, 39, 38, 38, 4, 8, 14, 42, 81, 41, 80, 97, 16, 14, 5, 2, 9, 9, 36, 29, 30, 84, 56, 58, 95, 38, 38, 59, 21, 21, 27, 6, 14, 7, 11, 19, 15, 46, 31, 24, 48, 26, 54, 76, 25, 25, 28, 5, 6, 2, 5, 8, 6, 30, 30, 24, 76, 54, 18, 98, 147, 51, 52, 61, 12, 7, 7, 8, 17, 17, 61, 46, 45, 123, 78, 70, 131, 63, 71, 147, 254, 201, 13, 2, 10, 8, 8, 24, 18, 17, 47, 31, 28, 36, 10, 10, 8, 5, 2, 13, 13, 67, 63, 35, 46, 13, 13, 5, 13, 158, 1, 7, 9, 81, 194, 113, 105, 44, 101, 49, 49, 90, 35, 35, 43, 2, 2, 35, 31, 31, 85, 48, 48, 103, 48, 104, 65, 127, 59, 45, 85, 40, 5, 8, 1, 1, 42, 35, 34, 89, 47, 47, 94, 40, 61, 49, 114, 49, 41, 61, 3, 158, 3, 84, 66, 67, 169, 88, 58, 67, 138, 65, 65, 114, 43, 44, 52, 1, 2, 35, 32, 29, 27, 2, 68, 110, 22, 57, 31, 30, 59, 23, 22, 26, 1, 1, 34, 26, 27, 64, 32, 32, 56, 17, 109, 88, 159, 64, 33, 76, 42, 42, 90, 0, 0, 1, 0, 177, 254, 161, 4, 155, 5, 176, 0, 15, 0, 0, 65, 3, 33, 3, 51, 19, 35, 19, 35, 3, 33, 19, 51, 55, 33, 7, 1, 182, 226, 2, 164, 61, 162, 105, 141, 226, 181, 227, 254, 160, 200, 230, 27, 253, 95, 26, 5, 24, 250, 232, 254, 161, 1, 251, 5, 20, 250, 231, 4, 129, 151, 151, 0, 1, 0, 107, 254, 191, 4, 65, 4, 58, 0, 15, 0, 0, 65, 3, 33, 3, 51, 19, 35, 19, 35, 3, 33, 19, 51, 55, 33, 7, 1, 77, 162, 2, 163, 57, 163, 100, 125, 162, 181, 162, 254, 144, 135, 221, 27, 253, 141, 27, 3, 163, 252, 93, 254, 191, 1, 216, 3, 163, 252, 93, 3, 12, 151, 151, 0, 2, 0, 228, 0, 0, 4, 157, 5, 176, 0, 3, 0, 29, 0, 0, 65, 19, 35, 3, 1, 35, 3, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 3, 51, 2, 96, 122, 146, 122, 2, 207, 181, 126, 73, 148, 77, 64, 69, 15, 15, 1, 6, 75, 181, 75, 11, 24, 39, 39, 135, 101, 76, 145, 71, 111, 181, 1, 53, 2, 188, 253, 68, 4, 123, 253, 68, 21, 32, 3, 2, 53, 42, 41, 103, 52, 1, 201, 254, 56, 93, 162, 60, 61, 71, 1, 1, 27, 26, 253, 164, 0, 2, 0, 164, 0, 0, 4, 97, 4, 58, 0, 3, 0, 29, 0, 0, 101, 19, 35, 3, 5, 19, 35, 3, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 3, 2, 88, 98, 147, 98, 1, 224, 188, 181, 97, 74, 148, 75, 58, 79, 23, 24, 14, 6, 52, 181, 51, 10, 43, 48, 47, 145, 92, 73, 144, 71, 75, 211, 2, 54, 253, 202, 211, 4, 58, 253, 232, 15, 19, 2, 2, 38, 33, 33, 91, 55, 1, 60, 254, 197, 93, 149, 52, 53, 58, 1, 1, 17, 19, 254, 116, 0, 1, 0, 116, 0, 0, 4, 43, 5, 176, 0, 25, 0, 0, 115, 51, 19, 54, 54, 23, 22, 22, 23, 22, 6, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 19, 35, 116, 180, 126, 73, 147, 77, 64, 70, 15, 14, 1, 6, 75, 181, 76, 10, 24, 39, 39, 136, 101, 75, 146, 70, 112, 181, 2, 187, 22, 30, 2, 2, 53, 41, 42, 103, 52, 254, 56, 1, 199, 93, 161, 61, 60, 70, 2, 2, 26, 28, 2, 94, 0, 2, 0, 115, 255, 234, 4, 164, 5, 197, 0, 66, 0, 87, 0, 0, 69, 50, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 33, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 38, 38, 39, 38, 54, 55, 39, 6, 22, 23, 22, 22, 23, 7, 6, 22, 23, 22, 22, 23, 22, 22, 3, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 2, 181, 40, 84, 40, 40, 75, 31, 37, 34, 71, 36, 30, 64, 33, 58, 83, 28, 28, 31, 6, 7, 3, 6, 21, 2, 146, 30, 8, 5, 8, 8, 41, 37, 38, 113, 80, 83, 137, 55, 56, 86, 32, 25, 40, 11, 12, 29, 29, 5, 6, 4, 3, 145, 4, 12, 22, 21, 80, 63, 27, 10, 7, 18, 18, 66, 49, 48, 129, 107, 4, 9, 25, 19, 18, 50, 35, 35, 92, 60, 47, 62, 18, 18, 16, 2, 1, 8, 4, 17, 22, 10, 12, 12, 38, 27, 137, 20, 34, 11, 10, 10, 1, 1, 40, 34, 33, 87, 48, 47, 99, 46, 137, 188, 63, 135, 64, 64, 116, 44, 43, 54, 2, 2, 52, 46, 47, 125, 70, 55, 116, 55, 59, 18, 53, 31, 31, 65, 31, 1, 59, 117, 50, 50, 76, 17, 147, 72, 142, 65, 65, 112, 41, 42, 48, 3, 85, 19, 44, 107, 53, 53, 99, 38, 38, 43, 3, 2, 39, 30, 31, 78, 41, 41, 81, 33, 113, 0, 0, 2, 0, 79, 255, 236, 4, 111, 4, 81, 0, 65, 0, 79, 0, 0, 101, 54, 54, 55, 39, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 55, 5, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 38, 38, 39, 38, 54, 55, 39, 6, 22, 23, 22, 22, 23, 7, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 3, 22, 22, 23, 22, 22, 7, 7, 37, 54, 54, 55, 54, 54, 3, 78, 47, 85, 35, 62, 31, 67, 35, 37, 81, 43, 40, 62, 23, 18, 28, 10, 16, 13, 2, 2, 1, 2, 141, 18, 12, 26, 41, 41, 140, 103, 96, 157, 61, 61, 89, 27, 29, 30, 6, 7, 2, 3, 144, 3, 14, 22, 22, 80, 62, 2, 5, 6, 36, 35, 19, 48, 29, 43, 110, 65, 49, 99, 26, 57, 75, 21, 21, 11, 8, 4, 254, 39, 18, 51, 37, 36, 96, 10, 16, 51, 36, 125, 25, 40, 14, 14, 15, 2, 1, 24, 21, 16, 43, 24, 36, 83, 41, 18, 35, 17, 7, 1, 120, 92, 172, 68, 67, 83, 3, 3, 76, 63, 63, 160, 81, 15, 46, 27, 27, 60, 29, 1, 56, 111, 46, 47, 67, 13, 7, 27, 55, 26, 70, 132, 55, 31, 53, 21, 31, 37, 1, 1, 14, 3, 189, 2, 50, 39, 39, 98, 49, 26, 1, 49, 108, 45, 45, 57, 0, 1, 0, 89, 254, 215, 4, 250, 5, 176, 0, 35, 0, 0, 65, 35, 3, 51, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 1, 35, 1, 35, 2, 11, 181, 253, 181, 116, 228, 89, 115, 31, 31, 17, 9, 9, 45, 41, 42, 124, 88, 10, 124, 190, 67, 66, 79, 13, 10, 24, 40, 35, 117, 83, 50, 2, 33, 222, 254, 4, 130, 5, 176, 250, 80, 2, 154, 1, 3, 69, 55, 56, 145, 79, 78, 146, 56, 57, 70, 1, 147, 4, 85, 73, 73, 200, 119, 96, 185, 76, 66, 101, 24, 12, 2, 127, 253, 140, 0, 1, 0, 70, 254, 251, 4, 119, 4, 58, 0, 34, 0, 0, 65, 1, 35, 1, 7, 19, 35, 3, 51, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 2, 155, 1, 220, 233, 254, 68, 107, 80, 181, 188, 181, 80, 204, 64, 101, 34, 34, 29, 8, 7, 45, 36, 36, 95, 55, 32, 81, 146, 57, 57, 73, 9, 8, 33, 39, 39, 121, 2, 96, 1, 218, 254, 55, 1, 1, 202, 251, 198, 1, 205, 1, 2, 37, 35, 35, 102, 66, 59, 96, 36, 37, 52, 15, 149, 17, 79, 58, 57, 147, 85, 80, 141, 56, 55, 77, 0, 0, 1, 0, 72, 254, 73, 4, 143, 5, 176, 0, 29, 0, 0, 65, 35, 3, 51, 19, 33, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 1, 35, 3, 33, 1, 250, 181, 253, 181, 112, 1, 225, 125, 5, 23, 19, 20, 58, 40, 24, 49, 23, 26, 29, 55, 29, 80, 123, 45, 44, 54, 10, 1, 8, 181, 115, 254, 32, 5, 176, 250, 80, 2, 133, 253, 34, 34, 71, 29, 29, 37, 9, 7, 148, 8, 10, 53, 48, 47, 128, 74, 6, 9, 253, 108, 0, 0, 1, 0, 69, 254, 71, 4, 75, 4, 58, 0, 29, 0, 0, 65, 35, 3, 51, 19, 33, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 22, 54, 55, 54, 54, 55, 19, 35, 3, 33, 1, 182, 181, 188, 181, 80, 1, 225, 92, 6, 24, 20, 21, 60, 41, 25, 48, 23, 26, 29, 56, 30, 81, 125, 45, 45, 54, 10, 199, 180, 82, 254, 31, 4, 58, 251, 198, 1, 206, 253, 217, 35, 72, 28, 29, 36, 9, 7, 149, 8, 10, 1, 53, 48, 47, 129, 75, 4, 147, 254, 43, 0, 0, 2, 0, 77, 255, 234, 4, 105, 5, 196, 0, 52, 0, 72, 0, 0, 65, 38, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 33, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 1, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 33, 6, 6, 7, 6, 6, 7, 6, 6, 2, 183, 44, 93, 45, 45, 84, 36, 34, 40, 80, 40, 35, 73, 39, 63, 91, 30, 30, 33, 7, 6, 4, 7, 14, 252, 213, 26, 10, 4, 16, 15, 60, 48, 47, 131, 85, 88, 151, 63, 63, 100, 38, 38, 49, 12, 34, 10, 7, 18, 18, 67, 50, 51, 136, 254, 222, 55, 81, 28, 28, 34, 8, 8, 2, 6, 14, 2, 124, 12, 34, 24, 25, 66, 42, 43, 105, 5, 195, 1, 10, 11, 12, 38, 28, 138, 20, 34, 11, 10, 10, 1, 2, 44, 36, 37, 95, 52, 53, 108, 49, 94, 166, 74, 146, 66, 67, 116, 42, 43, 51, 2, 2, 52, 47, 46, 127, 73, 72, 157, 76, 218, 75, 152, 70, 69, 121, 45, 44, 52, 250, 191, 2, 34, 28, 28, 77, 44, 45, 96, 47, 91, 52, 114, 55, 55, 100, 37, 38, 43, 0, 0, 1, 0, 103, 255, 233, 4, 153, 5, 176, 0, 45, 0, 0, 65, 1, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 1, 55, 33, 7, 3, 163, 254, 64, 28, 151, 76, 111, 31, 24, 18, 7, 8, 61, 46, 47, 118, 64, 59, 88, 29, 29, 26, 3, 179, 5, 53, 52, 52, 152, 94, 100, 186, 73, 72, 94, 9, 8, 45, 48, 46, 131, 83, 25, 1, 229, 22, 252, 180, 27, 5, 24, 254, 68, 160, 1, 3, 48, 46, 35, 97, 61, 66, 105, 36, 37, 37, 2, 2, 45, 37, 37, 97, 56, 1, 94, 155, 56, 56, 63, 2, 2, 56, 56, 55, 164, 105, 93, 151, 56, 51, 66, 10, 2, 1, 231, 127, 152, 0, 1, 0, 28, 254, 114, 4, 78, 4, 58, 0, 45, 0, 0, 65, 1, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 1, 55, 33, 7, 3, 69, 254, 81, 27, 148, 77, 112, 32, 25, 19, 8, 8, 61, 46, 47, 118, 64, 58, 88, 29, 29, 27, 4, 180, 5, 52, 53, 52, 152, 93, 100, 186, 73, 73, 94, 9, 7, 42, 46, 43, 125, 79, 29, 1, 217, 21, 252, 180, 27, 3, 161, 254, 68, 160, 1, 3, 47, 44, 35, 99, 62, 65, 105, 36, 36, 37, 2, 2, 44, 37, 36, 98, 55, 1, 94, 154, 56, 56, 63, 2, 3, 56, 56, 55, 164, 105, 90, 149, 56, 50, 66, 12, 4, 1, 234, 127, 153, 255, 255, 0, 1, 254, 71, 4, 238, 5, 176, 4, 38, 1, 123, 73, 0, 0, 39, 2, 106, 255, 31, 0, 63, 0, 7, 2, 111, 255, 84, 0, 0, 255, 255, 255, 247, 254, 71, 4, 175, 4, 58, 4, 38, 1, 181, 80, 0, 0, 39, 2, 106, 255, 42, 255, 100, 0, 7, 2, 111, 255, 74, 0, 0, 0, 2, 0, 58, 0, 0, 4, 165, 5, 176, 0, 16, 0, 31, 0, 0, 65, 37, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 5, 19, 35, 3, 37, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 5, 3, 140, 254, 207, 103, 186, 72, 72, 93, 10, 9, 53, 55, 55, 158, 96, 1, 206, 252, 180, 227, 254, 208, 62, 92, 29, 30, 24, 8, 8, 61, 47, 46, 120, 68, 1, 27, 3, 109, 1, 57, 56, 56, 165, 108, 100, 158, 55, 56, 62, 4, 1, 5, 176, 250, 231, 1, 3, 45, 38, 37, 102, 60, 69, 108, 38, 37, 39, 2, 0, 0, 2, 0, 40, 255, 254, 4, 96, 5, 176, 0, 39, 0, 57, 0, 0, 97, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 39, 22, 6, 7, 6, 6, 7, 6, 6, 7, 35, 19, 35, 3, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 3, 54, 54, 55, 54, 54, 55, 54, 54, 55, 23, 3, 39, 38, 38, 39, 38, 38, 2, 183, 66, 108, 43, 43, 66, 24, 24, 30, 8, 13, 7, 14, 167, 16, 5, 14, 8, 27, 25, 26, 81, 60, 43, 230, 181, 101, 121, 98, 155, 55, 56, 66, 8, 8, 28, 38, 37, 126, 90, 130, 6, 35, 31, 14, 35, 20, 23, 56, 32, 100, 99, 121, 53, 58, 12, 13, 1, 2, 39, 35, 35, 95, 54, 54, 116, 56, 94, 186, 93, 1, 94, 187, 94, 48, 114, 50, 50, 69, 2, 5, 28, 253, 189, 1, 69, 59, 60, 161, 93, 84, 152, 59, 59, 74, 6, 1, 180, 54, 103, 41, 19, 32, 12, 13, 15, 1, 2, 253, 193, 2, 3, 60, 43, 42, 97, 0, 0, 2, 0, 67, 255, 234, 4, 111, 6, 24, 0, 73, 0, 108, 0, 0, 83, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 7, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 37, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 92, 18, 5, 2, 6, 6, 30, 27, 27, 81, 57, 37, 63, 27, 13, 23, 11, 13, 24, 11, 11, 35, 21, 29, 74, 41, 68, 106, 41, 40, 59, 20, 20, 26, 7, 14, 2, 14, 167, 14, 9, 15, 3, 10, 9, 9, 27, 20, 20, 55, 37, 29, 29, 4, 5, 3, 2, 212, 181, 99, 16, 35, 19, 20, 46, 25, 65, 101, 38, 39, 56, 19, 19, 25, 1, 242, 93, 3, 2, 1, 14, 30, 17, 17, 40, 24, 34, 42, 12, 12, 9, 5, 3, 17, 4, 13, 11, 10, 31, 23, 23, 63, 41, 17, 29, 12, 15, 23, 2, 63, 130, 42, 101, 51, 52, 96, 38, 38, 47, 1, 1, 19, 18, 8, 20, 11, 12, 28, 15, 30, 45, 15, 21, 18, 1, 1, 53, 44, 44, 116, 62, 62, 123, 52, 100, 199, 100, 1, 100, 199, 100, 23, 79, 45, 46, 94, 37, 38, 45, 2, 2, 42, 29, 28, 59, 19, 4, 229, 253, 236, 17, 27, 9, 10, 11, 1, 2, 49, 42, 43, 110, 59, 59, 118, 251, 253, 200, 22, 42, 22, 17, 32, 12, 12, 14, 1, 1, 34, 28, 27, 67, 34, 34, 62, 21, 132, 29, 78, 42, 42, 81, 32, 31, 38, 2, 1, 9, 8, 9, 27, 0, 0, 1, 0, 175, 255, 234, 4, 102, 5, 176, 0, 80, 0, 0, 65, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 7, 23, 22, 22, 23, 22, 22, 1, 190, 12, 4, 29, 32, 32, 98, 66, 71, 114, 45, 44, 66, 24, 23, 30, 8, 14, 4, 12, 169, 15, 7, 15, 5, 14, 11, 12, 35, 24, 25, 66, 43, 28, 35, 9, 10, 5, 2, 13, 4, 2, 12, 12, 51, 43, 49, 82, 31, 34, 42, 6, 8, 39, 45, 45, 136, 90, 206, 27, 230, 54, 70, 20, 20, 11, 5, 6, 31, 24, 37, 119, 78, 70, 27, 140, 47, 53, 12, 12, 2, 1, 117, 106, 65, 105, 37, 38, 42, 1, 1, 49, 43, 43, 113, 62, 62, 128, 57, 100, 198, 100, 100, 199, 100, 29, 84, 46, 46, 90, 35, 36, 42, 2, 1, 27, 20, 19, 48, 23, 106, 46, 97, 45, 45, 77, 26, 25, 65, 39, 44, 108, 64, 88, 146, 53, 52, 60, 3, 1, 152, 1, 3, 42, 33, 34, 88, 48, 50, 84, 32, 50, 53, 1, 1, 151, 2, 3, 56, 39, 39, 87, 0, 1, 0, 133, 255, 228, 4, 68, 4, 58, 0, 77, 0, 0, 101, 38, 38, 55, 55, 54, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 7, 23, 22, 22, 23, 22, 22, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 39, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 2, 146, 8, 5, 1, 8, 6, 65, 79, 42, 78, 31, 30, 39, 3, 6, 59, 52, 53, 137, 72, 211, 20, 228, 40, 73, 27, 27, 27, 6, 6, 52, 37, 38, 89, 43, 134, 25, 180, 36, 62, 23, 22, 23, 3, 9, 3, 31, 32, 32, 92, 59, 60, 99, 39, 39, 59, 22, 21, 26, 7, 10, 16, 14, 169, 19, 5, 12, 4, 11, 9, 9, 27, 19, 19, 52, 34, 23, 31, 148, 11, 32, 20, 79, 81, 124, 29, 18, 43, 29, 29, 75, 50, 83, 117, 38, 37, 36, 2, 1, 150, 1, 1, 19, 20, 20, 64, 46, 50, 65, 19, 20, 16, 1, 150, 1, 2, 17, 18, 18, 55, 40, 77, 61, 90, 29, 30, 30, 1, 1, 39, 33, 33, 90, 51, 50, 106, 51, 80, 156, 78, 1, 78, 158, 80, 24, 64, 33, 34, 66, 25, 26, 30, 1, 1, 13, 0, 2, 1, 13, 254, 165, 3, 238, 5, 176, 0, 57, 0, 70, 0, 0, 65, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 23, 22, 22, 23, 51, 55, 38, 38, 39, 38, 54, 55, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 7, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 1, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 1, 13, 224, 56, 80, 24, 24, 18, 6, 19, 4, 5, 2, 2, 18, 18, 179, 3, 18, 18, 2, 3, 4, 4, 20, 6, 10, 18, 18, 67, 52, 57, 98, 38, 37, 48, 5, 9, 57, 56, 57, 161, 94, 255, 0, 27, 1, 24, 60, 94, 32, 31, 27, 7, 9, 65, 49, 50, 126, 69, 148, 2, 169, 29, 196, 32, 15, 69, 53, 110, 47, 79, 29, 26, 36, 2, 121, 1, 3, 43, 35, 35, 94, 52, 133, 30, 62, 31, 31, 58, 25, 26, 23, 50, 27, 26, 55, 27, 137, 52, 102, 45, 45, 71, 23, 24, 64, 42, 41, 104, 65, 101, 151, 50, 50, 52, 2, 1, 152, 1, 2, 32, 31, 32, 93, 62, 75, 102, 31, 32, 27, 1, 253, 16, 175, 179, 87, 154, 70, 65, 38, 92, 52, 45, 100, 0, 2, 0, 244, 254, 146, 3, 202, 4, 58, 0, 54, 0, 67, 0, 0, 83, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 23, 22, 22, 23, 55, 55, 38, 38, 55, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 7, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 1, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 244, 246, 40, 63, 22, 21, 19, 4, 13, 3, 3, 3, 3, 16, 16, 180, 2, 31, 9, 5, 13, 4, 11, 16, 17, 56, 41, 43, 79, 32, 31, 40, 3, 6, 61, 52, 53, 139, 72, 254, 248, 27, 1, 32, 40, 74, 28, 27, 28, 6, 7, 53, 38, 38, 91, 45, 195, 2, 158, 29, 196, 32, 15, 69, 53, 110, 47, 78, 29, 27, 36, 1, 185, 2, 2, 22, 21, 21, 61, 42, 97, 23, 46, 22, 23, 42, 18, 1, 20, 32, 76, 43, 98, 42, 78, 33, 33, 51, 16, 17, 44, 29, 29, 77, 51, 83, 117, 38, 37, 35, 2, 1, 150, 1, 1, 18, 20, 20, 64, 46, 51, 66, 19, 20, 16, 1, 253, 191, 175, 179, 87, 154, 70, 65, 38, 91, 51, 46, 101, 0, 0, 1, 255, 176, 255, 234, 4, 136, 5, 176, 0, 69, 0, 0, 65, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 39, 7, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 35, 39, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 2, 202, 174, 2, 2, 3, 5, 18, 15, 25, 87, 63, 67, 104, 40, 40, 58, 21, 20, 25, 7, 14, 8, 6, 169, 5, 17, 15, 4, 9, 8, 8, 26, 19, 20, 55, 38, 23, 22, 4, 2, 1, 2, 1, 199, 253, 214, 118, 6, 14, 12, 12, 39, 30, 31, 88, 60, 20, 17, 39, 92, 135, 49, 49, 65, 22, 21, 26, 11, 90, 5, 24, 251, 244, 25, 49, 23, 29, 52, 22, 40, 48, 1, 1, 53, 45, 44, 117, 62, 62, 122, 51, 98, 200, 101, 1, 101, 199, 100, 27, 79, 44, 44, 87, 36, 36, 48, 3, 6, 32, 20, 8, 19, 9, 12, 25, 11, 4, 162, 253, 80, 40, 122, 69, 69, 139, 55, 56, 69, 1, 150, 2, 75, 63, 63, 163, 86, 86, 167, 67, 2, 24, 0, 1, 255, 202, 255, 234, 4, 89, 4, 58, 0, 69, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 35, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 51, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 53, 52, 54, 55, 3, 55, 253, 217, 76, 4, 9, 8, 9, 26, 22, 22, 63, 44, 20, 23, 44, 76, 111, 40, 40, 53, 18, 17, 21, 9, 52, 190, 107, 2, 1, 4, 4, 17, 13, 24, 87, 66, 65, 102, 40, 39, 57, 21, 20, 25, 7, 13, 5, 14, 168, 15, 5, 13, 4, 10, 8, 8, 26, 19, 19, 52, 36, 23, 21, 3, 2, 1, 2, 1, 4, 58, 254, 52, 30, 90, 50, 51, 102, 41, 42, 52, 1, 163, 2, 60, 51, 50, 131, 70, 70, 136, 56, 1, 51, 253, 128, 28, 57, 26, 28, 51, 22, 43, 54, 1, 1, 46, 40, 40, 105, 57, 57, 116, 51, 94, 187, 95, 94, 189, 95, 26, 72, 39, 39, 77, 31, 31, 42, 3, 7, 37, 23, 10, 20, 10, 14, 26, 11, 0, 0, 1, 0, 3, 255, 233, 4, 112, 5, 176, 0, 53, 0, 0, 65, 35, 3, 33, 19, 35, 3, 51, 19, 33, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 52, 53, 52, 54, 55, 3, 138, 181, 114, 254, 223, 115, 181, 253, 181, 112, 1, 33, 54, 3, 2, 5, 4, 14, 10, 23, 86, 69, 67, 104, 40, 40, 58, 20, 20, 25, 7, 14, 4, 12, 167, 14, 10, 14, 4, 10, 8, 8, 25, 19, 19, 55, 37, 24, 22, 2, 1, 4, 1, 5, 176, 253, 108, 2, 148, 250, 80, 2, 133, 254, 175, 34, 68, 33, 23, 43, 20, 47, 60, 1, 2, 53, 45, 45, 117, 62, 62, 123, 50, 100, 198, 100, 100, 199, 100, 27, 79, 43, 44, 88, 36, 37, 48, 3, 7, 43, 27, 7, 14, 7, 21, 38, 14, 0, 1, 0, 9, 255, 234, 4, 87, 4, 58, 0, 53, 0, 0, 65, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 39, 35, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 35, 3, 33, 19, 35, 3, 51, 19, 2, 17, 24, 3, 3, 6, 5, 18, 14, 27, 92, 68, 63, 98, 38, 37, 54, 19, 19, 23, 7, 13, 5, 7, 168, 7, 14, 13, 4, 8, 7, 7, 23, 17, 17, 49, 33, 27, 28, 6, 3, 3, 1, 1, 132, 181, 82, 254, 253, 82, 181, 188, 181, 80, 1, 205, 172, 32, 61, 28, 26, 48, 20, 43, 51, 1, 1, 48, 41, 40, 106, 57, 57, 114, 48, 94, 188, 95, 95, 189, 94, 25, 70, 39, 39, 77, 32, 32, 42, 4, 6, 34, 23, 13, 28, 14, 11, 21, 10, 3, 26, 254, 42, 1, 214, 251, 198, 1, 205, 0, 0, 1, 0, 130, 255, 232, 4, 92, 5, 199, 0, 63, 0, 0, 69, 22, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 51, 22, 22, 23, 55, 38, 38, 39, 34, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 2, 36, 105, 181, 70, 70, 92, 14, 12, 7, 7, 172, 11, 1, 15, 11, 58, 44, 45, 116, 69, 59, 84, 28, 29, 32, 7, 7, 2, 6, 42, 8, 33, 25, 25, 67, 43, 43, 104, 62, 72, 140, 63, 69, 78, 169, 91, 86, 149, 62, 63, 100, 38, 38, 50, 12, 41, 9, 8, 18, 18, 65, 49, 48, 130, 21, 3, 63, 60, 60, 169, 103, 89, 178, 89, 89, 180, 88, 66, 112, 40, 41, 43, 2, 2, 45, 37, 37, 95, 52, 51, 102, 45, 1, 9, 53, 111, 52, 52, 92, 34, 34, 39, 1, 35, 35, 132, 48, 41, 1, 48, 43, 44, 118, 69, 69, 152, 77, 254, 250, 71, 146, 67, 68, 120, 45, 45, 54, 0, 1, 0, 133, 255, 233, 4, 11, 4, 81, 0, 51, 0, 0, 101, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 51, 22, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 6, 7, 6, 6, 7, 6, 6, 2, 79, 81, 111, 32, 32, 20, 8, 5, 11, 62, 50, 50, 134, 83, 67, 132, 60, 57, 71, 158, 81, 117, 199, 75, 75, 96, 13, 5, 11, 48, 56, 56, 173, 114, 83, 153, 61, 61, 81, 10, 6, 4, 5, 168, 6, 5, 8, 8, 47, 34, 35, 87, 130, 1, 69, 55, 54, 138, 71, 42, 76, 142, 55, 54, 66, 1, 28, 32, 142, 40, 29, 1, 1, 86, 74, 74, 199, 112, 43, 108, 193, 73, 74, 87, 3, 2, 41, 44, 43, 131, 88, 54, 106, 54, 54, 108, 54, 51, 74, 23, 24, 21, 0, 0, 1, 0, 195, 255, 233, 4, 113, 5, 176, 0, 43, 0, 0, 65, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 35, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 55, 33, 7, 2, 34, 162, 6, 25, 33, 33, 110, 80, 74, 122, 49, 48, 74, 27, 26, 34, 9, 15, 5, 13, 168, 15, 6, 17, 6, 17, 14, 14, 40, 28, 29, 74, 48, 41, 47, 11, 11, 2, 3, 162, 1, 122, 27, 252, 115, 27, 5, 24, 252, 65, 74, 131, 50, 50, 59, 2, 2, 47, 41, 41, 110, 63, 62, 131, 62, 100, 198, 100, 100, 199, 100, 35, 88, 45, 46, 87, 33, 33, 39, 2, 2, 45, 32, 32, 73, 31, 3, 192, 152, 152, 0, 0, 1, 0, 128, 255, 233, 4, 53, 4, 58, 0, 43, 0, 0, 65, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 39, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 55, 33, 7, 1, 199, 97, 6, 25, 34, 33, 112, 80, 97, 150, 54, 29, 47, 16, 13, 19, 5, 11, 15, 15, 167, 18, 4, 13, 4, 12, 9, 8, 21, 13, 29, 84, 59, 41, 48, 11, 11, 3, 3, 98, 1, 110, 27, 252, 148, 26, 3, 164, 253, 181, 74, 132, 49, 50, 60, 1, 2, 76, 64, 35, 82, 45, 37, 77, 39, 81, 159, 80, 1, 80, 161, 81, 25, 56, 27, 24, 47, 21, 46, 58, 2, 2, 44, 32, 32, 73, 32, 2, 76, 150, 150, 0, 1, 0, 64, 255, 234, 4, 146, 5, 200, 0, 76, 0, 0, 83, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 23, 55, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 72, 8, 71, 65, 64, 173, 94, 100, 183, 72, 72, 94, 12, 180, 12, 63, 45, 46, 115, 64, 60, 110, 40, 41, 43, 8, 9, 69, 52, 51, 129, 69, 167, 27, 189, 56, 97, 34, 35, 34, 8, 8, 68, 50, 50, 123, 64, 55, 89, 31, 31, 32, 3, 179, 4, 59, 55, 55, 152, 88, 101, 193, 76, 77, 98, 7, 3, 22, 23, 22, 67, 42, 63, 109, 41, 41, 51, 1, 142, 104, 156, 51, 52, 53, 2, 2, 54, 54, 54, 160, 104, 1, 63, 102, 36, 36, 39, 1, 1, 34, 33, 33, 99, 66, 76, 104, 33, 32, 28, 1, 152, 1, 2, 29, 29, 28, 89, 62, 68, 102, 34, 33, 32, 2, 2, 38, 33, 33, 90, 54, 1, 91, 147, 52, 52, 58, 3, 3, 50, 52, 53, 162, 110, 49, 88, 38, 39, 63, 24, 22, 63, 43, 44, 112, 0, 255, 255, 255, 243, 254, 106, 3, 180, 0, 0, 4, 39, 0, 102, 255, 223, 255, 1, 0, 6, 0, 102, 11, 0, 0, 1, 1, 26, 4, 7, 2, 115, 6, 22, 0, 12, 0, 0, 65, 39, 51, 23, 22, 22, 23, 7, 38, 38, 39, 38, 38, 1, 50, 24, 177, 26, 16, 74, 52, 95, 45, 76, 28, 29, 39, 5, 132, 146, 150, 86, 148, 69, 74, 36, 86, 48, 48, 106, 255, 255, 0, 254, 255, 236, 3, 199, 1, 10, 4, 39, 0, 96, 255, 112, 0, 0, 0, 7, 0, 96, 1, 29, 0, 0, 0, 2, 1, 36, 2, 56, 4, 42, 5, 195, 0, 10, 0, 14, 0, 0, 65, 19, 35, 1, 7, 33, 7, 51, 55, 51, 55, 33, 1, 55, 3, 3, 151, 104, 172, 253, 224, 15, 1, 190, 32, 159, 33, 146, 22, 253, 196, 1, 56, 29, 75, 3, 111, 2, 84, 253, 149, 103, 185, 185, 126, 1, 92, 46, 254, 118, 0, 1, 1, 73, 2, 139, 4, 14, 5, 186, 0, 28, 0, 0, 65, 7, 3, 51, 19, 54, 54, 55, 54, 54, 51, 22, 22, 23, 22, 22, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 34, 6, 7, 2, 78, 122, 139, 166, 97, 16, 39, 24, 19, 43, 25, 40, 45, 10, 10, 1, 3, 78, 166, 84, 5, 15, 25, 25, 87, 66, 78, 110, 41, 5, 172, 1, 252, 224, 2, 51, 26, 44, 15, 11, 12, 1, 37, 28, 29, 68, 31, 254, 35, 1, 252, 57, 110, 43, 43, 53, 1, 81, 57, 0, 0, 1, 0, 113, 255, 236, 4, 168, 5, 198, 0, 63, 0, 0, 65, 55, 33, 55, 33, 55, 33, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 35, 7, 51, 7, 35, 7, 55, 6, 6, 21, 20, 22, 23, 22, 22, 23, 50, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 3, 74, 22, 254, 137, 25, 1, 117, 22, 254, 131, 3, 6, 3, 20, 62, 43, 51, 140, 92, 54, 105, 51, 34, 59, 118, 61, 129, 202, 75, 67, 94, 28, 4, 6, 3, 166, 22, 174, 25, 173, 21, 180, 3, 4, 43, 43, 54, 176, 121, 58, 115, 58, 4, 55, 110, 57, 87, 109, 29, 20, 18, 3, 3, 2, 31, 122, 138, 123, 12, 24, 12, 68, 121, 47, 55, 63, 1, 1, 19, 17, 155, 13, 18, 1, 1, 83, 74, 67, 175, 102, 13, 25, 13, 123, 138, 122, 1, 25, 49, 24, 84, 151, 60, 77, 92, 2, 14, 15, 155, 14, 19, 1, 2, 74, 58, 40, 96, 51, 22, 45, 23, 0, 4, 0, 157, 255, 232, 4, 72, 5, 199, 0, 51, 0, 77, 0, 103, 0, 107, 0, 0, 65, 7, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 3, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 5, 1, 39, 1, 2, 134, 133, 5, 21, 16, 16, 44, 28, 33, 37, 8, 9, 2, 2, 8, 4, 19, 18, 17, 50, 35, 30, 39, 11, 10, 7, 1, 135, 1, 29, 29, 29, 87, 55, 64, 100, 35, 36, 42, 6, 7, 3, 22, 27, 27, 87, 61, 57, 93, 34, 34, 42, 53, 6, 4, 23, 27, 27, 88, 61, 63, 100, 36, 35, 41, 6, 7, 4, 23, 27, 27, 87, 61, 63, 100, 36, 36, 42, 125, 7, 3, 19, 17, 16, 50, 35, 33, 38, 9, 9, 3, 2, 7, 3, 19, 16, 17, 50, 34, 34, 38, 9, 9, 3, 254, 159, 2, 146, 107, 253, 110, 4, 30, 1, 24, 49, 19, 19, 23, 1, 38, 28, 27, 61, 24, 79, 28, 65, 27, 27, 35, 25, 20, 20, 50, 25, 52, 94, 35, 35, 42, 1, 1, 51, 42, 43, 110, 57, 77, 54, 106, 42, 42, 54, 1, 2, 39, 35, 34, 94, 253, 124, 77, 54, 106, 43, 43, 54, 1, 2, 51, 43, 43, 109, 57, 78, 54, 106, 43, 43, 53, 2, 1, 50, 43, 43, 110, 136, 81, 28, 64, 27, 27, 36, 1, 1, 38, 28, 28, 62, 24, 80, 28, 64, 27, 27, 36, 1, 1, 38, 28, 27, 62, 38, 3, 177, 71, 252, 79, 0, 2, 0, 188, 255, 235, 4, 54, 5, 203, 0, 44, 0, 67, 0, 0, 69, 55, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 6, 7, 7, 54, 54, 55, 7, 6, 22, 23, 22, 22, 3, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 2, 221, 10, 65, 76, 17, 18, 3, 9, 15, 87, 163, 66, 66, 88, 11, 5, 4, 21, 27, 27, 90, 64, 45, 76, 33, 27, 47, 19, 43, 49, 10, 83, 52, 103, 54, 20, 54, 103, 52, 3, 15, 30, 44, 43, 142, 27, 69, 4, 17, 17, 9, 26, 16, 14, 32, 19, 27, 27, 5, 4, 2, 2, 5, 8, 49, 37, 37, 93, 21, 158, 4, 50, 40, 39, 102, 57, 88, 43, 126, 78, 78, 183, 101, 42, 57, 111, 44, 44, 55, 2, 2, 18, 18, 15, 41, 25, 54, 138, 72, 254, 32, 12, 13, 1, 176, 1, 12, 13, 17, 92, 160, 60, 61, 73, 2, 214, 1, 138, 31, 80, 35, 19, 32, 10, 8, 8, 1, 2, 35, 24, 25, 53, 19, 42, 66, 119, 52, 53, 89, 0, 4, 0, 12, 0, 0, 4, 197, 5, 192, 0, 9, 0, 47, 0, 79, 0, 83, 0, 0, 97, 19, 35, 3, 3, 35, 3, 51, 19, 19, 1, 7, 6, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 52, 53, 52, 54, 19, 55, 33, 7, 2, 102, 253, 173, 158, 101, 170, 253, 173, 158, 100, 1, 208, 24, 1, 2, 4, 3, 12, 8, 16, 55, 40, 41, 62, 21, 13, 19, 6, 5, 5, 2, 24, 1, 1, 3, 3, 12, 8, 17, 56, 40, 41, 62, 21, 9, 15, 6, 8, 10, 77, 21, 2, 7, 8, 7, 26, 20, 20, 19, 3, 3, 2, 1, 22, 1, 3, 2, 2, 5, 3, 8, 25, 21, 20, 19, 2, 2, 1, 141, 17, 254, 212, 17, 5, 176, 252, 115, 3, 141, 250, 80, 3, 144, 252, 112, 4, 251, 206, 18, 37, 17, 16, 30, 13, 28, 36, 33, 28, 17, 40, 21, 13, 29, 14, 206, 17, 34, 17, 17, 34, 15, 28, 35, 34, 28, 12, 28, 14, 19, 41, 219, 190, 15, 38, 17, 16, 22, 24, 17, 17, 37, 13, 190, 8, 18, 9, 9, 17, 8, 17, 23, 25, 17, 8, 17, 8, 10, 17, 254, 153, 95, 95, 0, 0, 2, 0, 134, 255, 235, 4, 114, 4, 80, 0, 42, 0, 54, 0, 0, 101, 55, 6, 6, 7, 6, 6, 39, 38, 38, 39, 19, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 3, 22, 22, 23, 3, 33, 19, 54, 54, 55, 54, 54, 3, 170, 3, 44, 92, 48, 48, 100, 52, 69, 121, 48, 59, 2, 235, 5, 8, 41, 51, 51, 158, 108, 76, 142, 63, 63, 107, 40, 41, 51, 8, 4, 1, 5, 4, 16, 11, 23, 74, 50, 50, 123, 73, 100, 190, 119, 69, 119, 45, 51, 253, 245, 51, 31, 68, 36, 36, 78, 93, 104, 26, 45, 16, 17, 18, 2, 2, 54, 51, 1, 74, 49, 98, 191, 77, 76, 94, 3, 2, 43, 39, 40, 109, 64, 64, 141, 71, 34, 69, 33, 32, 64, 29, 61, 105, 39, 39, 45, 2, 2, 61, 3, 200, 1, 59, 51, 254, 224, 1, 22, 25, 45, 17, 16, 19, 0, 5, 0, 197, 255, 244, 4, 128, 5, 174, 0, 6, 0, 54, 0, 78, 0, 102, 0, 106, 0, 0, 65, 19, 35, 5, 7, 55, 3, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 1, 183, 118, 19, 254, 192, 21, 198, 94, 3, 80, 3, 36, 32, 32, 82, 43, 48, 91, 36, 36, 46, 1, 1, 12, 13, 10, 27, 17, 30, 52, 20, 19, 26, 1, 2, 40, 34, 35, 87, 45, 49, 98, 39, 39, 49, 2, 1, 16, 16, 12, 31, 19, 25, 45, 17, 18, 22, 170, 3, 26, 20, 19, 47, 24, 22, 39, 15, 15, 15, 2, 4, 26, 19, 20, 47, 24, 21, 40, 15, 15, 15, 32, 2, 23, 16, 16, 41, 21, 20, 34, 12, 13, 11, 2, 3, 22, 16, 17, 41, 21, 21, 35, 12, 11, 11, 253, 84, 2, 146, 107, 253, 110, 2, 232, 2, 198, 102, 121, 50, 253, 231, 216, 49, 72, 24, 24, 23, 1, 1, 25, 26, 26, 79, 52, 26, 48, 20, 15, 25, 10, 14, 35, 22, 22, 56, 34, 52, 74, 24, 24, 23, 1, 1, 26, 26, 26, 80, 56, 31, 54, 22, 16, 26, 10, 13, 33, 20, 20, 51, 254, 225, 26, 39, 14, 13, 14, 12, 11, 12, 36, 24, 25, 40, 13, 14, 12, 11, 12, 11, 35, 1, 27, 22, 36, 13, 12, 14, 12, 11, 11, 32, 21, 22, 36, 13, 12, 13, 12, 12, 10, 32, 254, 189, 3, 177, 71, 252, 79, 0, 5, 0, 119, 255, 244, 4, 136, 5, 188, 0, 73, 0, 121, 0, 145, 0, 169, 0, 173, 0, 0, 65, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 53, 35, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 7, 51, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 1, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 1, 73, 10, 78, 25, 44, 16, 17, 17, 3, 4, 28, 20, 20, 49, 25, 26, 44, 15, 12, 14, 137, 39, 33, 33, 88, 49, 49, 101, 41, 41, 53, 2, 1, 16, 15, 13, 37, 24, 27, 50, 19, 20, 25, 2, 3, 40, 33, 34, 87, 45, 48, 90, 37, 36, 49, 5, 140, 15, 68, 45, 21, 37, 13, 14, 13, 2, 4, 29, 21, 20, 51, 24, 2, 244, 3, 36, 32, 32, 82, 43, 48, 91, 36, 36, 46, 1, 1, 10, 11, 10, 29, 19, 30, 52, 20, 19, 26, 1, 2, 40, 34, 35, 87, 45, 49, 98, 39, 39, 49, 2, 1, 14, 14, 12, 33, 21, 25, 45, 17, 18, 22, 170, 3, 26, 20, 19, 47, 24, 22, 39, 15, 15, 15, 2, 4, 26, 19, 20, 47, 24, 21, 40, 15, 15, 15, 32, 2, 23, 16, 16, 41, 21, 20, 34, 12, 13, 11, 2, 3, 22, 16, 17, 41, 21, 21, 35, 12, 11, 11, 253, 112, 2, 146, 107, 253, 110, 4, 135, 104, 1, 1, 9, 11, 11, 37, 27, 27, 40, 13, 13, 13, 1, 13, 14, 11, 33, 23, 52, 79, 26, 26, 27, 1, 1, 25, 26, 27, 82, 56, 30, 52, 20, 17, 26, 9, 12, 31, 20, 20, 50, 33, 51, 74, 24, 24, 23, 1, 24, 25, 25, 75, 51, 43, 41, 11, 11, 11, 33, 22, 28, 39, 13, 12, 13, 1, 253, 138, 49, 72, 24, 24, 23, 1, 1, 25, 26, 26, 79, 52, 24, 44, 19, 17, 29, 11, 14, 35, 22, 22, 56, 34, 52, 74, 24, 24, 23, 1, 1, 26, 26, 26, 80, 56, 28, 52, 21, 18, 29, 11, 13, 33, 20, 20, 51, 254, 225, 26, 39, 14, 13, 14, 12, 11, 12, 36, 24, 25, 40, 13, 14, 12, 11, 12, 11, 35, 1, 27, 22, 36, 13, 12, 14, 12, 11, 11, 32, 21, 22, 36, 13, 12, 13, 12, 12, 11, 31, 254, 180, 3, 177, 71, 252, 79, 0, 5, 0, 105, 255, 248, 4, 117, 5, 177, 0, 45, 0, 93, 0, 117, 0, 141, 0, 145, 0, 0, 83, 23, 54, 54, 23, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 34, 6, 7, 55, 33, 55, 33, 1, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 148, 116, 28, 57, 33, 29, 46, 13, 12, 9, 2, 3, 22, 17, 18, 51, 31, 49, 56, 4, 133, 2, 41, 32, 33, 84, 48, 57, 99, 37, 38, 45, 3, 3, 28, 27, 27, 80, 51, 30, 59, 28, 53, 1, 47, 21, 254, 92, 3, 116, 3, 36, 32, 32, 82, 43, 48, 91, 36, 36, 46, 1, 1, 10, 10, 10, 30, 19, 30, 52, 20, 19, 26, 1, 2, 40, 34, 35, 87, 45, 49, 98, 39, 39, 49, 2, 1, 16, 16, 12, 31, 19, 25, 45, 17, 18, 22, 170, 3, 26, 20, 19, 47, 24, 22, 39, 15, 15, 15, 2, 4, 26, 19, 20, 47, 24, 21, 40, 15, 15, 15, 32, 2, 23, 16, 16, 41, 21, 20, 34, 12, 13, 11, 2, 3, 22, 16, 17, 41, 21, 20, 35, 12, 11, 12, 253, 111, 2, 146, 107, 253, 110, 4, 74, 30, 17, 21, 1, 20, 18, 15, 40, 25, 28, 47, 18, 19, 22, 1, 43, 47, 1, 49, 76, 26, 27, 28, 1, 1, 35, 32, 33, 93, 58, 50, 82, 29, 29, 33, 13, 12, 154, 119, 252, 99, 49, 72, 24, 24, 23, 1, 1, 25, 26, 26, 79, 52, 24, 44, 18, 18, 29, 11, 14, 35, 22, 22, 56, 34, 52, 74, 24, 24, 23, 1, 1, 26, 26, 26, 80, 56, 30, 54, 23, 15, 27, 10, 13, 33, 20, 20, 51, 254, 225, 26, 39, 14, 13, 14, 12, 11, 12, 36, 24, 25, 40, 13, 14, 12, 11, 12, 11, 35, 1, 27, 22, 36, 13, 12, 14, 12, 11, 11, 32, 21, 22, 36, 13, 12, 13, 12, 11, 11, 31, 254, 184, 3, 177, 71, 252, 79, 0, 0, 5, 0, 183, 255, 244, 4, 111, 5, 177, 0, 6, 0, 54, 0, 78, 0, 102, 0, 106, 0, 0, 65, 55, 33, 7, 33, 1, 51, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 2, 235, 15, 253, 227, 21, 1, 135, 254, 104, 155, 3, 26, 3, 36, 32, 32, 82, 43, 48, 91, 36, 36, 46, 1, 1, 9, 10, 10, 30, 20, 30, 52, 20, 19, 26, 1, 2, 40, 34, 35, 87, 45, 49, 98, 39, 39, 49, 2, 1, 15, 15, 12, 32, 20, 25, 45, 17, 18, 22, 170, 3, 26, 20, 19, 47, 24, 22, 39, 15, 15, 15, 2, 4, 26, 19, 20, 47, 24, 21, 40, 15, 15, 15, 32, 2, 23, 16, 16, 41, 21, 20, 34, 12, 13, 11, 2, 3, 22, 16, 17, 41, 21, 21, 35, 12, 11, 11, 253, 65, 2, 146, 107, 253, 110, 5, 87, 90, 117, 253, 175, 219, 49, 72, 24, 24, 23, 1, 1, 25, 26, 26, 79, 52, 23, 42, 18, 19, 30, 12, 14, 35, 22, 22, 56, 34, 52, 74, 24, 24, 23, 1, 1, 26, 26, 26, 80, 56, 29, 53, 22, 16, 28, 11, 13, 33, 20, 20, 51, 254, 225, 26, 39, 14, 13, 14, 12, 11, 12, 36, 24, 25, 40, 13, 14, 12, 11, 12, 11, 35, 1, 27, 22, 36, 13, 12, 14, 12, 11, 11, 32, 21, 22, 36, 13, 12, 13, 12, 12, 11, 31, 254, 189, 3, 177, 71, 252, 79, 0, 0, 2, 0, 97, 255, 233, 4, 72, 5, 237, 0, 53, 0, 82, 0, 0, 65, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 38, 38, 7, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 2, 120, 109, 181, 67, 68, 85, 13, 2, 10, 37, 49, 48, 158, 110, 87, 147, 60, 59, 93, 34, 34, 44, 11, 9, 11, 8, 9, 9, 50, 48, 49, 150, 108, 82, 155, 75, 2, 37, 76, 38, 33, 69, 35, 58, 89, 32, 31, 40, 11, 10, 4, 4, 53, 150, 78, 42, 89, 37, 36, 46, 1, 9, 8, 27, 21, 21, 58, 39, 39, 99, 61, 76, 94, 24, 24, 10, 7, 3, 10, 56, 45, 44, 121, 3, 254, 3, 76, 67, 68, 183, 103, 24, 100, 187, 73, 73, 89, 3, 2, 53, 48, 47, 129, 73, 73, 156, 74, 59, 80, 184, 91, 91, 169, 65, 65, 79, 2, 2, 33, 36, 152, 13, 23, 8, 7, 7, 1, 2, 47, 37, 38, 97, 52, 52, 106, 46, 69, 75, 149, 2, 29, 26, 27, 77, 49, 65, 50, 109, 52, 53, 94, 35, 36, 40, 2, 3, 71, 55, 54, 131, 62, 23, 69, 125, 48, 48, 55, 0, 0, 1, 0, 34, 255, 43, 4, 140, 5, 176, 0, 7, 0, 0, 69, 1, 33, 1, 51, 19, 33, 3, 3, 135, 1, 5, 252, 155, 254, 251, 181, 237, 1, 251, 237, 213, 6, 133, 249, 123, 5, 237, 250, 19, 0, 1, 255, 154, 254, 243, 4, 193, 5, 176, 0, 12, 0, 0, 65, 55, 1, 33, 55, 33, 7, 1, 1, 7, 33, 55, 33, 3, 61, 2, 254, 63, 3, 40, 27, 252, 5, 25, 1, 210, 253, 53, 26, 4, 69, 27, 252, 157, 2, 66, 26, 2, 188, 152, 135, 253, 46, 253, 51, 151, 152, 0, 0, 1, 0, 59, 0, 0, 5, 8, 5, 176, 0, 10, 0, 0, 65, 3, 33, 7, 51, 19, 51, 1, 35, 1, 7, 1, 217, 84, 254, 210, 28, 184, 129, 138, 3, 10, 192, 253, 193, 46, 1, 71, 1, 199, 154, 253, 140, 5, 176, 251, 170, 110, 0, 3, 0, 50, 0, 222, 4, 124, 3, 224, 0, 73, 0, 111, 0, 149, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 6, 5, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 38, 54, 4, 118, 4, 2, 2, 3, 5, 19, 15, 27, 93, 70, 55, 89, 37, 14, 25, 12, 20, 35, 16, 7, 20, 14, 9, 20, 11, 30, 79, 49, 75, 113, 39, 17, 28, 11, 13, 17, 3, 4, 2, 1, 3, 4, 19, 16, 26, 93, 72, 54, 89, 37, 20, 35, 16, 13, 25, 11, 5, 15, 9, 11, 27, 16, 29, 78, 50, 75, 114, 39, 22, 34, 12, 8, 11, 115, 4, 2, 6, 5, 6, 18, 12, 22, 69, 51, 38, 63, 22, 4, 7, 4, 16, 16, 1, 4, 8, 35, 25, 5, 11, 6, 32, 80, 43, 45, 50, 11, 4, 5, 1, 2, 1, 252, 171, 4, 2, 10, 7, 6, 15, 9, 22, 69, 50, 38, 63, 23, 4, 7, 3, 15, 17, 1, 4, 7, 33, 23, 6, 13, 6, 33, 80, 42, 46, 50, 11, 5, 6, 1, 1, 2, 81, 43, 26, 55, 27, 33, 65, 29, 51, 68, 1, 1, 45, 36, 13, 29, 15, 26, 55, 26, 26, 53, 25, 15, 30, 14, 34, 43, 2, 3, 65, 52, 23, 54, 27, 36, 73, 36, 43, 25, 52, 26, 36, 69, 30, 53, 68, 1, 1, 45, 36, 19, 45, 23, 19, 38, 19, 20, 40, 19, 22, 43, 18, 35, 44, 1, 2, 66, 54, 30, 71, 37, 28, 57, 71, 43, 18, 39, 19, 24, 46, 21, 38, 47, 2, 1, 53, 38, 6, 14, 6, 33, 68, 28, 28, 31, 72, 34, 7, 14, 7, 38, 52, 50, 36, 15, 34, 17, 22, 44, 77, 43, 23, 50, 25, 18, 35, 16, 37, 47, 2, 2, 52, 37, 7, 13, 7, 33, 68, 28, 28, 29, 70, 33, 8, 16, 8, 39, 52, 50, 36, 17, 38, 19, 21, 40, 0, 1, 0, 84, 254, 72, 4, 69, 6, 47, 0, 40, 0, 0, 69, 49, 19, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 22, 54, 55, 54, 54, 2, 47, 198, 6, 33, 27, 26, 74, 48, 23, 44, 22, 33, 35, 73, 37, 83, 131, 46, 47, 57, 9, 198, 5, 23, 20, 20, 60, 41, 24, 49, 23, 28, 29, 57, 31, 81, 125, 45, 44, 54, 89, 5, 27, 44, 78, 29, 28, 33, 7, 6, 143, 8, 13, 1, 1, 55, 49, 49, 134, 78, 250, 229, 35, 71, 29, 29, 36, 10, 6, 146, 9, 11, 1, 52, 48, 47, 129, 0, 0, 2, 0, 161, 0, 0, 4, 52, 5, 176, 0, 5, 0, 13, 0, 0, 65, 1, 1, 51, 1, 1, 7, 23, 19, 1, 7, 39, 3, 1, 2, 156, 254, 5, 1, 13, 138, 1, 252, 254, 242, 85, 6, 166, 254, 161, 28, 5, 166, 1, 95, 5, 176, 253, 49, 253, 31, 2, 205, 2, 227, 155, 51, 253, 255, 253, 238, 53, 51, 2, 0, 2, 19, 0, 0, 22, 255, 240, 0, 8, 4, 174, 4, 7, 0, 16, 0, 37, 0, 51, 0, 67, 0, 73, 0, 79, 0, 85, 0, 91, 0, 100, 0, 104, 0, 108, 0, 112, 0, 116, 0, 120, 0, 124, 0, 139, 0, 143, 0, 147, 0, 151, 0, 155, 0, 159, 0, 163, 0, 0, 65, 7, 6, 6, 7, 6, 38, 39, 38, 38, 53, 55, 54, 54, 55, 50, 22, 23, 35, 19, 51, 22, 22, 23, 22, 22, 7, 6, 6, 7, 22, 22, 23, 20, 6, 7, 6, 6, 39, 55, 54, 38, 39, 34, 6, 7, 7, 6, 22, 23, 50, 54, 37, 55, 51, 7, 6, 6, 7, 6, 38, 39, 23, 22, 22, 51, 50, 54, 1, 23, 55, 7, 55, 35, 5, 55, 55, 35, 7, 39, 1, 51, 55, 23, 55, 7, 5, 55, 7, 51, 55, 39, 1, 39, 7, 55, 54, 54, 55, 54, 38, 3, 51, 55, 35, 23, 51, 55, 35, 5, 51, 55, 35, 19, 51, 55, 35, 23, 51, 55, 35, 5, 51, 55, 35, 1, 7, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 5, 55, 35, 7, 23, 55, 7, 7, 19, 55, 7, 7, 5, 55, 35, 7, 23, 55, 7, 7, 19, 55, 7, 7, 1, 214, 2, 5, 68, 54, 29, 46, 17, 15, 17, 3, 5, 69, 54, 56, 65, 136, 130, 56, 88, 19, 39, 16, 15, 19, 1, 2, 31, 20, 20, 23, 1, 20, 16, 16, 40, 213, 8, 2, 25, 35, 37, 42, 8, 8, 2, 25, 36, 37, 42, 2, 1, 34, 49, 26, 7, 55, 45, 50, 53, 2, 47, 2, 14, 28, 25, 32, 252, 97, 165, 17, 110, 25, 60, 3, 66, 168, 32, 57, 25, 101, 253, 30, 59, 20, 101, 18, 168, 3, 89, 104, 17, 59, 31, 160, 254, 101, 72, 23, 64, 23, 42, 5, 3, 25, 50, 148, 16, 148, 198, 147, 16, 147, 254, 70, 146, 16, 146, 31, 147, 16, 148, 198, 148, 15, 147, 254, 70, 147, 15, 146, 1, 89, 18, 46, 12, 25, 11, 10, 16, 2, 2, 8, 7, 8, 20, 9, 254, 3, 30, 60, 29, 23, 30, 60, 29, 131, 29, 59, 29, 3, 230, 29, 58, 30, 23, 29, 58, 29, 130, 29, 58, 30, 2, 35, 61, 53, 66, 1, 1, 20, 17, 17, 44, 26, 62, 52, 66, 1, 69, 233, 1, 47, 1, 7, 9, 9, 30, 23, 28, 29, 14, 10, 30, 23, 24, 33, 10, 11, 11, 118, 64, 31, 48, 1, 49, 33, 63, 32, 48, 1, 49, 10, 208, 209, 43, 50, 2, 2, 49, 48, 2, 23, 29, 32, 254, 80, 1, 66, 1, 112, 176, 1, 175, 112, 1, 3, 30, 94, 1, 66, 1, 65, 1, 94, 158, 1, 253, 240, 1, 96, 1, 4, 21, 26, 21, 19, 1, 209, 66, 66, 66, 66, 66, 252, 2, 65, 65, 65, 65, 65, 2, 39, 86, 1, 1, 5, 6, 5, 17, 14, 12, 14, 4, 3, 2, 1, 166, 140, 140, 207, 140, 1, 140, 1, 160, 140, 1, 140, 207, 140, 140, 207, 140, 1, 140, 1, 160, 140, 1, 140, 0, 5, 0, 1, 253, 213, 4, 161, 8, 98, 0, 3, 0, 47, 0, 51, 0, 55, 0, 59, 0, 0, 65, 9, 2, 5, 35, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 35, 34, 6, 7, 35, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 21, 21, 35, 53, 19, 21, 51, 53, 3, 21, 51, 53, 2, 84, 253, 173, 2, 83, 2, 77, 254, 26, 202, 8, 11, 10, 35, 29, 10, 27, 12, 12, 17, 32, 37, 24, 41, 2, 203, 1, 43, 37, 36, 97, 56, 64, 102, 35, 34, 37, 23, 18, 18, 45, 22, 11, 17, 6, 6, 6, 202, 94, 4, 6, 4, 6, 82, 252, 49, 252, 49, 3, 207, 251, 48, 50, 19, 19, 40, 36, 13, 39, 24, 23, 51, 26, 52, 64, 48, 55, 70, 101, 33, 32, 30, 39, 36, 37, 103, 64, 41, 64, 28, 29, 55, 31, 16, 29, 15, 16, 39, 116, 170, 170, 252, 172, 4, 4, 10, 137, 4, 4, 0, 0, 2, 1, 116, 4, 228, 4, 62, 6, 248, 0, 6, 0, 44, 0, 0, 65, 3, 35, 1, 51, 55, 23, 19, 39, 6, 6, 7, 6, 6, 7, 6, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 62, 239, 146, 254, 183, 177, 219, 161, 144, 70, 7, 19, 13, 12, 29, 18, 27, 47, 23, 23, 48, 27, 38, 59, 22, 23, 28, 6, 77, 5, 17, 12, 11, 31, 19, 27, 47, 23, 22, 47, 28, 37, 60, 22, 21, 28, 4, 228, 1, 6, 254, 250, 175, 175, 1, 255, 21, 18, 34, 13, 11, 15, 1, 2, 22, 15, 14, 23, 32, 25, 26, 64, 33, 19, 16, 33, 14, 13, 18, 1, 1, 23, 14, 14, 25, 32, 25, 25, 63, 0, 0, 2, 1, 96, 4, 228, 5, 66, 6, 206, 0, 6, 0, 34, 0, 0, 65, 3, 35, 1, 55, 55, 23, 55, 51, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 4, 45, 222, 184, 254, 201, 176, 223, 160, 155, 118, 10, 28, 52, 21, 20, 26, 2, 3, 45, 35, 36, 83, 35, 15, 14, 44, 21, 20, 27, 2, 3, 30, 20, 21, 44, 17, 4, 228, 1, 6, 254, 250, 1, 183, 184, 138, 60, 5, 20, 17, 16, 48, 32, 46, 59, 17, 17, 13, 2, 92, 1, 2, 6, 6, 24, 22, 23, 25, 7, 7, 4, 2, 0, 2, 0, 207, 4, 228, 4, 72, 6, 149, 0, 6, 0, 10, 0, 0, 65, 3, 35, 1, 51, 55, 23, 37, 3, 35, 19, 4, 72, 237, 149, 254, 185, 201, 192, 137, 254, 87, 92, 189, 150, 4, 228, 1, 6, 254, 250, 157, 157, 174, 1, 3, 254, 253, 0, 2, 1, 110, 4, 228, 5, 144, 6, 149, 0, 6, 0, 10, 0, 0, 65, 1, 51, 55, 23, 51, 3, 37, 3, 51, 19, 2, 183, 254, 183, 204, 191, 136, 183, 237, 1, 122, 183, 146, 240, 5, 234, 254, 250, 157, 157, 1, 6, 171, 254, 253, 1, 3, 0, 2, 1, 205, 4, 223, 4, 20, 6, 138, 0, 25, 0, 29, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 50, 54, 55, 54, 54, 39, 39, 35, 23, 4, 20, 148, 7, 23, 16, 22, 59, 36, 33, 51, 16, 14, 13, 1, 146, 1, 49, 39, 39, 98, 51, 52, 105, 43, 42, 58, 230, 145, 163, 195, 5, 177, 2, 25, 38, 14, 20, 19, 1, 1, 16, 17, 14, 41, 27, 2, 57, 80, 25, 25, 23, 1, 22, 25, 24, 81, 78, 197, 198, 0, 1, 2, 76, 4, 142, 3, 119, 6, 61, 0, 12, 0, 0, 65, 7, 51, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 2, 94, 18, 180, 21, 12, 50, 36, 104, 34, 59, 23, 23, 31, 5, 13, 127, 120, 63, 108, 53, 87, 29, 69, 39, 38, 84, 0, 2, 255, 199, 0, 0, 4, 0, 4, 141, 0, 7, 0, 12, 0, 0, 65, 19, 51, 3, 35, 1, 51, 19, 55, 19, 55, 23, 19, 3, 24, 57, 175, 254, 161, 253, 102, 192, 156, 84, 247, 35, 13, 91, 1, 23, 254, 233, 4, 141, 251, 115, 1, 23, 151, 1, 187, 62, 61, 254, 68, 0, 0, 3, 0, 97, 255, 255, 4, 54, 4, 141, 0, 26, 0, 41, 0, 56, 0, 0, 115, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 19, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 19, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 97, 1, 198, 81, 162, 66, 65, 84, 5, 2, 22, 22, 23, 67, 43, 45, 81, 32, 31, 41, 3, 6, 66, 55, 56, 142, 70, 254, 122, 73, 1, 23, 42, 72, 26, 25, 25, 6, 7, 55, 39, 39, 94, 46, 249, 90, 60, 230, 39, 78, 30, 30, 33, 6, 7, 51, 37, 37, 87, 43, 1, 37, 41, 41, 131, 92, 45, 83, 34, 33, 51, 14, 17, 45, 31, 30, 79, 52, 84, 116, 37, 36, 34, 2, 1, 253, 133, 1, 2, 25, 23, 23, 69, 45, 52, 73, 23, 23, 21, 1, 2, 8, 1, 85, 1, 1, 17, 18, 19, 63, 47, 48, 67, 21, 21, 19, 1, 0, 1, 0, 89, 255, 237, 4, 55, 4, 160, 0, 54, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 51, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 3, 231, 176, 20, 58, 40, 40, 102, 63, 79, 93, 25, 26, 9, 9, 15, 12, 57, 47, 46, 131, 84, 57, 84, 28, 28, 30, 5, 178, 5, 59, 51, 52, 143, 90, 119, 195, 73, 73, 93, 16, 13, 8, 12, 21, 19, 64, 44, 46, 122, 75, 95, 168, 67, 66, 92, 1, 122, 2, 57, 92, 31, 32, 32, 3, 3, 75, 55, 54, 142, 66, 103, 74, 145, 56, 56, 68, 3, 2, 37, 32, 33, 89, 54, 87, 145, 53, 52, 60, 2, 3, 89, 76, 77, 201, 110, 100, 70, 137, 61, 58, 98, 37, 38, 46, 2, 3, 53, 52, 51, 148, 0, 2, 0, 73, 0, 0, 4, 61, 4, 141, 0, 15, 0, 31, 0, 0, 115, 33, 50, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 37, 23, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 39, 73, 1, 97, 123, 219, 86, 85, 112, 16, 7, 11, 54, 59, 60, 181, 115, 254, 171, 155, 182, 85, 116, 34, 34, 23, 9, 8, 13, 78, 59, 60, 156, 91, 149, 80, 73, 72, 204, 123, 65, 112, 196, 74, 74, 88, 3, 1, 153, 1, 4, 66, 54, 54, 139, 77, 64, 90, 148, 53, 53, 59, 1, 0, 1, 0, 89, 0, 0, 4, 97, 4, 141, 0, 11, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 33, 55, 33, 19, 3, 156, 27, 253, 209, 58, 2, 131, 28, 252, 195, 203, 3, 67, 27, 253, 117, 66, 2, 14, 152, 1, 78, 153, 251, 115, 151, 1, 119, 0, 0, 1, 0, 119, 0, 0, 4, 128, 4, 141, 0, 9, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 51, 19, 3, 181, 27, 253, 212, 63, 2, 129, 28, 252, 194, 203, 188, 87, 1, 243, 153, 1, 104, 153, 251, 115, 1, 243, 0, 1, 0, 100, 255, 239, 4, 71, 4, 160, 0, 55, 0, 0, 101, 19, 33, 7, 33, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 23, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 3, 221, 65, 254, 67, 26, 1, 13, 45, 21, 45, 22, 42, 88, 47, 81, 105, 28, 28, 15, 9, 12, 12, 57, 47, 46, 131, 87, 53, 83, 29, 27, 34, 7, 176, 8, 64, 52, 52, 141, 85, 122, 196, 72, 73, 91, 16, 11, 12, 42, 54, 53, 169, 115, 63, 126, 59, 59, 106, 150, 1, 185, 144, 239, 15, 23, 8, 16, 11, 2, 3, 75, 58, 57, 140, 69, 87, 76, 147, 58, 57, 69, 3, 2, 33, 30, 28, 78, 48, 1, 85, 135, 48, 48, 53, 2, 3, 90, 77, 77, 204, 112, 84, 107, 197, 76, 77, 95, 3, 2, 15, 20, 19, 65, 0, 1, 0, 46, 0, 0, 4, 62, 4, 141, 0, 11, 0, 0, 97, 19, 35, 3, 33, 19, 35, 3, 51, 19, 33, 3, 3, 115, 203, 174, 90, 254, 22, 90, 174, 202, 174, 86, 1, 234, 87, 4, 141, 253, 253, 2, 3, 251, 115, 1, 242, 254, 14, 0, 0, 1, 0, 106, 0, 0, 4, 84, 4, 140, 0, 11, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 33, 55, 1, 52, 28, 1, 50, 147, 254, 207, 28, 3, 31, 29, 254, 198, 146, 1, 57, 29, 4, 140, 161, 252, 181, 160, 160, 3, 75, 161, 0, 1, 0, 104, 255, 238, 4, 43, 4, 141, 0, 27, 0, 0, 65, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 3, 113, 132, 8, 44, 33, 34, 89, 53, 54, 77, 25, 25, 21, 3, 185, 2, 51, 47, 47, 137, 89, 89, 155, 60, 60, 78, 13, 135, 4, 141, 252, 235, 50, 89, 33, 33, 38, 1, 1, 35, 31, 31, 84, 51, 1, 87, 140, 50, 50, 56, 1, 2, 57, 52, 52, 145, 87, 3, 22, 0, 1, 0, 70, 0, 0, 4, 167, 4, 141, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 7, 19, 35, 3, 51, 19, 1, 234, 1, 56, 205, 254, 132, 2, 52, 237, 254, 61, 145, 95, 181, 202, 181, 64, 2, 6, 253, 250, 2, 125, 2, 16, 254, 104, 135, 2, 31, 251, 115, 1, 113, 0, 1, 0, 98, 0, 0, 3, 228, 4, 141, 0, 5, 0, 0, 101, 19, 35, 3, 33, 55, 1, 60, 176, 191, 203, 3, 103, 27, 151, 3, 246, 251, 115, 151, 0, 1, 0, 46, 0, 0, 4, 125, 4, 141, 0, 12, 0, 0, 65, 3, 35, 3, 51, 19, 19, 51, 1, 3, 51, 19, 35, 2, 86, 112, 238, 202, 172, 166, 111, 128, 1, 60, 165, 172, 203, 240, 2, 90, 2, 51, 251, 115, 3, 184, 253, 134, 2, 114, 252, 80, 4, 141, 0, 1, 0, 84, 0, 0, 4, 83, 4, 141, 0, 9, 0, 0, 97, 19, 35, 3, 1, 35, 3, 51, 19, 1, 3, 137, 202, 172, 148, 254, 175, 164, 202, 173, 149, 1, 80, 4, 141, 252, 139, 3, 117, 251, 115, 3, 116, 252, 140, 0, 0, 2, 0, 113, 255, 237, 4, 50, 4, 160, 0, 31, 0, 63, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 52, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 35, 8, 7, 8, 17, 18, 62, 45, 46, 121, 77, 119, 191, 70, 70, 87, 15, 8, 7, 10, 18, 17, 62, 46, 45, 120, 76, 119, 191, 70, 70, 87, 156, 9, 11, 51, 44, 44, 127, 85, 53, 77, 26, 26, 30, 7, 7, 5, 9, 11, 54, 45, 44, 127, 83, 53, 77, 26, 26, 29, 7, 7, 1, 2, 37, 66, 67, 135, 63, 62, 108, 41, 40, 48, 2, 3, 96, 80, 81, 207, 107, 69, 66, 134, 61, 62, 107, 40, 41, 47, 2, 3, 95, 80, 80, 205, 182, 69, 72, 150, 61, 61, 76, 3, 2, 39, 32, 31, 82, 45, 45, 91, 42, 68, 71, 149, 60, 60, 75, 3, 2, 37, 31, 31, 80, 44, 45, 91, 0, 0, 2, 0, 72, 255, 54, 4, 79, 4, 160, 0, 31, 0, 57, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 23, 55, 39, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 4, 60, 8, 11, 40, 52, 52, 167, 116, 121, 201, 75, 76, 95, 16, 8, 12, 41, 52, 51, 167, 116, 31, 60, 31, 221, 132, 188, 45, 77, 32, 59, 72, 158, 10, 12, 60, 48, 49, 136, 87, 83, 104, 28, 28, 13, 8, 10, 12, 62, 49, 49, 136, 86, 83, 104, 27, 27, 13, 2, 42, 68, 105, 199, 78, 78, 96, 3, 3, 92, 79, 79, 207, 112, 67, 105, 200, 78, 79, 98, 2, 1, 7, 5, 199, 103, 167, 29, 69, 39, 73, 177, 164, 71, 77, 150, 58, 59, 70, 3, 3, 77, 60, 59, 143, 68, 70, 76, 149, 59, 58, 70, 3, 3, 76, 58, 59, 142, 0, 2, 0, 35, 0, 0, 4, 3, 4, 141, 0, 20, 0, 35, 0, 0, 65, 19, 51, 53, 3, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 51, 19, 55, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 2, 58, 173, 194, 199, 56, 99, 38, 38, 48, 4, 6, 59, 54, 54, 143, 78, 254, 110, 202, 181, 78, 26, 72, 244, 45, 79, 29, 28, 28, 6, 7, 56, 40, 41, 98, 49, 1, 193, 254, 63, 12, 1, 226, 22, 59, 39, 38, 100, 65, 87, 128, 43, 42, 44, 3, 1, 251, 115, 1, 193, 151, 1, 156, 1, 2, 26, 25, 25, 74, 49, 54, 79, 26, 26, 26, 1, 0, 0, 1, 0, 94, 255, 239, 4, 59, 4, 158, 0, 88, 0, 0, 65, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 54, 7, 59, 41, 42, 96, 43, 53, 95, 35, 35, 41, 1, 182, 2, 73, 60, 60, 155, 84, 51, 108, 52, 52, 92, 36, 36, 44, 3, 4, 61, 51, 25, 59, 30, 32, 67, 33, 23, 58, 29, 29, 55, 20, 21, 21, 3, 6, 56, 40, 40, 94, 42, 49, 85, 31, 30, 35, 1, 181, 2, 65, 54, 55, 145, 81, 76, 161, 67, 68, 89, 4, 4, 68, 56, 27, 62, 32, 33, 69, 32, 20, 43, 22, 19, 38, 17, 36, 42, 1, 49, 51, 66, 19, 20, 16, 1, 1, 24, 26, 25, 81, 58, 1, 91, 136, 45, 46, 47, 1, 1, 14, 16, 16, 52, 36, 36, 95, 60, 78, 116, 43, 21, 34, 14, 15, 24, 10, 7, 16, 10, 10, 28, 19, 18, 50, 33, 49, 68, 21, 21, 17, 1, 1, 25, 25, 25, 76, 52, 1, 85, 132, 45, 45, 48, 2, 1, 36, 40, 41, 126, 87, 80, 115, 40, 20, 33, 14, 14, 22, 10, 6, 12, 8, 7, 17, 10, 22, 67, 0, 0, 1, 0, 161, 0, 0, 4, 170, 4, 141, 0, 7, 0, 0, 65, 55, 33, 7, 33, 3, 51, 19, 4, 143, 27, 252, 18, 27, 1, 155, 176, 184, 175, 3, 244, 153, 153, 252, 12, 3, 244, 0, 0, 1, 0, 134, 255, 238, 4, 109, 4, 141, 0, 29, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 4, 109, 179, 134, 10, 51, 38, 39, 100, 58, 55, 82, 26, 26, 21, 6, 131, 177, 132, 8, 49, 50, 50, 143, 86, 93, 166, 66, 66, 87, 13, 4, 141, 252, 243, 57, 93, 33, 33, 35, 2, 1, 39, 33, 33, 90, 53, 3, 13, 252, 244, 88, 146, 52, 53, 60, 2, 2, 56, 53, 53, 150, 93, 0, 0, 1, 0, 185, 0, 0, 4, 200, 4, 141, 0, 8, 0, 0, 65, 3, 35, 19, 51, 1, 35, 1, 7, 2, 11, 151, 187, 232, 170, 2, 125, 205, 254, 73, 50, 1, 44, 3, 97, 251, 115, 4, 141, 252, 177, 112, 0, 1, 0, 145, 0, 0, 4, 252, 4, 141, 0, 18, 0, 0, 65, 3, 35, 19, 51, 1, 55, 23, 19, 51, 1, 35, 3, 7, 39, 3, 35, 1, 7, 1, 56, 4, 163, 23, 156, 1, 35, 40, 5, 33, 155, 1, 172, 172, 254, 36, 4, 27, 150, 254, 230, 39, 1, 185, 2, 212, 251, 115, 2, 215, 100, 101, 253, 42, 4, 141, 253, 46, 101, 99, 2, 212, 253, 45, 99, 0, 0, 1, 255, 238, 0, 0, 4, 159, 4, 141, 0, 11, 0, 0, 65, 3, 35, 1, 1, 51, 1, 19, 51, 1, 1, 39, 2, 93, 198, 201, 1, 23, 254, 9, 228, 1, 105, 210, 202, 254, 223, 1, 233, 226, 2, 219, 1, 178, 253, 200, 253, 171, 1, 186, 254, 70, 2, 65, 2, 75, 1, 0, 0, 1, 0, 178, 0, 0, 4, 199, 4, 141, 0, 10, 0, 0, 65, 3, 35, 1, 3, 51, 19, 1, 35, 1, 7, 2, 51, 190, 195, 1, 39, 75, 183, 68, 2, 62, 218, 254, 139, 45, 2, 133, 2, 8, 253, 30, 254, 85, 1, 139, 3, 2, 253, 246, 62, 0, 0, 1, 0, 85, 0, 0, 4, 98, 4, 141, 0, 9, 0, 0, 101, 1, 55, 33, 7, 33, 1, 7, 33, 55, 1, 83, 2, 252, 19, 252, 178, 24, 2, 105, 253, 5, 21, 3, 111, 24, 151, 3, 117, 129, 153, 252, 144, 132, 151, 0, 0, 2, 1, 220, 4, 223, 4, 15, 7, 2, 0, 25, 0, 59, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 37, 23, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 7, 50, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 4, 15, 141, 8, 27, 18, 21, 53, 32, 31, 48, 16, 14, 15, 1, 140, 1, 46, 38, 37, 95, 50, 52, 101, 41, 41, 55, 254, 177, 133, 6, 26, 55, 23, 22, 30, 1, 1, 26, 22, 23, 58, 30, 30, 56, 21, 12, 12, 50, 25, 13, 22, 8, 8, 8, 1, 3, 36, 23, 24, 48, 16, 5, 177, 2, 27, 42, 14, 16, 16, 1, 15, 15, 14, 43, 28, 2, 56, 78, 25, 26, 24, 1, 1, 23, 25, 25, 80, 73, 1, 63, 4, 16, 14, 13, 42, 32, 31, 44, 15, 15, 19, 5, 5, 3, 1, 81, 1, 4, 3, 7, 6, 6, 16, 11, 23, 24, 5, 6, 3, 1, 0, 0, 2, 1, 205, 4, 223, 4, 20, 6, 138, 0, 25, 0, 29, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 50, 54, 55, 54, 54, 3, 7, 55, 55, 4, 20, 148, 7, 23, 16, 22, 59, 36, 33, 51, 16, 14, 13, 1, 146, 1, 49, 39, 39, 98, 51, 52, 105, 43, 42, 58, 198, 145, 113, 195, 5, 177, 2, 25, 38, 14, 20, 19, 1, 1, 16, 17, 14, 41, 27, 2, 57, 80, 25, 25, 23, 1, 22, 25, 24, 81, 1, 19, 198, 1, 196, 0, 1, 1, 52, 2, 139, 3, 186, 3, 34, 0, 3, 0, 0, 65, 55, 33, 7, 3, 159, 27, 253, 149, 27, 2, 139, 151, 151, 0, 3, 2, 52, 4, 63, 4, 76, 6, 113, 0, 3, 0, 27, 0, 51, 0, 0, 65, 7, 51, 55, 1, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 3, 122, 173, 137, 246, 253, 232, 26, 22, 22, 59, 33, 35, 61, 23, 22, 27, 23, 21, 21, 58, 34, 36, 62, 23, 24, 28, 83, 13, 13, 11, 31, 19, 16, 30, 11, 10, 12, 14, 11, 12, 29, 18, 17, 30, 11, 11, 13, 6, 113, 182, 182, 254, 107, 34, 58, 21, 21, 23, 27, 24, 23, 61, 35, 33, 60, 22, 22, 25, 28, 24, 24, 63, 34, 18, 31, 12, 12, 15, 13, 11, 11, 30, 15, 19, 31, 11, 13, 13, 12, 10, 12, 28, 0, 0, 2, 2, 69, 4, 130, 4, 48, 5, 196, 0, 5, 0, 15, 0, 0, 65, 7, 51, 19, 55, 35, 5, 7, 51, 55, 54, 54, 55, 39, 6, 6, 3, 1, 3, 79, 225, 2, 163, 254, 204, 20, 121, 23, 11, 42, 29, 77, 48, 68, 4, 158, 26, 1, 42, 22, 183, 139, 134, 51, 90, 43, 3, 32, 92, 0, 0, 2, 1, 253, 4, 216, 4, 92, 6, 207, 0, 25, 0, 63, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 19, 39, 6, 6, 7, 6, 6, 7, 6, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 53, 143, 7, 25, 17, 21, 57, 34, 30, 47, 15, 15, 14, 1, 144, 46, 38, 37, 96, 51, 53, 103, 42, 41, 55, 45, 76, 7, 18, 13, 11, 31, 20, 30, 51, 24, 25, 51, 30, 39, 62, 22, 22, 27, 5, 83, 6, 18, 12, 12, 31, 20, 29, 50, 25, 24, 52, 30, 39, 60, 22, 21, 25, 5, 175, 2, 26, 40, 15, 18, 19, 1, 1, 15, 15, 14, 44, 29, 2, 56, 81, 26, 26, 25, 1, 1, 24, 26, 25, 82, 1, 68, 22, 18, 32, 12, 11, 15, 1, 2, 24, 15, 15, 26, 31, 25, 26, 66, 35, 20, 17, 31, 12, 12, 15, 1, 1, 24, 15, 15, 25, 31, 26, 25, 65, 0, 1, 1, 80, 254, 153, 2, 94, 0, 154, 0, 3, 0, 0, 65, 19, 35, 3, 2, 4, 90, 181, 89, 254, 153, 2, 1, 253, 255, 0, 0, 1, 0, 173, 254, 71, 2, 173, 0, 151, 0, 21, 0, 0, 101, 35, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 23, 50, 54, 55, 54, 54, 55, 2, 173, 180, 39, 6, 24, 20, 21, 59, 41, 24, 48, 23, 27, 29, 56, 30, 81, 126, 45, 45, 54, 10, 151, 240, 35, 68, 27, 27, 33, 9, 7, 159, 8, 10, 1, 53, 48, 47, 129, 76, 0, 0, 2, 0, 93, 0, 0, 4, 82, 4, 141, 0, 16, 0, 31, 0, 0, 65, 5, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 51, 19, 19, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 1, 93, 1, 21, 86, 165, 66, 66, 85, 6, 6, 57, 51, 52, 140, 78, 254, 80, 203, 180, 102, 74, 1, 20, 45, 76, 27, 27, 26, 6, 6, 53, 40, 40, 98, 51, 1, 182, 1, 44, 46, 45, 139, 95, 84, 131, 46, 45, 49, 3, 1, 251, 115, 2, 78, 1, 166, 1, 2, 30, 26, 27, 75, 47, 56, 81, 26, 27, 26, 0, 0, 1, 0, 59, 0, 0, 5, 6, 5, 176, 0, 12, 0, 0, 65, 1, 51, 1, 1, 35, 1, 35, 19, 35, 3, 51, 19, 2, 14, 1, 70, 208, 254, 127, 2, 99, 220, 253, 226, 144, 113, 181, 253, 181, 115, 2, 147, 253, 109, 2, 229, 2, 203, 253, 122, 2, 134, 250, 80, 2, 147, 0, 0, 1, 0, 99, 255, 232, 4, 26, 4, 160, 0, 59, 0, 0, 101, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 35, 1, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 51, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 1, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 1, 171, 65, 53, 108, 58, 87, 153, 58, 57, 70, 5, 4, 41, 38, 38, 107, 62, 3, 1, 68, 39, 84, 45, 46, 102, 57, 103, 157, 55, 55, 67, 13, 128, 180, 128, 8, 37, 32, 31, 91, 63, 44, 80, 32, 254, 233, 25, 93, 45, 83, 32, 31, 33, 6, 6, 40, 31, 32, 85, 51, 45, 79, 181, 153, 23, 27, 1, 1, 54, 51, 50, 144, 89, 68, 105, 38, 36, 44, 9, 1, 78, 39, 66, 25, 24, 28, 2, 2, 61, 57, 57, 160, 96, 253, 15, 2, 241, 55, 101, 39, 39, 46, 1, 1, 29, 31, 254, 221, 145, 1, 1, 15, 19, 19, 67, 53, 49, 85, 31, 32, 35, 28, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 1, 0, 0, 255, 255, 0, 204, 2, 49, 3, 206, 2, 201, 6, 6, 0, 103, 0, 0, 255, 255, 0, 100, 255, 233, 4, 133, 7, 48, 6, 38, 0, 4, 0, 0, 0, 7, 1, 96, 0, 115, 1, 112, 255, 255, 0, 122, 255, 233, 4, 44, 5, 217, 6, 38, 0, 30, 0, 0, 0, 6, 1, 96, 33, 25, 255, 255, 0, 96, 255, 232, 4, 133, 7, 48, 6, 38, 0, 8, 0, 0, 0, 7, 1, 96, 0, 88, 1, 112, 255, 255, 0, 45, 254, 82, 4, 82, 5, 217, 6, 38, 0, 34, 0, 0, 0, 6, 1, 96, 251, 25, 255, 255, 0, 21, 0, 0, 4, 31, 6, 22, 6, 38, 0, 41, 0, 0, 0, 7, 0, 109, 253, 253, 0, 0, 255, 255, 0, 83, 254, 36, 4, 141, 5, 198, 6, 38, 0, 20, 0, 0, 0, 7, 1, 104, 0, 133, 254, 206, 255, 255, 0, 124, 254, 37, 4, 40, 4, 79, 6, 38, 0, 46, 0, 0, 0, 7, 1, 104, 0, 120, 254, 207, 255, 255, 0, 194, 254, 46, 4, 247, 5, 176, 6, 38, 0, 21, 0, 0, 0, 7, 1, 104, 0, 107, 254, 216, 255, 255, 0, 196, 254, 46, 4, 54, 5, 64, 6, 38, 0, 47, 0, 0, 0, 7, 1, 104, 0, 202, 254, 216, 255, 255, 0, 194, 254, 75, 4, 247, 5, 176, 6, 38, 0, 21, 0, 0, 0, 6, 1, 102, 61, 0, 255, 255, 0, 161, 254, 77, 4, 170, 4, 141, 6, 38, 2, 97, 0, 0, 0, 6, 1, 102, 46, 2, 255, 255, 0, 196, 254, 75, 4, 54, 5, 64, 6, 38, 0, 47, 0, 0, 0, 7, 1, 102, 0, 156, 0, 0, 255, 255, 255, 217, 0, 0, 4, 61, 4, 141, 6, 38, 2, 82, 0, 0, 0, 7, 2, 106, 254, 165, 255, 120, 255, 255, 255, 217, 0, 0, 4, 61, 4, 141, 6, 38, 2, 82, 0, 0, 0, 7, 2, 106, 254, 165, 255, 120, 255, 255, 0, 161, 0, 0, 4, 170, 4, 141, 6, 38, 2, 97, 0, 0, 0, 6, 2, 106, 238, 224, 255, 255, 255, 199, 0, 0, 4, 0, 5, 255, 6, 38, 2, 79, 0, 0, 0, 6, 1, 90, 163, 54, 255, 255, 255, 199, 0, 0, 4, 51, 5, 252, 6, 38, 2, 79, 0, 0, 0, 7, 1, 91, 0, 136, 0, 51, 255, 255, 255, 199, 0, 0, 4, 0, 6, 36, 6, 38, 2, 79, 0, 0, 0, 6, 1, 92, 127, 55, 255, 255, 255, 199, 0, 0, 4, 52, 6, 45, 6, 38, 2, 79, 0, 0, 0, 7, 1, 93, 0, 137, 0, 61, 255, 255, 255, 199, 0, 0, 4, 27, 5, 254, 6, 38, 2, 79, 0, 0, 0, 6, 1, 97, 22, 55, 255, 255, 255, 199, 0, 0, 4, 0, 6, 104, 6, 38, 2, 79, 0, 0, 0, 7, 1, 98, 0, 22, 0, 128, 255, 255, 255, 199, 0, 0, 4, 80, 6, 243, 6, 38, 2, 79, 0, 0, 0, 7, 2, 107, 0, 4, 0, 130, 255, 255, 0, 89, 254, 72, 4, 55, 4, 160, 6, 38, 2, 81, 0, 0, 0, 6, 1, 102, 40, 253, 255, 255, 0, 89, 0, 0, 4, 97, 5, 255, 6, 38, 2, 83, 0, 0, 0, 6, 1, 90, 199, 54, 255, 255, 0, 89, 0, 0, 4, 97, 5, 252, 6, 38, 2, 83, 0, 0, 0, 6, 1, 91, 107, 51, 255, 255, 0, 89, 0, 0, 4, 97, 6, 36, 6, 38, 2, 83, 0, 0, 0, 6, 1, 92, 98, 55, 255, 255, 0, 89, 0, 0, 4, 97, 5, 254, 6, 38, 2, 83, 0, 0, 0, 6, 1, 97, 250, 55, 255, 255, 0, 106, 0, 0, 4, 84, 5, 227, 6, 38, 2, 87, 0, 0, 0, 6, 1, 90, 184, 26, 255, 255, 0, 106, 0, 0, 4, 84, 5, 224, 6, 38, 2, 87, 0, 0, 0, 7, 1, 91, 0, 157, 0, 23, 255, 255, 0, 106, 0, 0, 4, 84, 6, 8, 6, 38, 2, 87, 0, 0, 0, 7, 1, 92, 0, 148, 0, 27, 255, 255, 0, 106, 0, 0, 4, 84, 5, 226, 6, 38, 2, 87, 0, 0, 0, 6, 1, 97, 43, 27, 255, 255, 0, 84, 0, 0, 4, 87, 6, 45, 6, 38, 2, 92, 0, 0, 0, 7, 1, 93, 0, 172, 0, 61, 255, 255, 0, 113, 255, 237, 4, 50, 5, 255, 6, 38, 2, 93, 0, 0, 0, 6, 1, 90, 196, 54, 255, 255, 0, 113, 255, 237, 4, 52, 5, 252, 6, 38, 2, 93, 0, 0, 0, 7, 1, 91, 0, 137, 0, 51, 255, 255, 0, 113, 255, 237, 4, 50, 6, 36, 6, 38, 2, 93, 0, 0, 0, 6, 1, 92, 109, 55, 255, 255, 0, 113, 255, 237, 4, 50, 6, 45, 6, 38, 2, 93, 0, 0, 0, 7, 1, 93, 0, 133, 0, 61, 255, 255, 0, 113, 255, 237, 4, 60, 5, 254, 6, 38, 2, 93, 0, 0, 0, 6, 1, 97, 55, 55, 255, 255, 0, 134, 255, 238, 4, 109, 5, 255, 6, 38, 2, 98, 0, 0, 0, 6, 1, 90, 192, 54, 255, 255, 0, 134, 255, 238, 4, 109, 5, 252, 6, 38, 2, 98, 0, 0, 0, 7, 1, 91, 0, 165, 0, 51, 255, 255, 0, 134, 255, 238, 4, 109, 6, 36, 6, 38, 2, 98, 0, 0, 0, 7, 1, 92, 0, 156, 0, 55, 255, 255, 0, 134, 255, 238, 4, 109, 5, 254, 6, 38, 2, 98, 0, 0, 0, 6, 1, 97, 51, 55, 255, 255, 0, 178, 0, 0, 4, 199, 5, 252, 6, 38, 2, 102, 0, 0, 0, 6, 1, 91, 116, 51, 255, 255, 255, 199, 0, 0, 4, 76, 5, 214, 6, 38, 2, 79, 0, 0, 0, 6, 1, 94, 23, 38, 255, 255, 255, 199, 0, 0, 4, 0, 6, 39, 6, 38, 2, 79, 0, 0, 0, 6, 1, 95, 2, 116, 0, 2, 255, 199, 254, 79, 4, 0, 4, 141, 0, 36, 0, 41, 0, 0, 97, 51, 3, 35, 1, 51, 19, 33, 19, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 1, 19, 55, 23, 19, 3, 220, 36, 254, 161, 253, 102, 192, 156, 1, 245, 52, 39, 74, 29, 29, 37, 1, 1, 21, 21, 22, 66, 42, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 32, 253, 150, 225, 57, 21, 83, 4, 141, 251, 115, 1, 23, 255, 0, 23, 56, 34, 34, 80, 46, 39, 66, 23, 25, 28, 1, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 17, 1, 177, 1, 147, 102, 102, 254, 109, 255, 255, 0, 89, 255, 237, 4, 55, 5, 252, 6, 38, 2, 81, 0, 0, 0, 6, 1, 91, 121, 51, 255, 255, 0, 89, 255, 237, 4, 55, 6, 36, 6, 38, 2, 81, 0, 0, 0, 6, 1, 92, 112, 55, 255, 255, 0, 89, 255, 237, 4, 55, 6, 38, 6, 38, 2, 81, 0, 0, 0, 6, 1, 100, 254, 56, 255, 255, 0, 73, 0, 0, 4, 61, 6, 38, 6, 38, 2, 82, 0, 0, 0, 6, 1, 100, 199, 56, 255, 255, 0, 89, 0, 0, 4, 97, 5, 214, 6, 38, 2, 83, 0, 0, 0, 6, 1, 94, 251, 38, 255, 255, 0, 89, 0, 0, 4, 97, 6, 39, 6, 38, 2, 83, 0, 0, 0, 6, 1, 95, 2, 116, 255, 255, 0, 89, 0, 0, 4, 97, 5, 247, 6, 38, 2, 83, 0, 0, 0, 6, 1, 96, 239, 55, 0, 1, 0, 89, 254, 79, 4, 97, 4, 141, 0, 41, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 39, 51, 55, 33, 19, 3, 156, 27, 253, 209, 58, 2, 131, 28, 252, 195, 203, 2, 5, 33, 61, 23, 24, 29, 1, 1, 22, 22, 22, 65, 41, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 32, 5, 136, 27, 253, 117, 66, 2, 14, 152, 1, 78, 153, 251, 115, 22, 53, 31, 32, 72, 40, 40, 67, 23, 24, 27, 1, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 17, 3, 151, 1, 119, 255, 255, 0, 89, 0, 0, 4, 97, 6, 38, 6, 38, 2, 83, 0, 0, 0, 6, 1, 100, 240, 56, 255, 255, 0, 100, 255, 239, 4, 71, 6, 36, 6, 38, 2, 85, 0, 0, 0, 6, 1, 92, 122, 55, 255, 255, 0, 100, 255, 239, 4, 71, 6, 39, 6, 38, 2, 85, 0, 0, 0, 6, 1, 95, 26, 116, 255, 255, 0, 100, 254, 43, 4, 71, 4, 160, 6, 38, 2, 85, 0, 0, 0, 7, 1, 104, 0, 100, 254, 213, 255, 255, 0, 46, 0, 0, 4, 62, 6, 36, 6, 38, 2, 86, 0, 0, 0, 6, 1, 92, 82, 55, 255, 255, 0, 106, 0, 0, 4, 84, 6, 17, 6, 38, 2, 87, 0, 0, 0, 7, 1, 93, 0, 151, 0, 33, 255, 255, 0, 106, 0, 0, 4, 97, 5, 186, 6, 38, 2, 87, 0, 0, 0, 6, 1, 94, 44, 10, 255, 255, 0, 106, 0, 0, 4, 84, 6, 11, 6, 38, 2, 87, 0, 0, 0, 6, 1, 95, 27, 88, 0, 1, 0, 106, 254, 79, 4, 84, 4, 140, 0, 41, 0, 0, 65, 7, 33, 3, 33, 7, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 39, 51, 55, 33, 19, 33, 55, 1, 52, 28, 1, 50, 147, 254, 207, 28, 1, 232, 33, 61, 23, 24, 29, 1, 1, 22, 21, 22, 65, 42, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 4, 39, 28, 28, 66, 32, 5, 129, 29, 254, 198, 146, 1, 57, 29, 4, 140, 161, 252, 181, 160, 22, 53, 31, 32, 72, 40, 39, 66, 24, 25, 27, 1, 1, 20, 22, 123, 11, 16, 2, 1, 33, 33, 39, 67, 28, 27, 45, 17, 3, 160, 3, 75, 161, 0, 255, 255, 0, 106, 0, 0, 4, 84, 5, 219, 6, 38, 2, 87, 0, 0, 0, 6, 1, 96, 16, 27, 255, 255, 0, 104, 255, 238, 4, 213, 6, 36, 6, 38, 2, 88, 0, 0, 0, 7, 1, 92, 1, 88, 0, 55, 255, 255, 0, 70, 254, 52, 4, 167, 4, 141, 6, 38, 2, 89, 0, 0, 0, 7, 1, 104, 0, 53, 254, 222, 255, 255, 0, 98, 0, 0, 3, 228, 5, 252, 6, 38, 2, 90, 0, 0, 0, 7, 1, 91, 255, 55, 0, 51, 255, 255, 0, 98, 254, 54, 3, 228, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 1, 104, 0, 51, 254, 224, 255, 255, 0, 98, 0, 0, 3, 228, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 0, 109, 0, 75, 254, 119, 255, 255, 0, 98, 0, 0, 3, 228, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 1, 96, 255, 158, 253, 55, 255, 255, 0, 84, 0, 0, 4, 83, 5, 252, 6, 38, 2, 92, 0, 0, 0, 7, 1, 91, 0, 157, 0, 51, 255, 255, 0, 84, 254, 50, 4, 83, 4, 141, 6, 38, 2, 92, 0, 0, 0, 7, 1, 104, 0, 181, 254, 220, 255, 255, 0, 84, 0, 0, 4, 83, 6, 38, 6, 38, 2, 92, 0, 0, 0, 6, 1, 100, 20, 56, 255, 255, 0, 113, 255, 237, 4, 78, 5, 214, 6, 38, 2, 93, 0, 0, 0, 6, 1, 94, 25, 38, 255, 255, 0, 113, 255, 237, 4, 50, 6, 39, 6, 38, 2, 93, 0, 0, 0, 6, 1, 95, 38, 116, 255, 255, 0, 113, 255, 237, 5, 14, 6, 38, 6, 38, 2, 93, 0, 0, 0, 7, 1, 99, 0, 173, 0, 55, 255, 255, 0, 35, 0, 0, 4, 3, 5, 252, 6, 38, 2, 95, 0, 0, 0, 6, 1, 91, 50, 51, 255, 255, 0, 35, 254, 54, 4, 3, 4, 141, 6, 38, 2, 95, 0, 0, 0, 7, 1, 104, 0, 17, 254, 224, 255, 255, 0, 35, 0, 0, 4, 3, 6, 38, 6, 38, 2, 95, 0, 0, 0, 6, 1, 100, 183, 56, 255, 255, 0, 94, 255, 239, 4, 59, 5, 252, 6, 38, 2, 96, 0, 0, 0, 6, 1, 91, 118, 51, 255, 255, 0, 94, 255, 239, 4, 59, 6, 36, 6, 38, 2, 96, 0, 0, 0, 6, 1, 92, 109, 55, 255, 255, 0, 94, 254, 75, 4, 59, 4, 158, 6, 38, 2, 96, 0, 0, 0, 6, 1, 102, 69, 0, 255, 255, 0, 94, 255, 239, 4, 59, 6, 38, 6, 38, 2, 96, 0, 0, 0, 6, 1, 100, 251, 56, 255, 255, 0, 161, 0, 0, 4, 170, 6, 38, 6, 38, 2, 97, 0, 0, 0, 6, 1, 100, 2, 56, 255, 255, 0, 134, 255, 238, 4, 109, 6, 45, 6, 38, 2, 98, 0, 0, 0, 7, 1, 93, 0, 180, 0, 61, 255, 255, 0, 134, 255, 238, 4, 109, 5, 214, 6, 38, 2, 98, 0, 0, 0, 6, 1, 94, 52, 38, 255, 255, 0, 134, 255, 238, 4, 109, 6, 39, 6, 38, 2, 98, 0, 0, 0, 6, 1, 95, 34, 116, 255, 255, 0, 134, 255, 238, 4, 109, 6, 104, 6, 38, 2, 98, 0, 0, 0, 7, 1, 98, 0, 51, 0, 128, 255, 255, 0, 134, 255, 238, 5, 10, 6, 38, 6, 38, 2, 98, 0, 0, 0, 7, 1, 99, 0, 169, 0, 55, 0, 1, 0, 134, 254, 140, 4, 109, 4, 141, 0, 60, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 48, 48, 49, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 35, 34, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 4, 109, 179, 134, 10, 51, 39, 38, 100, 58, 55, 82, 26, 26, 21, 6, 131, 177, 132, 8, 46, 47, 47, 136, 82, 17, 29, 11, 9, 12, 1, 1, 25, 24, 22, 62, 39, 44, 85, 38, 21, 23, 50, 26, 31, 29, 3, 3, 22, 17, 16, 43, 23, 60, 103, 39, 40, 53, 10, 4, 141, 252, 243, 57, 93, 33, 33, 35, 2, 1, 39, 33, 33, 90, 53, 3, 13, 252, 244, 86, 142, 53, 52, 62, 5, 19, 41, 22, 21, 46, 25, 42, 70, 24, 21, 25, 1, 20, 22, 123, 11, 14, 34, 33, 28, 51, 22, 23, 38, 16, 21, 71, 48, 48, 118, 68, 0, 255, 255, 0, 145, 0, 0, 4, 252, 6, 36, 6, 38, 2, 100, 0, 0, 0, 6, 1, 92, 125, 55, 255, 255, 0, 178, 0, 0, 4, 199, 6, 36, 6, 38, 2, 102, 0, 0, 0, 6, 1, 92, 107, 55, 255, 255, 0, 178, 0, 0, 4, 199, 5, 254, 6, 38, 2, 102, 0, 0, 0, 6, 1, 97, 2, 55, 255, 255, 0, 85, 0, 0, 4, 98, 5, 252, 6, 38, 2, 103, 0, 0, 0, 6, 1, 91, 111, 51, 255, 255, 0, 85, 0, 0, 4, 98, 5, 247, 6, 38, 2, 103, 0, 0, 0, 6, 1, 96, 38, 55, 255, 255, 0, 85, 0, 0, 4, 98, 6, 38, 6, 38, 2, 103, 0, 0, 0, 6, 1, 100, 39, 56, 255, 255, 255, 226, 0, 0, 4, 2, 6, 122, 6, 38, 0, 2, 0, 0, 0, 7, 1, 120, 254, 202, 0, 0, 255, 255, 0, 81, 0, 0, 4, 211, 6, 122, 4, 38, 0, 6, 50, 0, 0, 7, 1, 120, 253, 199, 0, 0, 255, 255, 0, 64, 0, 0, 4, 230, 6, 124, 4, 38, 0, 9, 50, 0, 0, 7, 1, 120, 253, 182, 0, 2, 255, 255, 0, 48, 0, 0, 4, 198, 6, 124, 4, 38, 0, 10, 50, 0, 0, 7, 1, 120, 253, 166, 0, 2, 255, 255, 0, 112, 255, 234, 4, 119, 6, 122, 4, 38, 0, 16, 10, 0, 0, 7, 1, 120, 253, 231, 0, 0, 255, 255, 255, 247, 0, 0, 5, 35, 6, 122, 4, 38, 0, 26, 50, 0, 0, 7, 1, 120, 253, 109, 0, 0, 255, 255, 0, 3, 0, 0, 4, 130, 6, 122, 4, 38, 1, 132, 10, 0, 0, 7, 1, 120, 253, 227, 0, 0, 255, 255, 0, 233, 255, 235, 4, 50, 6, 122, 6, 38, 1, 141, 0, 0, 0, 6, 1, 121, 217, 187, 255, 255, 255, 226, 0, 0, 4, 2, 5, 176, 6, 6, 0, 2, 0, 0, 255, 255, 0, 62, 0, 0, 4, 114, 5, 176, 6, 6, 0, 3, 0, 0, 255, 255, 0, 72, 0, 0, 4, 161, 5, 176, 6, 6, 0, 6, 0, 0, 255, 255, 0, 19, 0, 0, 4, 129, 5, 176, 6, 6, 0, 27, 0, 0, 255, 255, 0, 32, 0, 0, 4, 180, 5, 176, 6, 6, 0, 9, 0, 0, 255, 255, 0, 64, 0, 0, 4, 148, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 62, 0, 0, 4, 252, 5, 176, 6, 6, 0, 12, 0, 0, 255, 255, 0, 39, 0, 0, 4, 192, 5, 176, 6, 6, 0, 14, 0, 0, 255, 255, 0, 34, 0, 0, 4, 179, 5, 176, 6, 6, 0, 15, 0, 0, 255, 255, 0, 102, 255, 234, 4, 109, 5, 198, 6, 6, 0, 16, 0, 0, 255, 255, 0, 81, 0, 0, 4, 167, 5, 176, 6, 6, 0, 17, 0, 0, 255, 255, 0, 194, 0, 0, 4, 247, 5, 176, 6, 6, 0, 21, 0, 0, 255, 255, 0, 212, 0, 0, 4, 241, 5, 176, 6, 6, 0, 26, 0, 0, 255, 255, 255, 241, 0, 0, 4, 238, 5, 176, 6, 6, 0, 25, 0, 0, 255, 255, 0, 64, 0, 0, 4, 148, 7, 34, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 0, 26, 1, 91, 255, 255, 0, 212, 0, 0, 4, 241, 7, 33, 6, 38, 0, 26, 0, 0, 0, 7, 1, 97, 0, 66, 1, 90, 255, 255, 0, 103, 255, 234, 4, 37, 6, 126, 6, 38, 1, 133, 0, 0, 0, 6, 1, 120, 16, 4, 255, 255, 0, 80, 255, 234, 4, 79, 6, 125, 6, 38, 1, 137, 0, 0, 0, 6, 1, 120, 20, 3, 255, 255, 0, 54, 254, 97, 4, 31, 6, 126, 6, 38, 1, 139, 0, 0, 0, 6, 1, 120, 28, 4, 255, 255, 0, 233, 255, 235, 3, 221, 6, 106, 6, 38, 1, 141, 0, 0, 0, 6, 1, 120, 11, 240, 255, 255, 0, 121, 255, 233, 4, 42, 6, 122, 6, 38, 1, 149, 0, 0, 0, 6, 1, 121, 182, 187, 255, 255, 0, 76, 0, 0, 4, 137, 4, 58, 6, 6, 0, 79, 0, 0, 255, 255, 0, 99, 255, 233, 4, 48, 4, 81, 6, 6, 0, 42, 0, 0, 255, 255, 0, 6, 254, 96, 4, 70, 4, 58, 6, 6, 1, 107, 0, 0, 255, 255, 0, 174, 0, 0, 4, 148, 4, 59, 6, 6, 0, 49, 0, 0, 255, 255, 0, 6, 0, 0, 4, 152, 4, 58, 6, 6, 0, 51, 0, 0, 255, 255, 0, 233, 255, 235, 4, 22, 5, 203, 6, 38, 1, 141, 0, 0, 0, 6, 1, 97, 17, 4, 255, 255, 0, 121, 255, 233, 4, 42, 5, 203, 6, 38, 1, 149, 0, 0, 0, 6, 1, 97, 239, 4, 255, 255, 0, 99, 255, 233, 4, 48, 6, 126, 6, 38, 0, 42, 0, 0, 0, 6, 1, 120, 10, 4, 255, 255, 0, 121, 255, 233, 4, 42, 6, 106, 6, 38, 1, 149, 0, 0, 0, 6, 1, 120, 233, 240, 255, 255, 0, 54, 255, 233, 4, 113, 6, 106, 6, 38, 1, 152, 0, 0, 0, 6, 1, 120, 18, 240, 255, 255, 0, 72, 0, 0, 4, 161, 7, 34, 6, 38, 0, 6, 0, 0, 0, 7, 1, 97, 0, 76, 1, 91, 255, 255, 0, 71, 0, 0, 4, 165, 7, 32, 6, 38, 1, 123, 0, 0, 0, 7, 1, 91, 0, 195, 1, 87, 0, 1, 0, 83, 255, 234, 4, 141, 5, 198, 0, 79, 0, 0, 65, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 35, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 103, 7, 60, 45, 45, 110, 56, 64, 101, 35, 36, 41, 3, 183, 2, 70, 63, 62, 167, 96, 90, 180, 73, 73, 96, 7, 6, 63, 55, 55, 143, 74, 45, 95, 38, 19, 30, 10, 12, 10, 3, 6, 57, 43, 43, 106, 54, 63, 91, 31, 30, 31, 3, 184, 3, 62, 56, 57, 158, 94, 89, 176, 71, 72, 92, 6, 5, 64, 55, 54, 140, 71, 47, 99, 39, 18, 30, 10, 11, 10, 1, 120, 60, 91, 30, 30, 29, 1, 1, 43, 37, 37, 103, 63, 98, 162, 57, 58, 65, 1, 2, 50, 51, 50, 151, 98, 90, 139, 53, 53, 77, 27, 16, 42, 30, 13, 33, 20, 21, 51, 31, 58, 91, 32, 31, 33, 1, 2, 45, 38, 38, 101, 58, 94, 159, 59, 58, 68, 2, 2, 54, 53, 53, 152, 95, 87, 133, 50, 51, 74, 27, 18, 44, 31, 15, 35, 21, 23, 54, 255, 255, 0, 64, 0, 0, 4, 148, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 64, 0, 0, 4, 148, 7, 34, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 0, 26, 1, 91, 255, 255, 0, 63, 255, 234, 4, 140, 5, 176, 6, 6, 0, 11, 0, 0, 255, 255, 0, 59, 0, 0, 5, 6, 5, 176, 6, 6, 2, 113, 0, 0, 255, 255, 0, 62, 0, 0, 4, 252, 7, 14, 6, 38, 0, 12, 0, 0, 0, 7, 1, 91, 0, 190, 1, 69, 255, 255, 0, 1, 255, 233, 5, 43, 7, 75, 6, 38, 1, 168, 0, 0, 0, 7, 1, 95, 0, 112, 1, 152, 255, 255, 255, 226, 0, 0, 4, 2, 5, 176, 6, 6, 0, 2, 0, 0, 255, 255, 0, 62, 0, 0, 4, 114, 5, 176, 6, 6, 0, 3, 0, 0, 255, 255, 0, 71, 0, 0, 4, 165, 5, 176, 6, 6, 1, 123, 0, 0, 255, 255, 0, 72, 0, 0, 4, 161, 5, 176, 6, 6, 0, 6, 0, 0, 255, 255, 0, 53, 0, 0, 4, 160, 7, 63, 6, 38, 1, 166, 0, 0, 0, 7, 1, 95, 0, 71, 1, 140, 255, 255, 0, 39, 0, 0, 4, 192, 5, 176, 6, 6, 0, 14, 0, 0, 255, 255, 0, 32, 0, 0, 4, 180, 5, 176, 6, 6, 0, 9, 0, 0, 255, 255, 0, 102, 255, 234, 4, 109, 5, 198, 6, 6, 0, 16, 0, 0, 255, 255, 0, 53, 0, 0, 4, 159, 5, 176, 6, 6, 1, 128, 0, 0, 255, 255, 0, 81, 0, 0, 4, 167, 5, 176, 6, 6, 0, 17, 0, 0, 255, 255, 0, 100, 255, 233, 4, 133, 5, 198, 6, 6, 0, 4, 0, 0, 255, 255, 0, 194, 0, 0, 4, 247, 5, 176, 6, 6, 0, 21, 0, 0, 255, 255, 0, 80, 0, 0, 4, 131, 5, 176, 6, 6, 1, 130, 0, 0, 255, 255, 255, 241, 0, 0, 4, 238, 5, 176, 6, 6, 0, 25, 0, 0, 255, 255, 0, 97, 255, 236, 4, 15, 4, 80, 6, 6, 0, 28, 0, 0, 255, 255, 0, 108, 255, 234, 4, 43, 4, 80, 6, 6, 0, 32, 0, 0, 255, 255, 0, 55, 0, 0, 4, 92, 5, 244, 6, 38, 1, 185, 0, 0, 0, 6, 1, 95, 9, 65, 255, 255, 0, 99, 255, 233, 4, 48, 4, 81, 6, 6, 0, 42, 0, 0, 255, 255, 255, 247, 254, 96, 4, 28, 4, 79, 6, 6, 0, 43, 0, 0, 0, 1, 0, 121, 255, 233, 4, 44, 4, 81, 0, 57, 0, 0, 101, 38, 38, 39, 38, 38, 39, 38, 52, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 2, 21, 53, 77, 27, 27, 32, 7, 8, 5, 5, 10, 55, 45, 45, 127, 83, 52, 82, 29, 28, 28, 2, 170, 4, 54, 50, 51, 142, 84, 115, 192, 68, 74, 92, 14, 5, 6, 7, 13, 18, 68, 51, 46, 124, 77, 79, 160, 66, 66, 90, 9, 171, 11, 56, 39, 40, 96, 129, 1, 36, 29, 28, 77, 43, 42, 90, 43, 42, 73, 142, 56, 56, 67, 3, 2, 38, 32, 33, 86, 50, 1, 85, 143, 52, 51, 60, 2, 3, 83, 72, 74, 204, 112, 43, 59, 116, 52, 69, 116, 41, 38, 45, 2, 2, 51, 48, 47, 135, 83, 1, 49, 79, 27, 28, 29, 255, 255, 255, 228, 254, 72, 4, 188, 4, 58, 6, 6, 0, 52, 0, 0, 255, 255, 0, 6, 0, 0, 4, 152, 4, 58, 6, 6, 0, 51, 0, 0, 255, 255, 0, 108, 255, 234, 4, 43, 5, 225, 6, 38, 0, 32, 0, 0, 0, 6, 1, 97, 22, 26, 255, 255, 0, 73, 0, 0, 4, 95, 5, 201, 6, 38, 1, 181, 0, 0, 0, 6, 1, 91, 123, 0, 255, 255, 0, 124, 255, 234, 4, 40, 4, 79, 6, 6, 0, 46, 0, 0, 255, 255, 0, 92, 0, 0, 3, 233, 5, 198, 6, 6, 0, 36, 0, 0, 255, 255, 0, 92, 0, 0, 4, 68, 5, 203, 6, 38, 1, 109, 0, 0, 0, 6, 1, 97, 63, 4, 255, 255, 0, 35, 254, 73, 3, 196, 5, 198, 6, 6, 0, 37, 0, 0, 255, 255, 0, 54, 0, 0, 4, 171, 5, 201, 6, 38, 1, 186, 0, 0, 0, 6, 1, 91, 49, 0, 255, 255, 255, 228, 254, 72, 4, 188, 5, 245, 6, 38, 0, 52, 0, 0, 0, 6, 1, 95, 40, 66, 255, 255, 1, 128, 255, 243, 6, 164, 5, 176, 6, 38, 0, 91, 0, 0, 0, 7, 0, 91, 3, 113, 0, 0, 255, 255, 0, 1, 254, 73, 4, 122, 5, 234, 6, 38, 1, 113, 0, 0, 0, 6, 1, 100, 93, 252, 255, 255, 2, 24, 4, 7, 3, 113, 6, 22, 6, 6, 0, 109, 0, 0, 255, 255, 0, 39, 0, 0, 4, 192, 7, 32, 6, 38, 0, 14, 0, 0, 0, 7, 1, 91, 0, 184, 1, 87, 255, 255, 255, 242, 0, 0, 4, 117, 5, 222, 6, 38, 0, 40, 0, 0, 0, 7, 1, 91, 0, 167, 0, 21, 255, 255, 255, 226, 254, 133, 4, 2, 5, 176, 6, 38, 0, 2, 0, 0, 0, 6, 1, 114, 36, 0, 255, 255, 0, 97, 254, 133, 4, 15, 4, 80, 6, 38, 0, 28, 0, 0, 0, 6, 1, 114, 235, 0, 255, 255, 0, 5, 255, 234, 4, 109, 6, 86, 6, 38, 0, 16, 0, 0, 0, 7, 2, 108, 253, 192, 0, 146, 255, 255, 0, 72, 0, 0, 4, 161, 7, 35, 6, 38, 0, 6, 0, 0, 0, 7, 1, 90, 255, 217, 1, 90, 255, 255, 0, 53, 0, 0, 4, 160, 7, 23, 6, 38, 1, 166, 0, 0, 0, 7, 1, 90, 255, 203, 1, 78, 255, 255, 0, 108, 255, 234, 4, 43, 5, 226, 6, 38, 0, 32, 0, 0, 0, 6, 1, 90, 163, 25, 255, 255, 0, 55, 0, 0, 4, 92, 5, 204, 6, 38, 1, 185, 0, 0, 0, 6, 1, 90, 141, 3, 255, 255, 0, 132, 0, 0, 4, 229, 5, 176, 6, 6, 1, 131, 0, 0, 255, 255, 0, 85, 254, 40, 4, 113, 4, 59, 6, 6, 1, 151, 0, 0, 255, 255, 0, 177, 0, 0, 5, 79, 7, 66, 6, 38, 1, 226, 0, 0, 0, 7, 1, 119, 4, 115, 1, 84, 255, 255, 0, 166, 0, 0, 4, 143, 6, 26, 6, 38, 1, 227, 0, 0, 0, 7, 1, 119, 4, 24, 0, 44, 255, 255, 0, 46, 254, 47, 4, 147, 5, 197, 6, 38, 1, 165, 0, 0, 0, 6, 2, 110, 223, 150, 255, 255, 0, 79, 254, 57, 4, 58, 4, 78, 6, 38, 1, 184, 0, 0, 0, 6, 2, 110, 248, 160, 255, 255, 0, 100, 254, 57, 4, 133, 5, 198, 6, 38, 0, 4, 0, 0, 0, 6, 2, 110, 238, 160, 255, 255, 0, 122, 254, 57, 4, 44, 4, 81, 6, 38, 0, 30, 0, 0, 0, 6, 2, 110, 1, 160, 255, 255, 0, 212, 0, 0, 4, 241, 5, 176, 6, 6, 0, 26, 0, 0, 255, 255, 0, 157, 254, 96, 4, 204, 4, 58, 6, 6, 1, 135, 0, 0, 255, 255, 0, 64, 0, 0, 4, 148, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 255, 176, 0, 0, 4, 254, 7, 75, 6, 38, 1, 164, 0, 0, 0, 7, 1, 95, 0, 93, 1, 152, 255, 255, 255, 163, 0, 0, 4, 193, 5, 244, 6, 38, 1, 183, 0, 0, 0, 6, 1, 95, 9, 65, 255, 255, 0, 64, 0, 0, 4, 148, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 255, 226, 0, 0, 4, 87, 7, 75, 6, 38, 0, 2, 0, 0, 0, 7, 1, 95, 0, 95, 1, 152, 255, 255, 0, 97, 255, 236, 4, 27, 6, 9, 6, 38, 0, 28, 0, 0, 0, 6, 1, 95, 35, 86, 255, 255, 255, 226, 0, 0, 4, 91, 7, 34, 6, 38, 0, 2, 0, 0, 0, 7, 1, 97, 0, 86, 1, 91, 255, 255, 0, 97, 255, 236, 4, 31, 5, 224, 6, 38, 0, 28, 0, 0, 0, 6, 1, 97, 26, 25, 255, 255, 255, 178, 0, 0, 5, 6, 5, 176, 6, 6, 0, 72, 0, 0, 255, 255, 255, 241, 255, 235, 4, 163, 4, 80, 6, 6, 0, 73, 0, 0, 255, 255, 0, 72, 0, 0, 4, 161, 7, 75, 6, 38, 0, 6, 0, 0, 0, 7, 1, 95, 0, 85, 1, 152, 255, 255, 0, 108, 255, 234, 4, 43, 6, 10, 6, 38, 0, 32, 0, 0, 0, 6, 1, 95, 31, 87, 255, 255, 0, 77, 255, 234, 4, 105, 6, 244, 6, 38, 2, 16, 0, 0, 0, 7, 1, 97, 0, 58, 1, 45, 255, 255, 0, 138, 255, 235, 4, 63, 4, 79, 6, 6, 0, 81, 0, 0, 255, 255, 0, 138, 255, 235, 4, 63, 5, 225, 6, 38, 0, 81, 0, 0, 0, 6, 1, 97, 55, 26, 255, 255, 255, 176, 0, 0, 4, 254, 7, 34, 6, 38, 1, 164, 0, 0, 0, 7, 1, 97, 0, 84, 1, 91, 255, 255, 255, 163, 0, 0, 4, 193, 5, 203, 6, 38, 1, 183, 0, 0, 0, 6, 1, 97, 0, 4, 255, 255, 0, 46, 255, 233, 4, 147, 7, 55, 6, 38, 1, 165, 0, 0, 0, 7, 1, 97, 0, 70, 1, 112, 255, 255, 0, 79, 255, 236, 4, 58, 5, 223, 6, 38, 1, 184, 0, 0, 0, 6, 1, 97, 25, 24, 255, 255, 0, 53, 0, 0, 4, 160, 6, 238, 6, 38, 1, 166, 0, 0, 0, 7, 1, 94, 0, 63, 1, 62, 255, 255, 0, 55, 0, 0, 4, 92, 5, 164, 6, 38, 1, 185, 0, 0, 0, 6, 1, 94, 1, 244, 255, 255, 0, 53, 0, 0, 4, 160, 7, 22, 6, 38, 1, 166, 0, 0, 0, 7, 1, 97, 0, 62, 1, 79, 255, 255, 0, 55, 0, 0, 4, 92, 5, 203, 6, 38, 1, 185, 0, 0, 0, 6, 1, 97, 0, 4, 255, 255, 0, 102, 255, 234, 4, 109, 7, 55, 6, 38, 0, 16, 0, 0, 0, 7, 1, 97, 0, 93, 1, 112, 255, 255, 0, 99, 255, 233, 4, 48, 5, 224, 6, 38, 0, 42, 0, 0, 0, 6, 1, 97, 16, 25, 255, 255, 0, 95, 255, 234, 4, 102, 5, 198, 6, 6, 1, 224, 0, 0, 255, 255, 0, 68, 255, 233, 4, 23, 4, 80, 6, 6, 1, 225, 0, 0, 255, 255, 0, 95, 255, 234, 4, 102, 7, 29, 6, 38, 1, 224, 0, 0, 0, 7, 1, 97, 0, 90, 1, 86, 255, 255, 0, 68, 255, 233, 4, 23, 5, 252, 6, 38, 1, 225, 0, 0, 0, 6, 1, 97, 230, 53, 255, 255, 0, 78, 255, 233, 4, 105, 7, 56, 6, 38, 1, 176, 0, 0, 0, 7, 1, 97, 0, 60, 1, 113, 255, 255, 0, 80, 255, 233, 4, 25, 5, 224, 6, 38, 1, 200, 0, 0, 0, 6, 1, 97, 253, 25, 255, 255, 0, 1, 255, 233, 5, 43, 6, 250, 6, 38, 1, 168, 0, 0, 0, 7, 1, 94, 0, 104, 1, 74, 255, 255, 255, 228, 254, 72, 4, 188, 5, 165, 6, 38, 0, 52, 0, 0, 0, 6, 1, 94, 32, 245, 255, 255, 0, 1, 255, 233, 5, 43, 7, 34, 6, 38, 1, 168, 0, 0, 0, 7, 1, 97, 0, 103, 1, 91, 255, 255, 255, 228, 254, 72, 4, 188, 5, 204, 6, 38, 0, 52, 0, 0, 0, 6, 1, 97, 31, 5, 255, 255, 0, 1, 255, 233, 5, 62, 7, 74, 6, 38, 1, 168, 0, 0, 0, 7, 1, 99, 0, 221, 1, 91, 255, 255, 255, 228, 254, 72, 4, 246, 5, 244, 6, 38, 0, 52, 0, 0, 0, 7, 1, 99, 0, 149, 0, 5, 255, 255, 0, 228, 0, 0, 4, 157, 7, 34, 6, 38, 1, 170, 0, 0, 0, 7, 1, 97, 255, 253, 1, 91, 255, 255, 0, 159, 0, 0, 4, 92, 5, 203, 6, 38, 1, 194, 0, 0, 0, 6, 1, 97, 38, 4, 255, 255, 0, 35, 255, 254, 4, 192, 7, 34, 6, 38, 1, 174, 0, 0, 0, 7, 1, 97, 0, 40, 1, 91, 255, 255, 0, 35, 255, 255, 4, 115, 5, 203, 6, 38, 1, 198, 0, 0, 0, 6, 1, 97, 77, 4, 255, 255, 255, 241, 254, 71, 4, 238, 5, 176, 6, 38, 0, 25, 0, 0, 0, 7, 2, 111, 1, 255, 0, 0, 255, 255, 0, 6, 254, 71, 4, 152, 4, 58, 6, 38, 0, 51, 0, 0, 0, 7, 2, 111, 1, 145, 0, 0, 255, 255, 0, 118, 255, 235, 4, 160, 6, 0, 6, 6, 0, 31, 0, 0, 255, 255, 255, 202, 254, 71, 4, 160, 5, 176, 6, 38, 1, 167, 0, 0, 0, 7, 2, 111, 1, 195, 0, 0, 255, 255, 255, 210, 254, 71, 4, 107, 4, 58, 6, 38, 1, 187, 0, 0, 0, 7, 2, 111, 1, 190, 0, 0, 255, 255, 255, 226, 254, 165, 4, 2, 5, 176, 6, 38, 0, 2, 0, 0, 0, 7, 1, 101, 4, 185, 0, 0, 255, 255, 0, 97, 254, 165, 4, 15, 4, 80, 6, 38, 0, 28, 0, 0, 0, 7, 1, 101, 4, 127, 0, 0, 255, 255, 255, 226, 0, 0, 4, 14, 7, 197, 6, 38, 0, 2, 0, 0, 0, 7, 1, 118, 4, 222, 1, 82, 255, 255, 0, 97, 255, 236, 4, 15, 6, 131, 6, 38, 0, 28, 0, 0, 0, 7, 1, 118, 4, 162, 0, 16, 255, 255, 255, 226, 0, 0, 5, 192, 7, 238, 6, 38, 0, 2, 0, 0, 0, 7, 2, 76, 0, 48, 1, 89, 255, 255, 0, 97, 255, 236, 5, 133, 6, 172, 6, 38, 0, 28, 0, 0, 0, 6, 2, 76, 245, 23, 255, 255, 255, 226, 0, 0, 4, 108, 7, 221, 6, 38, 0, 2, 0, 0, 0, 7, 2, 75, 0, 36, 1, 72, 255, 255, 0, 97, 255, 236, 4, 49, 6, 155, 6, 38, 0, 28, 0, 0, 0, 6, 2, 75, 233, 6, 255, 255, 255, 226, 0, 0, 5, 120, 8, 3, 6, 38, 0, 2, 0, 0, 0, 7, 2, 74, 0, 54, 1, 53, 255, 255, 0, 97, 255, 236, 5, 61, 6, 194, 6, 38, 0, 28, 0, 0, 0, 6, 2, 74, 251, 244, 255, 255, 255, 226, 0, 0, 4, 102, 8, 46, 6, 38, 0, 2, 0, 0, 0, 7, 2, 73, 0, 40, 1, 54, 255, 255, 0, 97, 255, 236, 4, 43, 6, 237, 6, 38, 0, 28, 0, 0, 0, 6, 2, 73, 237, 245, 255, 255, 255, 226, 254, 165, 4, 60, 7, 72, 6, 38, 0, 2, 0, 0, 0, 39, 1, 92, 0, 191, 1, 91, 0, 7, 1, 101, 4, 185, 0, 0, 255, 255, 0, 97, 254, 165, 4, 15, 6, 6, 6, 38, 0, 28, 0, 0, 0, 39, 1, 92, 0, 131, 0, 25, 0, 7, 1, 101, 4, 127, 0, 0, 255, 255, 255, 226, 0, 0, 4, 78, 7, 222, 6, 38, 0, 2, 0, 0, 0, 7, 2, 105, 0, 58, 1, 84, 255, 255, 0, 97, 255, 236, 4, 19, 6, 156, 6, 38, 0, 28, 0, 0, 0, 6, 2, 105, 255, 18, 255, 255, 255, 226, 0, 0, 4, 88, 8, 4, 6, 38, 0, 2, 0, 0, 0, 7, 2, 77, 0, 68, 1, 122, 255, 255, 0, 97, 255, 236, 4, 28, 6, 194, 6, 38, 0, 28, 0, 0, 0, 6, 2, 77, 8, 56, 255, 255, 255, 226, 0, 0, 4, 59, 8, 75, 6, 38, 0, 2, 0, 0, 0, 7, 2, 104, 0, 44, 1, 73, 255, 255, 0, 97, 255, 236, 4, 15, 7, 9, 6, 38, 0, 28, 0, 0, 0, 6, 2, 104, 241, 7, 255, 255, 255, 226, 0, 0, 4, 107, 8, 32, 6, 38, 0, 2, 0, 0, 0, 7, 2, 109, 0, 15, 1, 81, 255, 255, 0, 97, 255, 236, 4, 48, 6, 222, 6, 38, 0, 28, 0, 0, 0, 6, 2, 109, 212, 15, 255, 255, 255, 226, 254, 165, 4, 87, 7, 75, 6, 38, 0, 2, 0, 0, 0, 39, 1, 95, 0, 95, 1, 152, 0, 7, 1, 101, 4, 185, 0, 0, 255, 255, 0, 97, 254, 165, 4, 27, 6, 9, 6, 38, 0, 28, 0, 0, 0, 38, 1, 95, 35, 86, 0, 7, 1, 101, 4, 127, 0, 0, 255, 255, 0, 72, 254, 175, 4, 161, 5, 176, 6, 38, 0, 6, 0, 0, 0, 7, 1, 101, 4, 174, 0, 10, 255, 255, 0, 108, 254, 165, 4, 43, 4, 80, 6, 38, 0, 32, 0, 0, 0, 7, 1, 101, 4, 189, 0, 0, 255, 255, 0, 72, 0, 0, 4, 161, 7, 197, 6, 38, 0, 6, 0, 0, 0, 7, 1, 118, 4, 212, 1, 82, 255, 255, 0, 108, 255, 234, 4, 43, 6, 132, 6, 38, 0, 32, 0, 0, 0, 7, 1, 118, 4, 158, 0, 17, 255, 255, 0, 72, 0, 0, 4, 161, 7, 81, 6, 38, 0, 6, 0, 0, 0, 7, 1, 93, 0, 205, 1, 97, 255, 255, 0, 108, 255, 234, 4, 66, 6, 16, 6, 38, 0, 32, 0, 0, 0, 7, 1, 93, 0, 151, 0, 32, 255, 255, 0, 72, 0, 0, 5, 182, 7, 238, 6, 38, 0, 6, 0, 0, 0, 7, 2, 76, 0, 38, 1, 89, 255, 255, 0, 108, 255, 234, 5, 129, 6, 173, 6, 38, 0, 32, 0, 0, 0, 6, 2, 76, 241, 24, 255, 255, 0, 72, 0, 0, 4, 161, 7, 221, 6, 38, 0, 6, 0, 0, 0, 7, 2, 75, 0, 26, 1, 72, 255, 255, 0, 108, 255, 234, 4, 45, 6, 156, 6, 38, 0, 32, 0, 0, 0, 6, 2, 75, 229, 7, 255, 255, 0, 72, 0, 0, 5, 110, 8, 3, 6, 38, 0, 6, 0, 0, 0, 7, 2, 74, 0, 44, 1, 53, 255, 255, 0, 108, 255, 234, 5, 57, 6, 195, 6, 38, 0, 32, 0, 0, 0, 6, 2, 74, 247, 245, 255, 255, 0, 72, 0, 0, 4, 161, 8, 46, 6, 38, 0, 6, 0, 0, 0, 7, 2, 73, 0, 30, 1, 54, 255, 255, 0, 108, 255, 234, 4, 43, 6, 238, 6, 38, 0, 32, 0, 0, 0, 6, 2, 73, 233, 246, 255, 255, 0, 72, 254, 175, 4, 161, 7, 72, 6, 38, 0, 6, 0, 0, 0, 39, 1, 92, 0, 181, 1, 91, 0, 7, 1, 101, 4, 174, 0, 10, 255, 255, 0, 108, 254, 165, 4, 43, 6, 7, 6, 38, 0, 32, 0, 0, 0, 38, 1, 92, 127, 26, 0, 7, 1, 101, 4, 189, 0, 0, 255, 255, 0, 64, 0, 0, 4, 148, 7, 197, 6, 38, 0, 10, 0, 0, 0, 7, 1, 118, 4, 162, 1, 82, 255, 255, 0, 92, 0, 0, 3, 247, 6, 111, 6, 38, 1, 109, 0, 0, 0, 7, 1, 118, 4, 199, 255, 252, 255, 255, 0, 64, 254, 175, 4, 148, 5, 176, 6, 38, 0, 10, 0, 0, 0, 7, 1, 101, 4, 124, 0, 10, 255, 255, 0, 92, 254, 175, 3, 233, 5, 198, 6, 38, 0, 36, 0, 0, 0, 7, 1, 101, 4, 225, 0, 10, 255, 255, 0, 102, 254, 157, 4, 109, 5, 198, 6, 38, 0, 16, 0, 0, 0, 7, 1, 101, 4, 184, 255, 248, 255, 255, 0, 99, 254, 156, 4, 48, 4, 81, 6, 38, 0, 42, 0, 0, 0, 7, 1, 101, 4, 166, 255, 247, 255, 255, 0, 102, 255, 234, 4, 109, 7, 218, 6, 38, 0, 16, 0, 0, 0, 7, 1, 118, 4, 229, 1, 103, 255, 255, 0, 99, 255, 233, 4, 48, 6, 131, 6, 38, 0, 42, 0, 0, 0, 7, 1, 118, 4, 152, 0, 16, 255, 255, 0, 102, 255, 234, 5, 199, 8, 3, 6, 38, 0, 16, 0, 0, 0, 7, 2, 76, 0, 55, 1, 110, 255, 255, 0, 99, 255, 233, 5, 123, 6, 172, 6, 38, 0, 42, 0, 0, 0, 6, 2, 76, 235, 23, 255, 255, 0, 102, 255, 234, 4, 115, 7, 242, 6, 38, 0, 16, 0, 0, 0, 7, 2, 75, 0, 43, 1, 93, 255, 255, 0, 99, 255, 233, 4, 48, 6, 155, 6, 38, 0, 42, 0, 0, 0, 6, 2, 75, 223, 6, 255, 255, 0, 102, 255, 234, 5, 127, 8, 24, 6, 38, 0, 16, 0, 0, 0, 7, 2, 74, 0, 61, 1, 74, 255, 255, 0, 99, 255, 233, 5, 51, 6, 194, 6, 38, 0, 42, 0, 0, 0, 6, 2, 74, 241, 244, 255, 255, 0, 102, 255, 234, 4, 109, 8, 67, 6, 38, 0, 16, 0, 0, 0, 7, 2, 73, 0, 47, 1, 75, 255, 255, 0, 99, 255, 233, 4, 48, 6, 237, 6, 38, 0, 42, 0, 0, 0, 6, 2, 73, 227, 245, 255, 255, 0, 102, 254, 157, 4, 109, 7, 93, 6, 38, 0, 16, 0, 0, 0, 39, 1, 92, 0, 198, 1, 112, 0, 7, 1, 101, 4, 184, 255, 248, 255, 255, 0, 99, 254, 156, 4, 48, 6, 6, 6, 38, 0, 42, 0, 0, 0, 38, 1, 92, 121, 25, 0, 7, 1, 101, 4, 166, 255, 247, 255, 255, 0, 95, 255, 234, 5, 60, 7, 32, 6, 38, 0, 216, 0, 0, 0, 7, 1, 91, 0, 199, 1, 87, 255, 255, 0, 93, 255, 233, 4, 233, 5, 222, 6, 38, 1, 53, 0, 0, 0, 7, 1, 91, 0, 136, 0, 21, 255, 255, 0, 95, 255, 234, 5, 60, 7, 35, 6, 38, 0, 216, 0, 0, 0, 7, 1, 90, 255, 226, 1, 90, 255, 255, 0, 93, 255, 233, 4, 233, 5, 225, 6, 38, 1, 53, 0, 0, 0, 6, 1, 90, 163, 24, 255, 255, 0, 95, 255, 234, 5, 60, 7, 197, 6, 38, 0, 216, 0, 0, 0, 7, 1, 118, 4, 221, 1, 82, 255, 255, 0, 93, 255, 233, 4, 233, 6, 131, 6, 38, 1, 53, 0, 0, 0, 7, 1, 118, 4, 158, 0, 16, 255, 255, 0, 95, 255, 234, 5, 60, 7, 81, 6, 38, 0, 216, 0, 0, 0, 7, 1, 93, 0, 214, 1, 97, 255, 255, 0, 93, 255, 233, 4, 233, 6, 15, 6, 38, 1, 53, 0, 0, 0, 7, 1, 93, 0, 151, 0, 31, 255, 255, 0, 95, 254, 165, 5, 60, 5, 251, 6, 38, 0, 216, 0, 0, 0, 7, 1, 101, 4, 174, 0, 0, 255, 255, 0, 93, 254, 156, 4, 233, 4, 172, 6, 38, 1, 53, 0, 0, 0, 7, 1, 101, 4, 164, 255, 247, 255, 255, 0, 104, 254, 165, 4, 181, 5, 176, 6, 38, 0, 22, 0, 0, 0, 7, 1, 101, 4, 163, 0, 0, 255, 255, 0, 141, 254, 165, 4, 84, 4, 58, 6, 38, 0, 48, 0, 0, 0, 7, 1, 101, 4, 110, 0, 0, 255, 255, 0, 104, 255, 234, 4, 181, 7, 185, 6, 38, 0, 22, 0, 0, 0, 7, 1, 118, 4, 249, 1, 70, 255, 255, 0, 141, 255, 234, 4, 84, 6, 112, 6, 38, 0, 48, 0, 0, 0, 7, 1, 118, 4, 147, 255, 253, 255, 255, 0, 104, 255, 234, 5, 241, 7, 32, 6, 38, 0, 236, 0, 0, 0, 7, 1, 91, 0, 183, 1, 87, 255, 255, 0, 144, 255, 235, 5, 116, 5, 201, 6, 38, 1, 73, 0, 0, 0, 6, 1, 91, 126, 0, 255, 255, 0, 104, 255, 234, 5, 241, 7, 35, 6, 38, 0, 236, 0, 0, 0, 7, 1, 90, 255, 210, 1, 90, 255, 255, 0, 144, 255, 235, 5, 116, 5, 204, 6, 38, 1, 73, 0, 0, 0, 6, 1, 90, 153, 3, 255, 255, 0, 104, 255, 234, 5, 241, 7, 197, 6, 38, 0, 236, 0, 0, 0, 7, 1, 118, 4, 205, 1, 82, 255, 255, 0, 144, 255, 235, 5, 116, 6, 111, 6, 38, 1, 73, 0, 0, 0, 7, 1, 118, 4, 148, 255, 252, 255, 255, 0, 104, 255, 234, 5, 241, 7, 81, 6, 38, 0, 236, 0, 0, 0, 7, 1, 93, 0, 198, 1, 97, 255, 255, 0, 144, 255, 235, 5, 116, 5, 250, 6, 38, 1, 73, 0, 0, 0, 7, 1, 93, 0, 141, 0, 10, 255, 255, 0, 104, 254, 157, 5, 241, 5, 233, 6, 38, 0, 236, 0, 0, 0, 7, 1, 101, 4, 166, 255, 248, 255, 255, 0, 144, 254, 165, 5, 116, 4, 148, 6, 38, 1, 73, 0, 0, 0, 7, 1, 101, 4, 109, 0, 0, 255, 255, 0, 212, 254, 175, 4, 241, 5, 176, 6, 38, 0, 26, 0, 0, 0, 7, 1, 101, 4, 160, 0, 10, 255, 255, 255, 228, 254, 8, 4, 188, 4, 58, 6, 38, 0, 52, 0, 0, 0, 7, 1, 101, 5, 96, 255, 99, 255, 255, 0, 212, 0, 0, 4, 241, 7, 196, 6, 38, 0, 26, 0, 0, 0, 7, 1, 118, 4, 202, 1, 81, 255, 255, 255, 228, 254, 72, 4, 188, 6, 112, 6, 38, 0, 52, 0, 0, 0, 7, 1, 118, 4, 167, 255, 253, 255, 255, 0, 212, 0, 0, 4, 241, 7, 80, 6, 38, 0, 26, 0, 0, 0, 7, 1, 93, 0, 195, 1, 96, 255, 255, 255, 228, 254, 72, 4, 188, 5, 251, 6, 38, 0, 52, 0, 0, 0, 7, 1, 93, 0, 160, 0, 11, 255, 255, 0, 29, 254, 237, 5, 54, 6, 0, 4, 38, 0, 31, 241, 0, 0, 39, 2, 106, 1, 124, 2, 71, 0, 6, 0, 102, 9, 132, 255, 255, 0, 59, 254, 160, 5, 6, 5, 176, 6, 38, 2, 113, 0, 0, 0, 7, 2, 110, 2, 17, 0, 7, 255, 255, 0, 54, 254, 153, 4, 171, 4, 58, 6, 38, 1, 186, 0, 0, 0, 7, 2, 110, 1, 236, 0, 0, 255, 255, 0, 32, 254, 153, 4, 180, 5, 176, 6, 38, 0, 9, 0, 0, 0, 7, 2, 110, 1, 219, 0, 0, 255, 255, 0, 55, 254, 153, 4, 92, 4, 58, 6, 38, 1, 189, 0, 0, 0, 7, 2, 110, 1, 226, 0, 0, 255, 255, 0, 194, 254, 153, 4, 247, 5, 176, 6, 38, 0, 21, 0, 0, 0, 7, 2, 110, 0, 136, 0, 0, 255, 255, 0, 158, 254, 153, 4, 173, 4, 58, 6, 38, 1, 191, 0, 0, 0, 7, 2, 110, 0, 145, 0, 0, 255, 255, 255, 241, 254, 153, 4, 238, 5, 176, 6, 38, 0, 25, 0, 0, 0, 7, 2, 110, 2, 34, 0, 0, 255, 255, 0, 6, 254, 153, 4, 152, 4, 58, 6, 38, 0, 51, 0, 0, 0, 7, 2, 110, 1, 180, 0, 0, 255, 255, 0, 228, 254, 153, 4, 157, 5, 176, 6, 38, 1, 170, 0, 0, 0, 7, 2, 110, 1, 226, 0, 0, 255, 255, 0, 159, 254, 153, 4, 92, 4, 58, 6, 38, 1, 194, 0, 0, 0, 7, 2, 110, 1, 226, 0, 0, 255, 255, 0, 228, 254, 153, 4, 157, 5, 176, 6, 38, 1, 170, 0, 0, 0, 7, 2, 110, 0, 215, 0, 0, 255, 255, 0, 159, 254, 153, 4, 92, 4, 58, 6, 38, 1, 194, 0, 0, 0, 7, 2, 110, 0, 214, 0, 0, 255, 255, 0, 71, 254, 153, 4, 165, 5, 176, 6, 38, 1, 123, 0, 0, 0, 7, 2, 110, 255, 64, 0, 0, 255, 255, 0, 73, 254, 153, 4, 95, 4, 58, 6, 38, 1, 181, 0, 0, 0, 7, 2, 110, 255, 19, 0, 0, 255, 255, 255, 176, 254, 153, 4, 254, 5, 176, 6, 38, 1, 164, 0, 0, 0, 7, 2, 110, 2, 43, 0, 0, 255, 255, 255, 163, 254, 153, 4, 193, 4, 58, 6, 38, 1, 183, 0, 0, 0, 7, 2, 110, 2, 32, 0, 0, 255, 255, 0, 115, 254, 59, 4, 164, 5, 197, 6, 38, 2, 10, 0, 0, 0, 7, 2, 110, 0, 169, 255, 162, 255, 255, 0, 79, 254, 59, 4, 111, 4, 81, 6, 38, 2, 11, 0, 0, 0, 7, 2, 110, 0, 134, 255, 162, 255, 255, 0, 64, 0, 0, 4, 32, 6, 0, 6, 6, 0, 35, 0, 0, 0, 2, 0, 52, 255, 255, 3, 247, 4, 58, 0, 24, 0, 39, 0, 0, 65, 55, 33, 55, 35, 7, 35, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 55, 3, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 37, 2, 159, 27, 254, 215, 23, 181, 22, 142, 27, 143, 139, 2, 1, 81, 153, 62, 61, 78, 6, 5, 53, 48, 49, 131, 73, 254, 204, 22, 48, 1, 75, 40, 67, 24, 23, 22, 6, 6, 48, 35, 35, 86, 45, 254, 201, 3, 35, 151, 128, 128, 151, 252, 221, 1, 43, 43, 43, 131, 88, 80, 119, 41, 40, 41, 2, 2, 131, 254, 230, 1, 2, 25, 22, 23, 66, 42, 49, 71, 23, 24, 23, 1, 0, 0, 2, 0, 44, 255, 255, 4, 27, 5, 176, 0, 24, 0, 39, 0, 0, 65, 55, 35, 55, 35, 7, 35, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 55, 3, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 2, 151, 27, 233, 35, 181, 35, 205, 27, 206, 192, 1, 194, 103, 186, 72, 72, 93, 9, 8, 55, 55, 56, 158, 94, 245, 43, 69, 1, 12, 59, 93, 31, 30, 25, 7, 9, 60, 46, 46, 120, 68, 247, 4, 80, 151, 201, 201, 151, 251, 176, 1, 56, 56, 56, 165, 108, 99, 153, 53, 52, 56, 3, 1, 247, 254, 114, 1, 2, 38, 33, 34, 95, 60, 69, 109, 38, 38, 40, 2, 0, 2, 0, 44, 255, 255, 4, 27, 5, 176, 0, 24, 0, 39, 0, 0, 65, 55, 35, 55, 35, 7, 35, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 55, 3, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 2, 151, 27, 233, 35, 181, 35, 205, 27, 206, 192, 1, 194, 103, 186, 72, 72, 93, 9, 8, 55, 55, 56, 158, 94, 245, 43, 69, 1, 12, 59, 93, 31, 30, 25, 7, 9, 60, 46, 46, 120, 68, 247, 4, 80, 151, 201, 201, 151, 251, 176, 1, 56, 56, 56, 165, 108, 99, 153, 53, 52, 56, 3, 1, 247, 254, 114, 1, 2, 38, 33, 34, 95, 60, 69, 109, 38, 38, 40, 2, 0, 1, 0, 12, 0, 0, 4, 165, 5, 176, 0, 13, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 35, 7, 51, 3, 51, 19, 2, 119, 27, 254, 251, 82, 2, 171, 27, 252, 159, 108, 177, 27, 178, 119, 182, 118, 2, 172, 151, 1, 213, 152, 253, 147, 151, 253, 84, 2, 172, 0, 0, 1, 255, 230, 0, 0, 4, 95, 4, 58, 0, 13, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 35, 7, 51, 3, 51, 19, 2, 81, 27, 255, 0, 52, 2, 164, 27, 252, 166, 79, 181, 27, 182, 83, 182, 83, 1, 223, 151, 1, 43, 153, 254, 60, 151, 254, 33, 1, 223, 0, 0, 1, 0, 69, 0, 0, 5, 16, 5, 176, 0, 20, 0, 0, 65, 55, 33, 55, 35, 7, 35, 7, 51, 3, 51, 19, 51, 1, 51, 1, 1, 35, 1, 35, 19, 2, 198, 27, 254, 247, 31, 181, 31, 173, 27, 174, 196, 181, 115, 171, 1, 70, 208, 254, 127, 2, 99, 220, 253, 226, 144, 56, 4, 105, 151, 176, 176, 151, 251, 151, 2, 147, 253, 109, 2, 229, 2, 203, 253, 122, 1, 63, 0, 1, 0, 76, 0, 0, 4, 110, 6, 0, 0, 20, 0, 0, 65, 55, 35, 55, 35, 7, 35, 7, 51, 3, 51, 19, 55, 1, 51, 1, 1, 35, 1, 7, 19, 2, 192, 27, 235, 29, 182, 29, 202, 27, 202, 211, 182, 63, 163, 1, 41, 215, 254, 136, 2, 2, 236, 254, 110, 133, 106, 4, 193, 151, 168, 168, 151, 251, 63, 1, 110, 137, 254, 9, 2, 110, 1, 204, 254, 159, 123, 2, 99, 0, 255, 255, 0, 53, 254, 138, 4, 160, 7, 63, 6, 38, 1, 166, 0, 0, 0, 39, 1, 95, 0, 71, 1, 140, 0, 7, 0, 95, 2, 71, 255, 218, 255, 255, 0, 55, 254, 138, 4, 115, 5, 244, 6, 38, 1, 185, 0, 0, 0, 38, 1, 95, 9, 65, 0, 7, 0, 95, 2, 68, 255, 218, 255, 255, 0, 32, 254, 138, 4, 180, 5, 176, 6, 38, 0, 9, 0, 0, 0, 7, 0, 95, 2, 61, 255, 218, 255, 255, 0, 55, 254, 138, 4, 115, 4, 58, 6, 38, 1, 189, 0, 0, 0, 7, 0, 95, 2, 68, 255, 218, 255, 255, 0, 39, 254, 138, 4, 192, 5, 176, 6, 38, 0, 14, 0, 0, 0, 7, 0, 95, 2, 101, 255, 218, 255, 255, 0, 28, 254, 138, 4, 119, 4, 58, 6, 38, 1, 188, 0, 0, 0, 7, 0, 95, 2, 72, 255, 218, 255, 255, 255, 202, 254, 138, 4, 160, 5, 176, 6, 38, 1, 167, 0, 0, 0, 7, 0, 95, 2, 72, 255, 218, 255, 255, 255, 210, 254, 138, 4, 114, 4, 58, 6, 38, 1, 187, 0, 0, 0, 7, 0, 95, 2, 67, 255, 218, 0, 1, 0, 212, 0, 0, 4, 241, 5, 176, 0, 15, 0, 0, 65, 55, 35, 1, 35, 1, 49, 3, 35, 19, 35, 7, 51, 3, 51, 19, 3, 116, 27, 154, 1, 252, 215, 254, 64, 194, 196, 239, 159, 27, 222, 90, 168, 94, 2, 18, 151, 3, 7, 253, 38, 2, 218, 252, 249, 151, 253, 238, 2, 18, 0, 1, 0, 157, 254, 96, 4, 204, 4, 58, 0, 17, 0, 0, 69, 55, 35, 1, 35, 1, 7, 49, 39, 3, 35, 19, 35, 7, 51, 3, 51, 19, 3, 44, 27, 179, 2, 56, 194, 254, 58, 46, 5, 196, 176, 244, 181, 27, 214, 70, 182, 71, 11, 151, 3, 174, 252, 249, 103, 85, 3, 25, 252, 82, 151, 254, 107, 1, 149, 0, 0, 1, 255, 241, 0, 0, 4, 238, 5, 176, 0, 17, 0, 0, 65, 55, 35, 1, 35, 1, 3, 35, 1, 35, 7, 51, 1, 51, 1, 19, 51, 1, 3, 156, 27, 150, 1, 205, 223, 254, 119, 211, 201, 1, 6, 164, 27, 169, 254, 23, 224, 1, 148, 220, 201, 254, 233, 2, 158, 151, 2, 123, 253, 198, 2, 58, 253, 133, 151, 253, 98, 2, 69, 253, 187, 2, 158, 0, 0, 1, 0, 6, 0, 0, 4, 152, 4, 58, 0, 17, 0, 0, 65, 55, 35, 1, 35, 1, 3, 35, 1, 35, 7, 51, 1, 51, 1, 19, 51, 1, 3, 115, 27, 135, 1, 145, 224, 254, 169, 214, 197, 1, 2, 165, 27, 171, 254, 83, 223, 1, 98, 226, 196, 254, 233, 1, 225, 151, 1, 194, 254, 112, 1, 144, 254, 62, 151, 254, 31, 1, 155, 254, 101, 1, 225, 0, 255, 255, 0, 80, 255, 234, 4, 79, 4, 78, 6, 6, 1, 137, 0, 0, 0, 1, 0, 87, 2, 139, 4, 152, 3, 34, 0, 3, 0, 0, 65, 55, 33, 7, 4, 117, 35, 251, 226, 35, 2, 139, 151, 151, 0, 0, 0, 1, 0, 0, 3, 231, 0, 208, 0, 22, 0, 144, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 28, 0, 125, 0, 229, 1, 47, 1, 75, 1, 99, 1, 200, 1, 227, 1, 254, 2, 49, 2, 80, 2, 97, 2, 130, 2, 155, 3, 22, 3, 81, 3, 209, 4, 18, 4, 136, 4, 157, 4, 211, 4, 233, 5, 15, 5, 45, 5, 69, 5, 93, 5, 220, 6, 76, 6, 175, 7, 26, 7, 112, 7, 164, 8, 41, 8, 99, 8, 141, 8, 204, 8, 236, 9, 4, 9, 91, 9, 146, 9, 242, 10, 99, 10, 210, 10, 255, 11, 126, 11, 180, 11, 232, 11, 254, 12, 36, 12, 66, 12, 116, 12, 141, 13, 17, 13, 36, 13, 110, 13, 233, 14, 11, 14, 92, 14, 211, 14, 230, 15, 130, 15, 253, 16, 17, 16, 86, 16, 201, 17, 60, 17, 147, 17, 242, 18, 41, 18, 192, 18, 233, 19, 156, 19, 254, 20, 211, 21, 84, 21, 145, 22, 6, 22, 37, 22, 157, 22, 252, 23, 87, 23, 194, 24, 20, 24, 72, 24, 151, 24, 163, 25, 0, 25, 107, 25, 225, 26, 20, 26, 53, 26, 146, 26, 248, 27, 19, 27, 42, 27, 54, 27, 67, 27, 84, 27, 108, 27, 153, 27, 167, 27, 181, 27, 195, 27, 209, 27, 226, 27, 253, 28, 24, 28, 51, 28, 73, 28, 86, 28, 99, 28, 142, 28, 150, 28, 158, 28, 222, 29, 26, 29, 48, 29, 69, 29, 151, 29, 227, 29, 247, 30, 11, 30, 38, 30, 52, 30, 87, 30, 120, 30, 172, 30, 194, 30, 232, 31, 114, 31, 138, 31, 162, 31, 195, 31, 227, 31, 245, 32, 4, 32, 20, 32, 36, 32, 211, 33, 202, 33, 218, 33, 239, 34, 10, 34, 49, 34, 222, 35, 115, 35, 158, 35, 237, 36, 17, 36, 74, 36, 190, 37, 151, 38, 128, 38, 161, 38, 183, 39, 8, 39, 20, 39, 32, 39, 44, 39, 56, 39, 68, 39, 80, 39, 152, 39, 164, 39, 176, 39, 188, 39, 200, 39, 212, 39, 224, 39, 235, 39, 247, 40, 3, 40, 80, 40, 92, 40, 104, 40, 116, 40, 128, 40, 140, 40, 152, 40, 164, 40, 176, 40, 228, 41, 44, 41, 121, 41, 133, 41, 145, 41, 157, 41, 204, 41, 216, 41, 228, 41, 240, 41, 252, 42, 8, 42, 20, 42, 32, 42, 44, 42, 116, 42, 128, 42, 140, 42, 152, 42, 164, 42, 176, 42, 188, 42, 200, 42, 231, 42, 243, 42, 255, 43, 11, 43, 23, 43, 35, 43, 47, 43, 59, 43, 71, 43, 83, 43, 226, 43, 238, 43, 250, 44, 137, 44, 149, 44, 161, 44, 173, 44, 185, 44, 197, 44, 209, 44, 221, 44, 232, 44, 244, 45, 20, 45, 32, 45, 44, 45, 56, 45, 68, 45, 80, 45, 92, 45, 167, 45, 179, 45, 191, 46, 31, 46, 43, 46, 55, 46, 67, 46, 79, 46, 91, 46, 103, 46, 115, 46, 127, 46, 139, 46, 151, 46, 163, 46, 175, 46, 187, 46, 199, 46, 210, 46, 222, 46, 233, 46, 244, 46, 255, 47, 171, 47, 182, 47, 193, 47, 205, 47, 217, 47, 229, 47, 240, 47, 251, 48, 7, 48, 19, 48, 137, 48, 149, 48, 160, 48, 171, 48, 182, 48, 193, 48, 204, 48, 215, 48, 226, 49, 51, 49, 181, 49, 192, 49, 203, 49, 214, 50, 26, 50, 38, 50, 50, 50, 61, 50, 73, 50, 84, 50, 95, 50, 106, 50, 211, 50, 223, 50, 235, 50, 247, 51, 3, 51, 15, 51, 27, 51, 39, 51, 78, 51, 89, 51, 100, 51, 112, 51, 124, 51, 136, 51, 147, 51, 158, 51, 169, 51, 180, 52, 45, 52, 57, 52, 68, 52, 187, 52, 198, 52, 210, 52, 221, 52, 232, 52, 244, 53, 0, 53, 11, 53, 22, 53, 33, 53, 102, 53, 114, 53, 125, 53, 136, 53, 147, 53, 158, 53, 169, 53, 246, 54, 2, 54, 13, 54, 112, 54, 123, 54, 135, 54, 147, 54, 158, 54, 169, 54, 180, 54, 192, 54, 204, 54, 215, 54, 226, 54, 238, 54, 249, 55, 4, 55, 19, 55, 34, 55, 56, 55, 119, 55, 133, 55, 179, 55, 205, 55, 250, 56, 71, 56, 95, 56, 117, 56, 142, 56, 195, 56, 246, 57, 12, 57, 12, 57, 25, 57, 84, 57, 97, 57, 121, 57, 179, 58, 21, 58, 61, 58, 105, 58, 177, 58, 192, 58, 207, 58, 216, 59, 10, 59, 32, 59, 47, 59, 100, 59, 108, 59, 126, 59, 153, 60, 28, 60, 47, 60, 76, 60, 97, 60, 128, 60, 224, 61, 32, 61, 152, 62, 37, 62, 166, 62, 194, 63, 87, 63, 227, 64, 66, 64, 123, 64, 253, 65, 41, 65, 119, 66, 10, 66, 63, 66, 168, 67, 21, 67, 114, 67, 161, 67, 226, 68, 97, 68, 175, 69, 61, 69, 196, 70, 20, 70, 160, 70, 242, 71, 96, 71, 203, 72, 16, 72, 77, 72, 105, 72, 167, 72, 227, 73, 16, 73, 144, 73, 170, 73, 225, 74, 19, 74, 47, 74, 95, 74, 121, 74, 154, 74, 215, 75, 25, 75, 83, 75, 193, 76, 74, 76, 138, 77, 9, 77, 119, 77, 137, 77, 195, 77, 240, 78, 125, 78, 151, 78, 182, 78, 232, 79, 5, 79, 32, 79, 53, 79, 74, 79, 177, 79, 204, 79, 252, 80, 22, 80, 54, 80, 115, 80, 182, 80, 241, 81, 79, 81, 212, 82, 22, 82, 122, 82, 220, 83, 56, 83, 126, 83, 194, 83, 221, 84, 85, 84, 206, 85, 21, 85, 156, 86, 21, 86, 58, 86, 95, 86, 144, 86, 192, 87, 16, 87, 93, 87, 184, 88, 9, 88, 162, 89, 68, 89, 199, 90, 37, 90, 81, 90, 130, 91, 43, 91, 208, 92, 92, 92, 200, 93, 189, 94, 155, 95, 34, 95, 169, 96, 4, 96, 78, 96, 120, 96, 140, 96, 201, 96, 218, 96, 235, 98, 41, 98, 128, 98, 196, 99, 62, 99, 83, 99, 104, 99, 164, 99, 233, 100, 17, 100, 57, 100, 90, 100, 123, 100, 154, 100, 185, 101, 10, 101, 73, 102, 3, 102, 168, 102, 201, 102, 234, 103, 34, 103, 90, 103, 136, 104, 21, 104, 149, 104, 212, 105, 19, 105, 72, 105, 125, 105, 245, 106, 68, 106, 147, 106, 163, 106, 179, 106, 238, 107, 78, 107, 251, 108, 124, 108, 248, 109, 108, 109, 220, 110, 77, 110, 189, 111, 21, 111, 110, 111, 213, 112, 42, 112, 117, 112, 192, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 59, 113, 71, 113, 98, 113, 111, 113, 144, 113, 196, 114, 40, 114, 214, 115, 70, 115, 204, 116, 41, 116, 215, 117, 229, 118, 203, 119, 121, 119, 255, 120, 21, 120, 52, 120, 78, 121, 55, 121, 122, 121, 159, 121, 159, 122, 174, 123, 14, 123, 90, 123, 152, 123, 179, 123, 206, 124, 3, 124, 30, 124, 61, 124, 157, 124, 247, 125, 46, 125, 74, 125, 98, 125, 190, 125, 217, 125, 244, 126, 39, 126, 70, 126, 87, 126, 116, 126, 141, 126, 246, 127, 86, 127, 151, 128, 37, 128, 58, 128, 112, 128, 135, 128, 175, 128, 206, 128, 234, 129, 3, 129, 102, 129, 156, 129, 170, 129, 252, 130, 29, 130, 132, 130, 147, 130, 186, 130, 245, 131, 20, 131, 119, 131, 127, 131, 135, 131, 147, 131, 158, 131, 170, 131, 181, 131, 193, 131, 205, 131, 217, 131, 229, 131, 241, 131, 252, 132, 7, 132, 19, 132, 31, 132, 43, 132, 54, 132, 65, 132, 77, 132, 88, 132, 100, 132, 111, 132, 123, 132, 135, 132, 146, 132, 157, 132, 168, 132, 179, 132, 190, 132, 201, 132, 213, 132, 225, 132, 236, 132, 248, 133, 3, 133, 15, 133, 26, 133, 38, 133, 49, 133, 60, 133, 72, 133, 84, 133, 95, 133, 106, 133, 117, 133, 128, 133, 202, 133, 213, 133, 224, 133, 235, 133, 246, 134, 1, 134, 12, 134, 23, 134, 95, 134, 106, 134, 117, 134, 128, 134, 140, 134, 151, 134, 163, 134, 174, 134, 185, 135, 1, 135, 12, 135, 24, 135, 36, 135, 48, 135, 60, 135, 72, 135, 84, 135, 96, 135, 108, 135, 119, 135, 130, 135, 141, 135, 153, 135, 164, 135, 176, 135, 187, 135, 198, 135, 209, 135, 220, 135, 231, 135, 242, 135, 254, 136, 9, 136, 20, 136, 32, 136, 44, 136, 140, 136, 151, 136, 162, 136, 173, 136, 184, 136, 195, 136, 206, 136, 218, 136, 230, 136, 242, 136, 254, 137, 10, 137, 22, 137, 34, 137, 45, 137, 53, 137, 61, 137, 69, 137, 77, 137, 85, 137, 93, 137, 101, 137, 109, 137, 117, 137, 125, 137, 133, 137, 141, 137, 149, 137, 157, 137, 169, 137, 181, 137, 192, 137, 203, 137, 214, 137, 225, 137, 236, 137, 244, 137, 252, 138, 4, 138, 12, 138, 20, 138, 31, 138, 42, 138, 53, 138, 64, 138, 75, 138, 87, 138, 99, 138, 226, 138, 234, 138, 246, 138, 254, 139, 6, 139, 18, 139, 30, 139, 38, 139, 46, 139, 54, 139, 62, 139, 74, 139, 82, 139, 90, 139, 98, 139, 106, 139, 114, 139, 122, 139, 130, 139, 138, 139, 146, 139, 154, 139, 162, 139, 173, 139, 181, 139, 189, 140, 27, 140, 35, 140, 43, 140, 54, 140, 65, 140, 73, 140, 81, 140, 92, 140, 100, 140, 111, 140, 122, 140, 134, 140, 145, 140, 153, 140, 165, 140, 177, 140, 188, 140, 199, 140, 211, 140, 223, 140, 235, 140, 246, 141, 1, 141, 9, 141, 17, 141, 29, 141, 41, 141, 52, 141, 63, 141, 74, 141, 85, 141, 93, 141, 101, 141, 109, 141, 121, 141, 132, 141, 140, 141, 152, 141, 163, 141, 175, 141, 186, 141, 194, 141, 202, 141, 214, 141, 225, 141, 237, 141, 245, 142, 0, 142, 12, 142, 23, 142, 35, 142, 46, 142, 58, 142, 69, 142, 81, 142, 92, 142, 104, 142, 115, 142, 123, 142, 131, 142, 143, 142, 154, 142, 166, 142, 177, 142, 189, 142, 200, 142, 212, 142, 223, 142, 235, 142, 247, 143, 3, 143, 14, 143, 26, 143, 37, 143, 49, 143, 61, 143, 69, 143, 81, 143, 93, 143, 105, 143, 117, 143, 129, 143, 141, 143, 153, 143, 164, 143, 176, 143, 187, 143, 199, 143, 210, 143, 222, 143, 233, 143, 249, 144, 9, 144, 21, 144, 32, 144, 44, 144, 55, 144, 67, 144, 78, 144, 90, 144, 101, 144, 117, 144, 132, 144, 144, 144, 156, 144, 168, 144, 180, 144, 192, 144, 204, 144, 216, 144, 227, 144, 239, 144, 250, 145, 6, 145, 17, 145, 29, 145, 40, 145, 56, 145, 71, 145, 83, 145, 95, 145, 107, 145, 119, 145, 131, 145, 143, 145, 155, 145, 167, 145, 179, 145, 190, 145, 202, 145, 213, 145, 225, 145, 236, 145, 248, 146, 3, 146, 19, 146, 34, 146, 46, 146, 58, 146, 70, 146, 81, 146, 93, 146, 105, 146, 117, 146, 129, 146, 141, 146, 153, 146, 165, 146, 177, 146, 189, 146, 201, 146, 213, 146, 224, 146, 236, 146, 247, 147, 3, 147, 15, 147, 27, 147, 39, 147, 51, 147, 63, 147, 75, 147, 87, 147, 99, 147, 111, 147, 123, 147, 135, 147, 150, 147, 162, 147, 174, 147, 186, 147, 198, 147, 210, 147, 222, 147, 234, 147, 246, 148, 2, 148, 14, 148, 26, 148, 38, 148, 50, 148, 62, 148, 74, 148, 86, 148, 98, 148, 110, 148, 118, 148, 188, 149, 0, 149, 68, 149, 98, 149, 128, 149, 169, 149, 211, 149, 227, 149, 242, 149, 254, 150, 10, 150, 22, 150, 34, 150, 46, 150, 58, 150, 90, 150, 125, 150, 164, 150, 203, 150, 211, 150, 225, 0, 1, 0, 0, 0, 3, 0, 0, 220, 76, 8, 224, 95, 15, 60, 245, 0, 11, 8, 0, 0, 0, 0, 0, 196, 240, 17, 46, 0, 0, 0, 0, 218, 216, 63, 171, 252, 172, 253, 213, 6, 164, 8, 98, 0, 2, 0, 9, 0, 2, 0, 0, 0, 0, 0, 0, 4, 178, 0, 0, 0, 0, 255, 226, 0, 62, 0, 100, 0, 46, 0, 72, 0, 81, 0, 96, 0, 32, 0, 64, 0, 63, 0, 62, 0, 88, 0, 39, 0, 34, 0, 102, 0, 81, 0, 93, 0, 71, 0, 83, 0, 194, 0, 104, 0, 205, 0, 149, 255, 241, 0, 212, 0, 19, 0, 97, 0, 65, 0, 122, 0, 118, 0, 108, 0, 205, 0, 45, 0, 64, 0, 92, 0, 35, 0, 66, 0, 92, 255, 242, 0, 64, 0, 99, 255, 247, 0, 118, 0, 215, 0, 124, 0, 196, 0, 141, 0, 174, 0, 132, 0, 6, 255, 228, 0, 61, 0, 127, 1, 26, 0, 15, 0, 47, 0, 27, 0, 143, 0, 117, 0, 191, 0, 128, 0, 195, 1, 223, 1, 79, 1, 107, 1, 71, 1, 77, 0, 154, 0, 167, 0, 106, 255, 178, 255, 241, 0, 56, 0, 14, 0, 40, 0, 58, 255, 247, 0, 76, 0, 59, 0, 138, 0, 119, 0, 126, 0, 9, 0, 86, 0, 2, 255, 215, 0, 3, 0, 19, 0, 16, 1, 128, 1, 81, 1, 23, 0, 86, 0, 194, 1, 142, 1, 191, 1, 66, 0, 174, 1, 255, 1, 169, 0, 20, 0, 204, 0, 82, 0, 87, 2, 38, 1, 158, 2, 41, 2, 24, 1, 32, 1, 139, 1, 125, 0, 151, 2, 38, 1, 158, 1, 70, 0, 160, 1, 14, 0, 250, 1, 52, 0, 178, 1, 118, 1, 44, 0, 114, 0, 172, 0, 96, 0, 129, 0, 111, 0, 126, 0, 122, 0, 94, 0, 161, 0, 101, 0, 79, 0, 87, 0, 189, 0, 114, 1, 120, 0, 233, 0, 130, 0, 92, 1, 111, 1, 88, 0, 166, 0, 23, 0, 67, 0, 67, 0, 233, 1, 198, 0, 217, 0, 26, 0, 57, 0, 67, 255, 215, 1, 7, 0, 232, 0, 28, 255, 226, 255, 226, 255, 226, 255, 226, 255, 226, 255, 226, 255, 226, 255, 226, 255, 226, 255, 226, 255, 178, 0, 100, 0, 100, 0, 100, 0, 100, 0, 46, 255, 211, 0, 72, 0, 72, 0, 72, 0, 72, 0, 72, 0, 72, 0, 72, 0, 72, 0, 65, 0, 72, 255, 211, 0, 96, 0, 96, 0, 96, 0, 29, 0, 32, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 63, 0, 62, 0, 88, 0, 88, 0, 88, 0, 88, 0, 51, 0, 34, 0, 34, 0, 34, 0, 34, 0, 102, 0, 102, 0, 102, 0, 102, 0, 102, 0, 95, 0, 102, 0, 102, 255, 198, 255, 198, 0, 102, 0, 71, 0, 71, 0, 71, 0, 83, 0, 83, 0, 83, 0, 83, 0, 194, 0, 194, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 105, 0, 104, 0, 104, 0, 149, 0, 149, 0, 149, 0, 149, 0, 212, 0, 212, 0, 212, 0, 212, 0, 19, 0, 19, 0, 19, 0, 97, 0, 97, 0, 97, 0, 97, 0, 97, 0, 97, 0, 97, 0, 97, 0, 97, 0, 97, 255, 241, 0, 122, 0, 122, 0, 122, 0, 122, 0, 48, 0, 103, 0, 108, 0, 108, 0, 108, 0, 108, 0, 108, 0, 108, 0, 108, 0, 108, 0, 74, 0, 108, 0, 45, 0, 45, 0, 45, 0, 79, 0, 64, 0, 92, 0, 92, 0, 92, 0, 92, 0, 92, 0, 92, 0, 92, 0, 92, 0, 1, 0, 66, 0, 92, 0, 22, 0, 92, 0, 21, 0, 92, 0, 64, 0, 64, 0, 64, 0, 64, 0, 99, 0, 99, 0, 99, 0, 99, 0, 99, 0, 93, 0, 99, 0, 99, 0, 86, 0, 86, 0, 99, 0, 215, 0, 215, 0, 94, 0, 124, 0, 124, 0, 124, 0, 124, 0, 196, 0, 176, 0, 141, 0, 141, 0, 141, 0, 141, 0, 141, 0, 144, 0, 141, 0, 141, 0, 141, 0, 141, 0, 141, 0, 132, 0, 132, 0, 132, 0, 132, 255, 228, 255, 228, 255, 228, 255, 228, 0, 61, 0, 61, 0, 61, 2, 35, 1, 231, 1, 46, 0, 240, 1, 104, 1, 182, 2, 102, 1, 142, 2, 8, 1, 88, 1, 193, 252, 172, 1, 23, 1, 1, 0, 173, 0, 0, 0, 189, 0, 6, 0, 150, 0, 92, 0, 20, 255, 229, 1, 82, 0, 1, 1, 15, 253, 141, 253, 225, 253, 13, 253, 240, 252, 187, 2, 138, 1, 142, 2, 53, 0, 71, 255, 192, 0, 102, 255, 200, 0, 36, 0, 53, 0, 4, 0, 80, 0, 132, 255, 249, 0, 103, 255, 254, 0, 157, 0, 91, 0, 80, 0, 130, 0, 54, 0, 166, 0, 233, 255, 203, 0, 134, 0, 110, 255, 239, 0, 95, 0, 83, 0, 223, 0, 121, 0, 87, 0, 85, 0, 54, 0, 111, 0, 193, 0, 39, 0, 162, 0, 114, 255, 186, 0, 22, 0, 186, 0, 53, 0, 53, 255, 184, 255, 176, 0, 46, 0, 53, 255, 202, 0, 1, 0, 57, 0, 228, 0, 17, 0, 17, 0, 170, 0, 35, 0, 58, 0, 78, 0, 11, 255, 209, 0, 101, 0, 55, 0, 73, 255, 167, 255, 163, 0, 79, 0, 55, 0, 54, 255, 210, 0, 28, 0, 55, 0, 55, 0, 158, 0, 98, 0, 60, 0, 159, 0, 21, 0, 10, 0, 112, 0, 35, 0, 56, 0, 80, 0, 5, 255, 222, 0, 56, 0, 121, 255, 196, 0, 21, 0, 63, 0, 56, 0, 56, 0, 43, 0, 109, 0, 17, 0, 46, 255, 185, 255, 231, 0, 5, 0, 4, 255, 235, 255, 254, 255, 229, 255, 230, 0, 68, 0, 88, 0, 95, 0, 68, 0, 177, 0, 166, 0, 38, 0, 30, 0, 102, 0, 96, 0, 30, 0, 55, 0, 62, 0, 44, 0, 142, 0, 165, 0, 66, 1, 48, 1, 115, 2, 82, 2, 175, 254, 121, 254, 189, 0, 81, 255, 247, 0, 72, 0, 72, 0, 75, 0, 74, 0, 64, 0, 54, 0, 165, 0, 111, 0, 6, 0, 2, 0, 1, 0, 8, 0, 97, 0, 78, 0, 177, 0, 107, 0, 228, 0, 164, 0, 116, 0, 115, 0, 79, 0, 89, 0, 70, 0, 72, 0, 69, 0, 77, 0, 103, 0, 28, 0, 1, 255, 247, 0, 58, 0, 40, 0, 67, 0, 175, 0, 133, 1, 13, 0, 244, 255, 176, 255, 202, 0, 3, 0, 9, 0, 130, 0, 133, 0, 195, 0, 128, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 243, 1, 26, 0, 254, 1, 36, 1, 73, 0, 113, 0, 157, 0, 188, 0, 12, 0, 134, 0, 197, 0, 119, 0, 105, 0, 183, 0, 97, 0, 34, 255, 154, 0, 59, 0, 50, 0, 84, 0, 161, 0, 0, 255, 240, 0, 1, 1, 116, 1, 96, 0, 207, 1, 110, 1, 205, 2, 76, 255, 199, 0, 97, 0, 89, 0, 73, 0, 89, 0, 119, 0, 100, 0, 46, 0, 106, 0, 104, 0, 70, 0, 98, 0, 46, 0, 84, 0, 113, 0, 72, 0, 35, 0, 94, 0, 161, 0, 134, 0, 185, 0, 145, 255, 238, 0, 178, 0, 85, 1, 220, 1, 205, 1, 52, 2, 52, 2, 69, 1, 253, 1, 80, 0, 173, 0, 93, 0, 59, 0, 99, 0, 0, 0, 204, 0, 100, 0, 122, 0, 96, 0, 45, 0, 21, 0, 83, 0, 124, 0, 194, 0, 196, 0, 194, 0, 161, 0, 196, 255, 217, 255, 217, 0, 161, 255, 199, 255, 199, 255, 199, 255, 199, 255, 199, 255, 199, 255, 199, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 106, 0, 106, 0, 106, 0, 106, 0, 84, 0, 113, 0, 113, 0, 113, 0, 113, 0, 113, 0, 134, 0, 134, 0, 134, 0, 134, 0, 178, 255, 199, 255, 199, 255, 199, 0, 89, 0, 89, 0, 89, 0, 73, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 100, 0, 100, 0, 100, 0, 46, 0, 106, 0, 106, 0, 106, 0, 106, 0, 106, 0, 104, 0, 70, 0, 98, 0, 98, 0, 98, 0, 98, 0, 84, 0, 84, 0, 84, 0, 113, 0, 113, 0, 113, 0, 35, 0, 35, 0, 35, 0, 94, 0, 94, 0, 94, 0, 94, 0, 161, 0, 134, 0, 134, 0, 134, 0, 134, 0, 134, 0, 134, 0, 145, 0, 178, 0, 178, 0, 85, 0, 85, 0, 85, 255, 226, 0, 81, 0, 64, 0, 48, 0, 112, 255, 247, 0, 3, 0, 233, 255, 226, 0, 62, 0, 72, 0, 19, 0, 32, 0, 64, 0, 62, 0, 39, 0, 34, 0, 102, 0, 81, 0, 194, 0, 212, 255, 241, 0, 64, 0, 212, 0, 103, 0, 80, 0, 54, 0, 233, 0, 121, 0, 76, 0, 99, 0, 6, 0, 174, 0, 6, 0, 233, 0, 121, 0, 99, 0, 121, 0, 54, 0, 72, 0, 71, 0, 83, 0, 64, 0, 64, 0, 63, 0, 59, 0, 62, 0, 1, 255, 226, 0, 62, 0, 71, 0, 72, 0, 53, 0, 39, 0, 32, 0, 102, 0, 53, 0, 81, 0, 100, 0, 194, 0, 80, 255, 241, 0, 97, 0, 108, 0, 55, 0, 99, 255, 247, 0, 121, 255, 228, 0, 6, 0, 108, 0, 73, 0, 124, 0, 92, 0, 92, 0, 35, 0, 54, 255, 228, 1, 128, 0, 1, 2, 24, 0, 39, 255, 242, 255, 226, 0, 97, 0, 5, 0, 72, 0, 53, 0, 108, 0, 55, 0, 132, 0, 85, 0, 177, 0, 166, 0, 46, 0, 79, 0, 100, 0, 122, 0, 212, 0, 157, 0, 64, 255, 176, 255, 163, 0, 64, 255, 226, 0, 97, 255, 226, 0, 97, 255, 178, 255, 241, 0, 72, 0, 108, 0, 77, 0, 138, 0, 138, 255, 176, 255, 163, 0, 46, 0, 79, 0, 53, 0, 55, 0, 53, 0, 55, 0, 102, 0, 99, 0, 95, 0, 68, 0, 95, 0, 68, 0, 78, 0, 80, 0, 1, 255, 228, 0, 1, 255, 228, 0, 1, 255, 228, 0, 228, 0, 159, 0, 35, 0, 35, 255, 241, 0, 6, 0, 118, 255, 202, 255, 210, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 255, 226, 0, 97, 0, 72, 0, 108, 0, 72, 0, 108, 0, 72, 0, 108, 0, 72, 0, 108, 0, 72, 0, 108, 0, 72, 0, 108, 0, 72, 0, 108, 0, 72, 0, 108, 0, 64, 0, 92, 0, 64, 0, 92, 0, 102, 0, 99, 0, 102, 0, 99, 0, 102, 0, 99, 0, 102, 0, 99, 0, 102, 0, 99, 0, 102, 0, 99, 0, 102, 0, 99, 0, 95, 0, 93, 0, 95, 0, 93, 0, 95, 0, 93, 0, 95, 0, 93, 0, 95, 0, 93, 0, 104, 0, 141, 0, 104, 0, 141, 0, 104, 0, 144, 0, 104, 0, 144, 0, 104, 0, 144, 0, 104, 0, 144, 0, 104, 0, 144, 0, 212, 255, 228, 0, 212, 255, 228, 0, 212, 255, 228, 0, 29, 0, 59, 0, 54, 0, 32, 0, 55, 0, 194, 0, 158, 255, 241, 0, 6, 0, 228, 0, 159, 0, 228, 0, 159, 0, 71, 0, 73, 255, 176, 255, 163, 0, 115, 0, 79, 0, 64, 0, 52, 0, 44, 0, 44, 0, 12, 255, 230, 0, 69, 0, 76, 0, 53, 0, 55, 0, 32, 0, 55, 0, 39, 0, 28, 255, 202, 255, 210, 0, 212, 0, 157, 255, 241, 0, 6, 0, 80, 0, 87, 0, 1, 0, 0, 8, 98, 253, 213, 0, 0, 4, 178, 252, 172, 254, 14, 6, 164, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 178, 1, 144, 0, 5, 0, 0, 5, 154, 5, 51, 0, 0, 1, 31, 5, 154, 5, 51, 0, 0, 3, 209, 0, 102, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 91, 0, 0, 0, 32, 0, 0, 0, 0, 112, 121, 114, 115, 0, 1, 0, 13, 255, 253, 8, 98, 253, 213, 0, 0, 8, 98, 2, 43, 32, 0, 1, 159, 0, 0, 0, 0, 4, 58, 5, 176, 0, 0, 0, 32, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 20, 0, 3, 0, 1, 0, 0, 0, 20, 0, 4, 7, 60, 0, 0, 0, 190, 0, 128, 0, 6, 0, 62, 0, 13, 0, 47, 0, 57, 0, 64, 0, 90, 0, 96, 0, 122, 0, 126, 1, 127, 1, 146, 1, 161, 1, 176, 1, 240, 1, 255, 2, 27, 2, 55, 2, 89, 2, 188, 2, 199, 2, 201, 2, 221, 2, 243, 3, 1, 3, 3, 3, 9, 3, 15, 3, 35, 3, 138, 3, 140, 3, 146, 3, 161, 3, 176, 3, 185, 3, 201, 3, 206, 3, 210, 3, 214, 4, 37, 4, 47, 4, 69, 4, 79, 4, 98, 4, 111, 4, 119, 4, 134, 4, 206, 4, 215, 4, 225, 4, 245, 5, 1, 5, 16, 5, 19, 30, 1, 30, 63, 30, 133, 30, 241, 30, 243, 30, 249, 31, 77, 32, 11, 32, 21, 32, 30, 32, 34, 32, 38, 32, 48, 32, 51, 32, 58, 32, 60, 32, 68, 32, 116, 32, 127, 32, 164, 32, 167, 32, 172, 33, 5, 33, 19, 33, 22, 33, 34, 33, 46, 33, 94, 34, 2, 34, 15, 34, 18, 34, 21, 34, 26, 34, 30, 34, 43, 34, 72, 34, 96, 34, 101, 37, 202, 246, 195, 254, 255, 255, 253, 255, 255, 0, 0, 0, 13, 0, 32, 0, 48, 0, 58, 0, 65, 0, 91, 0, 97, 0, 123, 0, 160, 1, 146, 1, 160, 1, 175, 1, 240, 1, 250, 2, 24, 2, 55, 2, 89, 2, 188, 2, 198, 2, 201, 2, 216, 2, 243, 3, 0, 3, 3, 3, 9, 3, 15, 3, 35, 3, 132, 3, 140, 3, 142, 3, 147, 3, 163, 3, 177, 3, 186, 3, 202, 3, 209, 3, 214, 4, 0, 4, 38, 4, 48, 4, 70, 4, 80, 4, 99, 4, 112, 4, 120, 4, 136, 4, 207, 4, 216, 4, 226, 4, 246, 5, 2, 5, 17, 30, 0, 30, 62, 30, 128, 30, 160, 30, 242, 30, 244, 31, 77, 32, 0, 32, 19, 32, 23, 32, 32, 32, 37, 32, 48, 32, 50, 32, 57, 32, 60, 32, 68, 32, 116, 32, 127, 32, 163, 32, 167, 32, 171, 33, 5, 33, 19, 33, 22, 33, 34, 33, 46, 33, 91, 34, 2, 34, 15, 34, 17, 34, 21, 34, 26, 34, 30, 34, 43, 34, 72, 34, 96, 34, 100, 37, 202, 246, 195, 254, 255, 255, 252, 255, 255, 1, 92, 0, 0, 0, 6, 0, 0, 255, 193, 0, 0, 255, 187, 0, 0, 0, 0, 254, 196, 0, 0, 0, 0, 1, 51, 0, 0, 0, 98, 255, 58, 253, 248, 0, 104, 0, 0, 254, 149, 0, 0, 254, 127, 254, 115, 254, 114, 254, 109, 254, 104, 254, 66, 0, 0, 255, 76, 255, 75, 0, 0, 0, 0, 253, 212, 0, 0, 255, 44, 253, 200, 253, 197, 0, 0, 253, 131, 0, 0, 253, 123, 0, 0, 253, 112, 0, 0, 253, 108, 0, 0, 254, 108, 0, 0, 254, 105, 0, 0, 253, 20, 0, 0, 229, 39, 228, 231, 0, 0, 228, 198, 0, 0, 228, 196, 227, 220, 226, 37, 0, 0, 0, 0, 0, 0, 0, 0, 224, 93, 224, 64, 224, 65, 226, 230, 224, 71, 225, 192, 225, 182, 223, 180, 223, 178, 0, 0, 225, 50, 225, 37, 225, 35, 223, 114, 225, 12, 224, 224, 224, 61, 224, 49, 0, 0, 222, 116, 224, 40, 224, 37, 224, 25, 222, 59, 222, 34, 222, 34, 220, 123, 10, 165, 3, 71, 2, 75, 0, 1, 0, 0, 0, 188, 0, 0, 0, 216, 0, 0, 0, 226, 0, 0, 0, 234, 0, 240, 0, 0, 2, 172, 2, 174, 0, 0, 2, 174, 0, 0, 0, 0, 0, 0, 0, 0, 2, 176, 0, 0, 2, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 174, 0, 0, 0, 0, 2, 182, 2, 210, 0, 0, 2, 234, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 3, 74, 0, 0, 3, 114, 0, 0, 3, 148, 0, 0, 3, 160, 0, 0, 4, 42, 0, 0, 4, 58, 0, 0, 4, 78, 0, 0, 0, 0, 4, 78, 0, 0, 4, 86, 0, 0, 0, 0, 0, 0, 4, 82, 4, 86, 4, 100, 4, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 91, 0, 107, 0, 151, 0, 82, 0, 140, 0, 152, 0, 106, 0, 116, 0, 117, 0, 150, 0, 124, 0, 95, 0, 103, 0, 96, 0, 137, 0, 97, 0, 98, 0, 132, 0, 129, 0, 133, 0, 93, 0, 153, 0, 118, 0, 138, 0, 119, 0, 156, 0, 102, 1, 90, 0, 120, 0, 142, 0, 121, 0, 157, 2, 115, 0, 92, 0, 83, 0, 84, 0, 90, 0, 85, 0, 143, 0, 154, 1, 97, 0, 146, 0, 67, 1, 106, 0, 136, 2, 116, 0, 147, 1, 94, 0, 149, 0, 126, 0, 65, 0, 66, 1, 91, 1, 107, 0, 155, 0, 100, 1, 102, 0, 64, 0, 68, 1, 108, 0, 70, 0, 69, 0, 71, 0, 94, 0, 162, 0, 158, 0, 160, 0, 167, 0, 161, 0, 165, 0, 72, 0, 171, 0, 181, 0, 175, 0, 178, 0, 179, 0, 196, 0, 191, 0, 193, 0, 194, 0, 185, 0, 210, 0, 215, 0, 211, 0, 213, 0, 221, 0, 214, 0, 127, 0, 219, 0, 235, 0, 231, 0, 233, 0, 234, 0, 246, 0, 77, 0, 80, 1, 1, 0, 253, 0, 255, 1, 6, 1, 0, 1, 4, 0, 73, 1, 10, 1, 20, 1, 14, 1, 17, 1, 18, 1, 33, 1, 29, 1, 31, 1, 32, 0, 76, 1, 47, 1, 52, 1, 48, 1, 50, 1, 58, 1, 51, 0, 128, 1, 56, 1, 72, 1, 68, 1, 70, 1, 71, 1, 83, 0, 78, 1, 85, 0, 163, 1, 2, 0, 159, 0, 254, 0, 164, 1, 3, 0, 169, 1, 8, 0, 172, 1, 11, 2, 117, 2, 118, 0, 170, 1, 9, 0, 173, 1, 12, 0, 174, 1, 13, 0, 182, 1, 21, 0, 176, 1, 15, 0, 180, 1, 19, 0, 184, 1, 23, 0, 177, 1, 16, 0, 187, 1, 25, 0, 186, 1, 24, 2, 119, 2, 120, 0, 188, 1, 26, 0, 190, 1, 28, 0, 189, 1, 27, 0, 199, 1, 36, 0, 197, 1, 34, 0, 192, 1, 30, 0, 198, 1, 35, 0, 195, 1, 109, 1, 110, 1, 111, 0, 200, 1, 37, 0, 201, 1, 38, 0, 79, 0, 202, 1, 39, 0, 204, 1, 41, 0, 203, 1, 40, 0, 205, 1, 42, 0, 206, 1, 43, 0, 207, 1, 44, 0, 209, 1, 46, 0, 208, 1, 45, 2, 121, 0, 183, 1, 22, 0, 218, 1, 55, 0, 212, 1, 49, 0, 217, 1, 54, 0, 74, 0, 75, 0, 222, 1, 59, 0, 224, 1, 61, 0, 223, 1, 60, 0, 225, 1, 62, 0, 228, 1, 65, 0, 227, 1, 64, 0, 226, 1, 63, 2, 126, 2, 128, 0, 230, 1, 67, 0, 229, 1, 66, 0, 241, 1, 78, 0, 238, 1, 75, 0, 232, 1, 69, 0, 240, 1, 77, 0, 237, 1, 74, 0, 239, 1, 76, 0, 243, 1, 80, 0, 247, 1, 84, 0, 248, 0, 250, 1, 87, 0, 252, 1, 89, 0, 251, 1, 88, 1, 112, 0, 216, 1, 53, 0, 236, 1, 73, 0, 166, 1, 5, 0, 168, 1, 7, 0, 220, 1, 57, 1, 92, 1, 100, 1, 95, 1, 96, 1, 98, 1, 103, 1, 93, 1, 99, 1, 120, 1, 121, 2, 212, 1, 122, 2, 213, 2, 214, 2, 215, 1, 123, 1, 124, 2, 222, 2, 223, 2, 224, 1, 125, 2, 225, 2, 226, 1, 126, 2, 227, 2, 228, 1, 127, 2, 229, 1, 128, 2, 230, 1, 129, 2, 231, 2, 232, 1, 130, 2, 233, 1, 131, 1, 132, 2, 234, 2, 235, 2, 236, 2, 237, 2, 238, 2, 239, 2, 240, 2, 241, 1, 142, 2, 243, 2, 244, 1, 143, 2, 242, 1, 144, 1, 145, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 2, 245, 1, 151, 1, 152, 3, 42, 2, 251, 1, 156, 2, 252, 1, 157, 2, 253, 2, 254, 2, 255, 3, 0, 1, 158, 1, 159, 1, 160, 3, 2, 3, 43, 3, 3, 1, 161, 3, 4, 1, 162, 3, 5, 3, 6, 1, 163, 3, 7, 1, 164, 1, 165, 1, 166, 3, 8, 3, 1, 1, 167, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 1, 168, 3, 16, 3, 17, 3, 18, 1, 179, 1, 180, 1, 181, 1, 182, 3, 19, 1, 183, 1, 184, 1, 185, 3, 20, 1, 186, 1, 187, 1, 188, 1, 189, 3, 21, 1, 190, 3, 22, 3, 23, 1, 191, 3, 24, 1, 192, 3, 25, 3, 44, 3, 26, 1, 203, 3, 27, 1, 204, 3, 28, 3, 29, 3, 30, 3, 31, 1, 205, 1, 206, 1, 207, 3, 32, 3, 45, 3, 33, 1, 208, 1, 209, 1, 210, 3, 212, 3, 46, 3, 47, 1, 224, 1, 225, 1, 226, 1, 227, 3, 48, 3, 49, 1, 243, 1, 244, 3, 217, 3, 218, 3, 211, 3, 210, 1, 245, 1, 246, 1, 247, 1, 248, 3, 213, 3, 214, 1, 249, 1, 250, 3, 205, 3, 206, 3, 50, 3, 51, 3, 191, 3, 192, 1, 251, 1, 252, 3, 215, 3, 216, 1, 253, 1, 254, 3, 193, 3, 194, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 3, 52, 3, 53, 3, 195, 3, 196, 3, 54, 3, 55, 3, 225, 3, 226, 3, 197, 3, 198, 2, 5, 2, 6, 3, 199, 3, 200, 2, 7, 2, 8, 2, 9, 3, 209, 2, 10, 2, 11, 3, 207, 3, 208, 3, 56, 3, 57, 3, 58, 2, 12, 2, 13, 3, 223, 3, 224, 2, 14, 2, 15, 3, 219, 3, 220, 3, 201, 3, 202, 3, 221, 3, 222, 2, 16, 3, 69, 3, 68, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 2, 17, 2, 18, 3, 203, 3, 204, 3, 95, 3, 96, 2, 19, 2, 20, 3, 97, 3, 98, 3, 227, 3, 228, 2, 21, 3, 99, 3, 229, 3, 100, 3, 101, 0, 245, 1, 82, 0, 242, 1, 79, 0, 244, 1, 81, 0, 249, 1, 86, 0, 104, 0, 105, 3, 230, 2, 49, 0, 108, 0, 109, 0, 110, 2, 50, 0, 111, 0, 112, 0, 113, 0, 144, 0, 145, 0, 101, 2, 51, 0, 99, 3, 190, 2, 54, 2, 65, 0, 125, 184, 1, 255, 133, 176, 4, 141, 0, 0, 0, 0, 17, 0, 210, 0, 3, 0, 1, 4, 9, 0, 0, 0, 180, 0, 0, 0, 3, 0, 1, 4, 9, 0, 1, 0, 22, 0, 180, 0, 3, 0, 1, 4, 9, 0, 2, 0, 12, 0, 202, 0, 3, 0, 1, 4, 9, 0, 3, 0, 56, 0, 214, 0, 3, 0, 1, 4, 9, 0, 4, 0, 36, 1, 14, 0, 3, 0, 1, 4, 9, 0, 5, 0, 26, 1, 50, 0, 3, 0, 1, 4, 9, 0, 6, 0, 34, 1, 76, 0, 3, 0, 1, 4, 9, 0, 7, 0, 74, 1, 110, 0, 3, 0, 1, 4, 9, 0, 9, 0, 12, 1, 184, 0, 3, 0, 1, 4, 9, 0, 11, 0, 20, 1, 196, 0, 3, 0, 1, 4, 9, 0, 12, 0, 38, 1, 216, 0, 3, 0, 1, 4, 9, 0, 13, 0, 92, 1, 254, 0, 3, 0, 1, 4, 9, 0, 14, 0, 84, 2, 90, 0, 3, 0, 1, 4, 9, 1, 0, 0, 12, 2, 174, 0, 3, 0, 1, 4, 9, 1, 11, 0, 12, 0, 202, 0, 3, 0, 1, 4, 9, 1, 14, 0, 14, 2, 186, 0, 3, 0, 1, 4, 9, 1, 17, 0, 12, 0, 202, 0, 67, 0, 111, 0, 112, 0, 121, 0, 114, 0, 105, 0, 103, 0, 104, 0, 116, 0, 32, 0, 50, 0, 48, 0, 49, 0, 53, 0, 32, 0, 84, 0, 104, 0, 101, 0, 32, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 80, 0, 114, 0, 111, 0, 106, 0, 101, 0, 99, 0, 116, 0, 32, 0, 65, 0, 117, 0, 116, 0, 104, 0, 111, 0, 114, 0, 115, 0, 32, 0, 40, 0, 104, 0, 116, 0, 116, 0, 112, 0, 115, 0, 58, 0, 47, 0, 47, 0, 103, 0, 105, 0, 116, 0, 104, 0, 117, 0, 98, 0, 46, 0, 99, 0, 111, 0, 109, 0, 47, 0, 103, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 102, 0, 111, 0, 110, 0, 116, 0, 115, 0, 47, 0, 114, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 109, 0, 111, 0, 110, 0, 111, 0, 41, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 51, 0, 46, 0, 48, 0, 48, 0, 48, 0, 59, 0, 112, 0, 121, 0, 114, 0, 115, 0, 59, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 77, 0, 111, 0, 110, 0, 111, 0, 45, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 51, 0, 46, 0, 48, 0, 48, 0, 48, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 77, 0, 111, 0, 110, 0, 111, 0, 45, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 105, 0, 115, 0, 32, 0, 97, 0, 32, 0, 116, 0, 114, 0, 97, 0, 100, 0, 101, 0, 109, 0, 97, 0, 114, 0, 107, 0, 32, 0, 111, 0, 102, 0, 32, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 46, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 46, 0, 99, 0, 111, 0, 109, 0, 67, 0, 104, 0, 114, 0, 105, 0, 115, 0, 116, 0, 105, 0, 97, 0, 110, 0, 32, 0, 82, 0, 111, 0, 98, 0, 101, 0, 114, 0, 116, 0, 115, 0, 111, 0, 110, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 100, 0, 32, 0, 117, 0, 110, 0, 100, 0, 101, 0, 114, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 65, 0, 112, 0, 97, 0, 99, 0, 104, 0, 101, 0, 32, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 44, 0, 32, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 50, 0, 46, 0, 48, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47, 0, 119, 0, 119, 0, 119, 0, 46, 0, 97, 0, 112, 0, 97, 0, 99, 0, 104, 0, 101, 0, 46, 0, 111, 0, 114, 0, 103, 0, 47, 0, 108, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 115, 0, 47, 0, 76, 0, 73, 0, 67, 0, 69, 0, 78, 0, 83, 0, 69, 0, 45, 0, 50, 0, 46, 0, 48, 0, 87, 0, 101, 0, 105, 0, 103, 0, 104, 0, 116, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, 0, 114, 0, 0, 0, 2, 0, 0, 255, 246, 0, 0, 255, 106, 0, 100, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 231, 0, 0, 0, 3, 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 68, 0, 69, 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, 0, 92, 0, 93, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 241, 0, 242, 0, 243, 0, 157, 0, 158, 0, 244, 0, 245, 0, 246, 0, 144, 0, 160, 0, 176, 0, 177, 0, 234, 0, 237, 0, 238, 1, 2, 0, 137, 1, 3, 0, 7, 0, 132, 0, 133, 0, 150, 0, 166, 0, 247, 1, 4, 1, 5, 0, 189, 0, 4, 0, 163, 0, 34, 0, 162, 0, 15, 0, 17, 0, 29, 0, 30, 0, 171, 0, 195, 0, 135, 0, 66, 0, 16, 0, 178, 0, 179, 0, 10, 0, 5, 0, 182, 0, 183, 0, 196, 0, 180, 0, 181, 0, 197, 1, 6, 1, 7, 0, 11, 0, 12, 0, 62, 0, 64, 0, 94, 0, 96, 0, 190, 0, 191, 0, 14, 0, 239, 0, 147, 0, 240, 0, 184, 0, 32, 0, 143, 0, 167, 0, 31, 0, 33, 0, 148, 0, 149, 0, 164, 0, 18, 0, 63, 0, 188, 0, 8, 0, 198, 0, 95, 0, 232, 0, 130, 0, 194, 0, 139, 0, 138, 0, 140, 0, 131, 0, 13, 0, 6, 0, 9, 0, 35, 0, 134, 0, 136, 0, 65, 0, 97, 0, 201, 1, 8, 0, 199, 0, 98, 0, 173, 1, 9, 1, 10, 0, 99, 1, 11, 0, 174, 1, 12, 0, 253, 0, 255, 0, 100, 1, 13, 1, 14, 1, 15, 0, 101, 1, 16, 1, 17, 0, 200, 0, 202, 1, 18, 0, 203, 1, 19, 1, 20, 1, 21, 0, 233, 0, 248, 1, 22, 1, 23, 1, 24, 1, 25, 0, 204, 1, 26, 0, 205, 0, 206, 0, 250, 0, 207, 1, 27, 1, 28, 1, 29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 34, 1, 35, 0, 226, 1, 36, 1, 37, 1, 38, 0, 102, 0, 208, 1, 39, 0, 209, 0, 103, 0, 211, 1, 40, 1, 41, 1, 42, 0, 145, 1, 43, 0, 175, 1, 44, 1, 45, 1, 46, 1, 47, 0, 228, 0, 251, 1, 48, 1, 49, 1, 50, 0, 212, 1, 51, 0, 213, 0, 104, 0, 214, 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, 0, 235, 1, 62, 0, 187, 1, 63, 1, 64, 0, 230, 1, 65, 0, 105, 1, 66, 0, 107, 0, 108, 0, 106, 1, 67, 1, 68, 0, 110, 1, 69, 0, 109, 1, 70, 0, 254, 1, 0, 0, 111, 1, 71, 1, 72, 1, 1, 0, 112, 1, 73, 1, 74, 0, 114, 0, 115, 1, 75, 0, 113, 1, 76, 1, 77, 1, 78, 0, 249, 1, 79, 1, 80, 1, 81, 1, 82, 0, 116, 1, 83, 0, 118, 0, 119, 0, 117, 1, 84, 1, 85, 1, 86, 1, 87, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 0, 227, 1, 93, 1, 94, 1, 95, 0, 120, 0, 121, 1, 96, 0, 123, 0, 124, 0, 122, 1, 97, 1, 98, 1, 99, 0, 161, 1, 100, 0, 125, 1, 101, 1, 102, 1, 103, 1, 104, 0, 229, 0, 252, 1, 105, 1, 106, 1, 107, 0, 126, 1, 108, 0, 128, 0, 129, 0, 127, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 118, 0, 236, 1, 119, 0, 186, 1, 120, 1, 121, 0, 231, 1, 122, 0, 67, 0, 141, 0, 216, 0, 217, 0, 218, 0, 219, 0, 220, 0, 142, 0, 221, 0, 223, 0, 225, 1, 123, 0, 222, 0, 224, 1, 124, 0, 2, 0, 169, 0, 151, 0, 170, 0, 215, 1, 125, 1, 126, 1, 127, 1, 128, 1, 129, 1, 130, 1, 131, 1, 132, 1, 133, 1, 134, 1, 135, 1, 136, 1, 137, 1, 138, 0, 168, 1, 139, 1, 140, 1, 141, 1, 142, 1, 143, 1, 144, 1, 145, 0, 159, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 1, 151, 1, 152, 1, 153, 1, 154, 1, 155, 1, 156, 0, 155, 1, 157, 1, 158, 1, 159, 1, 160, 1, 161, 1, 162, 1, 163, 1, 164, 1, 165, 1, 166, 1, 167, 1, 168, 1, 169, 1, 170, 1, 171, 1, 172, 1, 173, 1, 174, 1, 175, 1, 176, 1, 177, 1, 178, 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 1, 184, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, 1, 193, 1, 194, 1, 195, 1, 196, 1, 197, 1, 198, 1, 199, 1, 200, 1, 201, 1, 202, 1, 203, 1, 204, 1, 205, 1, 206, 1, 207, 1, 208, 1, 209, 1, 210, 1, 211, 1, 212, 1, 213, 1, 214, 1, 215, 1, 216, 1, 217, 1, 218, 1, 219, 1, 220, 1, 221, 1, 222, 1, 223, 1, 224, 1, 225, 1, 226, 1, 227, 1, 228, 1, 229, 1, 230, 1, 231, 1, 232, 1, 233, 1, 234, 1, 235, 1, 236, 1, 237, 1, 238, 1, 239, 1, 240, 1, 241, 1, 242, 1, 243, 1, 244, 1, 245, 1, 246, 1, 247, 1, 248, 1, 249, 1, 250, 1, 251, 1, 252, 1, 253, 1, 254, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, 2, 28, 2, 29, 2, 30, 2, 31, 2, 32, 2, 33, 2, 34, 2, 35, 2, 36, 2, 37, 2, 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43, 2, 44, 2, 45, 2, 46, 2, 47, 2, 48, 2, 49, 2, 50, 2, 51, 2, 52, 2, 53, 2, 54, 2, 55, 2, 56, 2, 57, 2, 58, 2, 59, 2, 60, 2, 61, 2, 62, 2, 63, 2, 64, 2, 65, 2, 66, 2, 67, 2, 68, 2, 69, 2, 70, 2, 71, 2, 72, 2, 73, 2, 74, 0, 152, 0, 154, 0, 153, 0, 165, 0, 146, 0, 156, 0, 185, 2, 75, 2, 76, 2, 77, 2, 78, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 104, 2, 105, 2, 106, 2, 107, 2, 108, 2, 109, 2, 110, 2, 111, 2, 112, 2, 113, 2, 114, 2, 115, 2, 116, 2, 117, 2, 118, 2, 119, 0, 172, 2, 120, 2, 121, 2, 122, 2, 123, 2, 124, 2, 125, 2, 126, 2, 127, 2, 128, 2, 129, 2, 130, 2, 131, 2, 132, 2, 133, 2, 134, 2, 135, 2, 136, 2, 137, 2, 138, 2, 139, 2, 140, 2, 141, 2, 142, 2, 143, 2, 144, 2, 145, 2, 146, 2, 147, 2, 148, 2, 149, 2, 150, 2, 151, 2, 152, 2, 153, 2, 154, 2, 155, 2, 156, 2, 157, 2, 158, 2, 159, 2, 160, 2, 161, 2, 162, 2, 163, 2, 164, 2, 165, 2, 166, 2, 167, 2, 168, 2, 169, 2, 170, 2, 171, 2, 172, 2, 173, 2, 174, 2, 175, 2, 176, 2, 177, 2, 178, 2, 179, 2, 180, 2, 181, 2, 182, 2, 183, 2, 184, 2, 185, 2, 186, 2, 187, 2, 188, 2, 189, 2, 190, 2, 191, 2, 192, 2, 193, 2, 194, 2, 195, 2, 196, 2, 197, 2, 198, 2, 199, 2, 200, 2, 201, 2, 202, 2, 203, 2, 204, 2, 205, 2, 206, 2, 207, 2, 208, 2, 209, 2, 210, 2, 211, 2, 212, 2, 213, 2, 214, 2, 215, 2, 216, 2, 217, 2, 218, 2, 219, 2, 220, 2, 221, 2, 222, 2, 223, 2, 224, 2, 225, 2, 226, 2, 227, 2, 228, 2, 229, 2, 230, 2, 231, 2, 232, 2, 233, 2, 234, 2, 235, 2, 236, 2, 237, 2, 238, 2, 239, 2, 240, 2, 241, 2, 242, 2, 243, 2, 244, 2, 245, 2, 246, 2, 247, 2, 248, 2, 249, 2, 250, 2, 251, 2, 252, 2, 253, 2, 254, 2, 255, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, 3, 22, 3, 23, 3, 24, 3, 25, 3, 26, 3, 27, 3, 28, 3, 29, 3, 30, 3, 31, 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3, 39, 3, 40, 3, 41, 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 3, 53, 3, 54, 3, 55, 3, 56, 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, 3, 62, 3, 63, 3, 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 3, 75, 3, 76, 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88, 3, 89, 3, 90, 3, 91, 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 3, 100, 3, 101, 3, 102, 3, 103, 3, 104, 3, 105, 3, 106, 3, 107, 3, 108, 3, 109, 3, 110, 3, 111, 3, 112, 3, 113, 3, 114, 3, 115, 3, 116, 3, 117, 3, 118, 3, 119, 3, 120, 3, 121, 3, 122, 3, 123, 3, 124, 3, 125, 3, 126, 3, 127, 3, 128, 3, 129, 3, 130, 3, 131, 3, 132, 3, 133, 3, 134, 3, 135, 3, 136, 3, 137, 3, 138, 3, 139, 3, 140, 3, 141, 3, 142, 3, 143, 3, 144, 3, 145, 3, 146, 3, 147, 3, 148, 3, 149, 3, 150, 3, 151, 3, 152, 3, 153, 3, 154, 3, 155, 3, 156, 3, 157, 3, 158, 3, 159, 3, 160, 3, 161, 3, 162, 3, 163, 3, 164, 3, 165, 3, 166, 3, 167, 3, 168, 3, 169, 3, 170, 3, 171, 3, 172, 3, 173, 3, 174, 3, 175, 3, 176, 3, 177, 3, 178, 3, 179, 3, 180, 3, 181, 3, 182, 3, 183, 3, 184, 3, 185, 3, 186, 3, 187, 3, 188, 3, 189, 3, 190, 3, 191, 3, 192, 3, 193, 3, 194, 3, 195, 3, 196, 3, 197, 3, 198, 3, 199, 3, 200, 3, 201, 3, 202, 3, 203, 3, 204, 3, 205, 3, 206, 3, 207, 3, 208, 3, 209, 3, 210, 3, 211, 3, 212, 3, 213, 3, 214, 3, 215, 3, 216, 3, 217, 3, 218, 3, 219, 3, 220, 3, 221, 3, 222, 3, 223, 3, 224, 3, 225, 3, 226, 3, 227, 3, 228, 3, 229, 3, 230, 3, 231, 3, 232, 3, 233, 3, 234, 12, 107, 103, 114, 101, 101, 110, 108, 97, 110, 100, 105, 99, 5, 115, 99, 104, 119, 97, 4, 108, 105, 114, 97, 6, 112, 101, 115, 101, 116, 97, 6, 109, 105, 110, 117, 116, 101, 6, 115, 101, 99, 111, 110, 100, 6, 65, 98, 114, 101, 118, 101, 7, 65, 109, 97, 99, 114, 111, 110, 7, 65, 111, 103, 111, 110, 101, 107, 10, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 7, 65, 69, 97, 99, 117, 116, 101, 11, 67, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 68, 99, 97, 114, 111, 110, 6, 68, 99, 114, 111, 97, 116, 6, 69, 98, 114, 101, 118, 101, 6, 69, 99, 97, 114, 111, 110, 10, 69, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 69, 109, 97, 99, 114, 111, 110, 3, 69, 110, 103, 7, 69, 111, 103, 111, 110, 101, 107, 11, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 71, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 72, 98, 97, 114, 11, 72, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 73, 98, 114, 101, 118, 101, 7, 73, 109, 97, 99, 114, 111, 110, 7, 73, 111, 103, 111, 110, 101, 107, 6, 73, 116, 105, 108, 100, 101, 11, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 76, 97, 99, 117, 116, 101, 6, 76, 99, 97, 114, 111, 110, 12, 76, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 76, 100, 111, 116, 6, 78, 97, 99, 117, 116, 101, 6, 78, 99, 97, 114, 111, 110, 12, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 79, 98, 114, 101, 118, 101, 5, 79, 104, 111, 114, 110, 13, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 79, 109, 97, 99, 114, 111, 110, 11, 79, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 6, 82, 97, 99, 117, 116, 101, 6, 82, 99, 97, 114, 111, 110, 12, 82, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 83, 97, 99, 117, 116, 101, 11, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 84, 98, 97, 114, 6, 84, 99, 97, 114, 111, 110, 6, 85, 98, 114, 101, 118, 101, 5, 85, 104, 111, 114, 110, 13, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 85, 109, 97, 99, 114, 111, 110, 7, 85, 111, 103, 111, 110, 101, 107, 5, 85, 114, 105, 110, 103, 6, 85, 116, 105, 108, 100, 101, 6, 87, 97, 99, 117, 116, 101, 11, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 9, 87, 100, 105, 101, 114, 101, 115, 105, 115, 6, 87, 103, 114, 97, 118, 101, 11, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 89, 103, 114, 97, 118, 101, 6, 90, 97, 99, 117, 116, 101, 10, 90, 100, 111, 116, 97, 99, 99, 101, 110, 116, 6, 97, 98, 114, 101, 118, 101, 7, 97, 109, 97, 99, 114, 111, 110, 7, 97, 111, 103, 111, 110, 101, 107, 10, 97, 114, 105, 110, 103, 97, 99, 117, 116, 101, 7, 97, 101, 97, 99, 117, 116, 101, 11, 99, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 100, 99, 97, 114, 111, 110, 6, 101, 98, 114, 101, 118, 101, 6, 101, 99, 97, 114, 111, 110, 10, 101, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 101, 109, 97, 99, 114, 111, 110, 3, 101, 110, 103, 7, 101, 111, 103, 111, 110, 101, 107, 11, 103, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 103, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 104, 98, 97, 114, 11, 104, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 105, 98, 114, 101, 118, 101, 7, 105, 109, 97, 99, 114, 111, 110, 7, 105, 111, 103, 111, 110, 101, 107, 6, 105, 116, 105, 108, 100, 101, 11, 106, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 107, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 108, 97, 99, 117, 116, 101, 6, 108, 99, 97, 114, 111, 110, 12, 108, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 108, 100, 111, 116, 6, 110, 97, 99, 117, 116, 101, 6, 110, 99, 97, 114, 111, 110, 12, 110, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 111, 98, 114, 101, 118, 101, 5, 111, 104, 111, 114, 110, 13, 111, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 111, 109, 97, 99, 114, 111, 110, 11, 111, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 6, 114, 97, 99, 117, 116, 101, 6, 114, 99, 97, 114, 111, 110, 12, 114, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 115, 97, 99, 117, 116, 101, 11, 115, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 116, 98, 97, 114, 6, 116, 99, 97, 114, 111, 110, 6, 117, 98, 114, 101, 118, 101, 5, 117, 104, 111, 114, 110, 13, 117, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 117, 109, 97, 99, 114, 111, 110, 7, 117, 111, 103, 111, 110, 101, 107, 5, 117, 114, 105, 110, 103, 6, 117, 116, 105, 108, 100, 101, 6, 119, 97, 99, 117, 116, 101, 11, 119, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 9, 119, 100, 105, 101, 114, 101, 115, 105, 115, 6, 119, 103, 114, 97, 118, 101, 11, 121, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 121, 103, 114, 97, 118, 101, 6, 122, 97, 99, 117, 116, 101, 10, 122, 100, 111, 116, 97, 99, 99, 101, 110, 116, 8, 100, 111, 116, 98, 101, 108, 111, 119, 11, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 2, 73, 74, 2, 105, 106, 5, 108, 111, 110, 103, 115, 7, 117, 110, 105, 48, 50, 51, 55, 7, 117, 110, 105, 48, 50, 70, 51, 9, 103, 114, 97, 118, 101, 99, 111, 109, 98, 9, 97, 99, 117, 116, 101, 99, 111, 109, 98, 9, 116, 105, 108, 100, 101, 99, 111, 109, 98, 4, 104, 111, 111, 107, 7, 117, 110, 105, 48, 51, 48, 70, 5, 116, 111, 110, 111, 115, 13, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 9, 97, 110, 111, 116, 101, 108, 101, 105, 97, 5, 71, 97, 109, 109, 97, 5, 84, 104, 101, 116, 97, 6, 76, 97, 109, 98, 100, 97, 2, 88, 105, 2, 80, 105, 5, 83, 105, 103, 109, 97, 3, 80, 104, 105, 3, 80, 115, 105, 5, 97, 108, 112, 104, 97, 4, 98, 101, 116, 97, 5, 103, 97, 109, 109, 97, 5, 100, 101, 108, 116, 97, 7, 101, 112, 115, 105, 108, 111, 110, 4, 122, 101, 116, 97, 3, 101, 116, 97, 5, 116, 104, 101, 116, 97, 4, 105, 111, 116, 97, 6, 108, 97, 109, 98, 100, 97, 2, 120, 105, 3, 114, 104, 111, 6, 115, 105, 103, 109, 97, 49, 5, 115, 105, 103, 109, 97, 3, 116, 97, 117, 7, 117, 112, 115, 105, 108, 111, 110, 3, 112, 104, 105, 3, 112, 115, 105, 5, 111, 109, 101, 103, 97, 7, 117, 110, 105, 48, 51, 68, 49, 7, 117, 110, 105, 48, 51, 68, 50, 7, 117, 110, 105, 48, 51, 68, 54, 7, 117, 110, 105, 48, 52, 48, 50, 7, 117, 110, 105, 48, 52, 48, 52, 7, 117, 110, 105, 48, 52, 48, 57, 7, 117, 110, 105, 48, 52, 48, 65, 7, 117, 110, 105, 48, 52, 48, 66, 7, 117, 110, 105, 48, 52, 48, 70, 7, 117, 110, 105, 48, 52, 49, 49, 7, 117, 110, 105, 48, 52, 49, 52, 7, 117, 110, 105, 48, 52, 49, 54, 7, 117, 110, 105, 48, 52, 49, 55, 7, 117, 110, 105, 48, 52, 49, 56, 7, 117, 110, 105, 48, 52, 49, 66, 7, 117, 110, 105, 48, 52, 50, 51, 7, 117, 110, 105, 48, 52, 50, 54, 7, 117, 110, 105, 48, 52, 50, 55, 7, 117, 110, 105, 48, 52, 50, 56, 7, 117, 110, 105, 48, 52, 50, 57, 7, 117, 110, 105, 48, 52, 50, 65, 7, 117, 110, 105, 48, 52, 50, 66, 7, 117, 110, 105, 48, 52, 50, 67, 7, 117, 110, 105, 48, 52, 50, 68, 7, 117, 110, 105, 48, 52, 50, 69, 7, 117, 110, 105, 48, 52, 50, 70, 7, 117, 110, 105, 48, 52, 51, 49, 7, 117, 110, 105, 48, 52, 51, 50, 7, 117, 110, 105, 48, 52, 51, 51, 7, 117, 110, 105, 48, 52, 51, 52, 7, 117, 110, 105, 48, 52, 51, 54, 7, 117, 110, 105, 48, 52, 51, 55, 7, 117, 110, 105, 48, 52, 51, 56, 7, 117, 110, 105, 48, 52, 51, 65, 7, 117, 110, 105, 48, 52, 51, 66, 7, 117, 110, 105, 48, 52, 51, 67, 7, 117, 110, 105, 48, 52, 51, 68, 7, 117, 110, 105, 48, 52, 51, 70, 7, 117, 110, 105, 48, 52, 52, 50, 7, 117, 110, 105, 48, 52, 52, 52, 7, 117, 110, 105, 48, 52, 52, 54, 7, 117, 110, 105, 48, 52, 52, 55, 7, 117, 110, 105, 48, 52, 52, 56, 7, 117, 110, 105, 48, 52, 52, 57, 7, 117, 110, 105, 48, 52, 52, 65, 7, 117, 110, 105, 48, 52, 52, 66, 7, 117, 110, 105, 48, 52, 52, 67, 7, 117, 110, 105, 48, 52, 52, 68, 7, 117, 110, 105, 48, 52, 52, 69, 7, 117, 110, 105, 48, 52, 52, 70, 7, 117, 110, 105, 48, 52, 53, 50, 7, 117, 110, 105, 48, 52, 53, 52, 7, 117, 110, 105, 48, 52, 53, 57, 7, 117, 110, 105, 48, 52, 53, 65, 7, 117, 110, 105, 48, 52, 53, 66, 7, 117, 110, 105, 48, 52, 53, 70, 7, 117, 110, 105, 48, 52, 54, 48, 7, 117, 110, 105, 48, 52, 54, 49, 7, 117, 110, 105, 48, 52, 54, 51, 7, 117, 110, 105, 48, 52, 54, 52, 7, 117, 110, 105, 48, 52, 54, 53, 7, 117, 110, 105, 48, 52, 54, 54, 7, 117, 110, 105, 48, 52, 54, 55, 7, 117, 110, 105, 48, 52, 54, 56, 7, 117, 110, 105, 48, 52, 54, 57, 7, 117, 110, 105, 48, 52, 54, 65, 7, 117, 110, 105, 48, 52, 54, 66, 7, 117, 110, 105, 48, 52, 54, 67, 7, 117, 110, 105, 48, 52, 54, 68, 7, 117, 110, 105, 48, 52, 54, 69, 7, 117, 110, 105, 48, 52, 54, 70, 7, 117, 110, 105, 48, 52, 55, 50, 7, 117, 110, 105, 48, 52, 55, 51, 7, 117, 110, 105, 48, 52, 55, 52, 7, 117, 110, 105, 48, 52, 55, 53, 7, 117, 110, 105, 48, 52, 55, 56, 7, 117, 110, 105, 48, 52, 55, 57, 7, 117, 110, 105, 48, 52, 55, 65, 7, 117, 110, 105, 48, 52, 55, 66, 7, 117, 110, 105, 48, 52, 55, 67, 7, 117, 110, 105, 48, 52, 55, 68, 7, 117, 110, 105, 48, 52, 55, 69, 7, 117, 110, 105, 48, 52, 55, 70, 7, 117, 110, 105, 48, 52, 56, 48, 7, 117, 110, 105, 48, 52, 56, 49, 7, 117, 110, 105, 48, 52, 56, 50, 7, 117, 110, 105, 48, 52, 56, 51, 7, 117, 110, 105, 48, 52, 56, 52, 7, 117, 110, 105, 48, 52, 56, 53, 7, 117, 110, 105, 48, 52, 56, 54, 7, 117, 110, 105, 48, 52, 56, 56, 7, 117, 110, 105, 48, 52, 56, 57, 7, 117, 110, 105, 48, 52, 56, 69, 7, 117, 110, 105, 48, 52, 56, 70, 7, 117, 110, 105, 48, 52, 57, 48, 7, 117, 110, 105, 48, 52, 57, 49, 7, 117, 110, 105, 48, 52, 57, 52, 7, 117, 110, 105, 48, 52, 57, 53, 7, 117, 110, 105, 48, 52, 57, 67, 7, 117, 110, 105, 48, 52, 57, 68, 7, 117, 110, 105, 48, 52, 65, 48, 7, 117, 110, 105, 48, 52, 65, 49, 7, 117, 110, 105, 48, 52, 65, 52, 7, 117, 110, 105, 48, 52, 65, 53, 7, 117, 110, 105, 48, 52, 65, 54, 7, 117, 110, 105, 48, 52, 65, 55, 7, 117, 110, 105, 48, 52, 65, 56, 7, 117, 110, 105, 48, 52, 65, 57, 7, 117, 110, 105, 48, 52, 66, 52, 7, 117, 110, 105, 48, 52, 66, 53, 7, 117, 110, 105, 48, 52, 66, 56, 7, 117, 110, 105, 48, 52, 66, 57, 7, 117, 110, 105, 48, 52, 66, 65, 7, 117, 110, 105, 48, 52, 66, 67, 7, 117, 110, 105, 48, 52, 66, 68, 7, 117, 110, 105, 48, 52, 67, 51, 7, 117, 110, 105, 48, 52, 67, 52, 7, 117, 110, 105, 48, 52, 67, 55, 7, 117, 110, 105, 48, 52, 67, 56, 7, 117, 110, 105, 48, 52, 68, 56, 7, 117, 110, 105, 48, 52, 69, 48, 7, 117, 110, 105, 48, 52, 69, 49, 7, 117, 110, 105, 48, 52, 70, 65, 7, 117, 110, 105, 48, 52, 70, 66, 7, 117, 110, 105, 48, 53, 48, 48, 7, 117, 110, 105, 48, 53, 48, 50, 7, 117, 110, 105, 48, 53, 48, 51, 7, 117, 110, 105, 48, 53, 48, 52, 7, 117, 110, 105, 48, 53, 48, 53, 7, 117, 110, 105, 48, 53, 48, 54, 7, 117, 110, 105, 48, 53, 48, 55, 7, 117, 110, 105, 48, 53, 48, 56, 7, 117, 110, 105, 48, 53, 48, 57, 7, 117, 110, 105, 48, 53, 48, 65, 7, 117, 110, 105, 48, 53, 48, 66, 7, 117, 110, 105, 48, 53, 48, 67, 7, 117, 110, 105, 48, 53, 48, 68, 7, 117, 110, 105, 48, 53, 48, 69, 7, 117, 110, 105, 48, 53, 48, 70, 7, 117, 110, 105, 48, 53, 49, 48, 7, 117, 110, 105, 50, 48, 48, 48, 7, 117, 110, 105, 50, 48, 48, 49, 7, 117, 110, 105, 50, 48, 48, 50, 7, 117, 110, 105, 50, 48, 48, 51, 7, 117, 110, 105, 50, 48, 48, 52, 7, 117, 110, 105, 50, 48, 48, 53, 7, 117, 110, 105, 50, 48, 48, 54, 7, 117, 110, 105, 50, 48, 48, 55, 7, 117, 110, 105, 50, 48, 48, 56, 7, 117, 110, 105, 50, 48, 48, 57, 7, 117, 110, 105, 50, 48, 48, 65, 7, 117, 110, 105, 50, 48, 48, 66, 13, 117, 110, 100, 101, 114, 115, 99, 111, 114, 101, 100, 98, 108, 13, 113, 117, 111, 116, 101, 114, 101, 118, 101, 114, 115, 101, 100, 7, 117, 110, 105, 50, 48, 50, 53, 7, 117, 110, 105, 50, 48, 55, 52, 9, 110, 115, 117, 112, 101, 114, 105, 111, 114, 4, 69, 117, 114, 111, 7, 117, 110, 105, 50, 49, 48, 53, 7, 117, 110, 105, 50, 49, 49, 51, 7, 117, 110, 105, 50, 49, 49, 54, 9, 101, 115, 116, 105, 109, 97, 116, 101, 100, 9, 111, 110, 101, 101, 105, 103, 104, 116, 104, 12, 116, 104, 114, 101, 101, 101, 105, 103, 104, 116, 104, 115, 11, 102, 105, 118, 101, 101, 105, 103, 104, 116, 104, 115, 12, 115, 101, 118, 101, 110, 101, 105, 103, 104, 116, 104, 115, 7, 117, 110, 105, 70, 69, 70, 70, 7, 117, 110, 105, 70, 70, 70, 67, 7, 117, 110, 105, 70, 70, 70, 68, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 99, 111, 109, 98, 18, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104, 111, 111, 107, 99, 111, 109, 98, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 99, 111, 109, 98, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 97, 99, 117, 116, 101, 99, 111, 109, 98, 14, 98, 114, 101, 118, 101, 103, 114, 97, 118, 101, 99, 111, 109, 98, 17, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 114, 111, 116, 97, 116, 101, 6, 65, 46, 115, 109, 99, 112, 6, 66, 46, 115, 109, 99, 112, 6, 67, 46, 115, 109, 99, 112, 6, 68, 46, 115, 109, 99, 112, 6, 69, 46, 115, 109, 99, 112, 6, 70, 46, 115, 109, 99, 112, 6, 71, 46, 115, 109, 99, 112, 6, 72, 46, 115, 109, 99, 112, 6, 73, 46, 115, 109, 99, 112, 6, 74, 46, 115, 109, 99, 112, 6, 75, 46, 115, 109, 99, 112, 6, 76, 46, 115, 109, 99, 112, 6, 77, 46, 115, 109, 99, 112, 6, 78, 46, 115, 109, 99, 112, 6, 79, 46, 115, 109, 99, 112, 6, 81, 46, 115, 109, 99, 112, 6, 82, 46, 115, 109, 99, 112, 6, 83, 46, 115, 109, 99, 112, 6, 84, 46, 115, 109, 99, 112, 6, 85, 46, 115, 109, 99, 112, 6, 86, 46, 115, 109, 99, 112, 6, 87, 46, 115, 109, 99, 112, 6, 88, 46, 115, 109, 99, 112, 6, 89, 46, 115, 109, 99, 112, 6, 90, 46, 115, 109, 99, 112, 13, 98, 114, 101, 118, 101, 104, 111, 111, 107, 99, 111, 109, 98, 14, 98, 114, 101, 118, 101, 97, 99, 117, 116, 101, 99, 111, 109, 98, 8, 99, 114, 111, 115, 115, 98, 97, 114, 9, 114, 105, 110, 103, 97, 99, 117, 116, 101, 9, 100, 97, 115, 105, 97, 111, 120, 105, 97, 14, 98, 114, 101, 118, 101, 116, 105, 108, 100, 101, 99, 111, 109, 98, 11, 99, 121, 114, 105, 108, 108, 105, 99, 116, 105, 99, 12, 99, 121, 114, 105, 108, 108, 105, 99, 104, 111, 111, 107, 6, 80, 46, 115, 109, 99, 112, 5, 75, 46, 97, 108, 116, 15, 71, 101, 114, 109, 97, 110, 100, 98, 108, 115, 46, 115, 109, 99, 112, 7, 117, 110, 105, 48, 48, 65, 68, 7, 117, 110, 105, 48, 49, 48, 65, 7, 117, 110, 105, 48, 49, 48, 66, 7, 117, 110, 105, 48, 49, 50, 48, 7, 117, 110, 105, 48, 49, 50, 49, 11, 110, 97, 112, 111, 115, 116, 114, 111, 112, 104, 101, 7, 117, 110, 105, 48, 50, 49, 56, 7, 117, 110, 105, 48, 50, 49, 57, 7, 117, 110, 105, 48, 50, 49, 65, 7, 117, 110, 105, 48, 50, 49, 66, 7, 117, 110, 105, 48, 49, 54, 50, 12, 117, 110, 105, 48, 49, 54, 50, 46, 115, 109, 99, 112, 7, 117, 110, 105, 48, 49, 54, 51, 11, 68, 99, 114, 111, 97, 116, 46, 115, 109, 99, 112, 8, 69, 116, 104, 46, 115, 109, 99, 112, 9, 84, 98, 97, 114, 46, 115, 109, 99, 112, 11, 65, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 65, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 65, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 65, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 14, 65, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 10, 65, 114, 105, 110, 103, 46, 115, 109, 99, 112, 15, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 13, 67, 99, 101, 100, 105, 108, 108, 97, 46, 115, 109, 99, 112, 11, 69, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 69, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 69, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 69, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 73, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 73, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 73, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 73, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 78, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 11, 79, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 79, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 79, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 79, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 14, 79, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 85, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 85, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 85, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 85, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 89, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 12, 65, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 65, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 12, 65, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 11, 67, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 67, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 67, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 68, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 12, 69, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 69, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 15, 69, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 12, 69, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 11, 69, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 16, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 71, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 17, 71, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 16, 72, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 73, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 12, 73, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 73, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 12, 73, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 15, 73, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 16, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 17, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 76, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 76, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 76, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 9, 76, 100, 111, 116, 46, 115, 109, 99, 112, 11, 78, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 78, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 12, 79, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 79, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 18, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 46, 115, 109, 99, 112, 11, 82, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 82, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 82, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 83, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 13, 83, 99, 101, 100, 105, 108, 108, 97, 46, 115, 109, 99, 112, 11, 83, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 84, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 85, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 12, 85, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 85, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 10, 85, 114, 105, 110, 103, 46, 115, 109, 99, 112, 18, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 46, 115, 109, 99, 112, 12, 85, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 16, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 16, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 89, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 90, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 15, 90, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 90, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 10, 65, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 69, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 69, 116, 97, 116, 111, 110, 111, 115, 9, 73, 111, 116, 97, 116, 111, 110, 111, 115, 12, 79, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 85, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 10, 79, 109, 101, 103, 97, 116, 111, 110, 111, 115, 17, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 65, 108, 112, 104, 97, 4, 66, 101, 116, 97, 7, 69, 112, 115, 105, 108, 111, 110, 4, 90, 101, 116, 97, 3, 69, 116, 97, 4, 73, 111, 116, 97, 5, 75, 97, 112, 112, 97, 2, 77, 117, 2, 78, 117, 7, 79, 109, 105, 99, 114, 111, 110, 3, 82, 104, 111, 3, 84, 97, 117, 7, 85, 112, 115, 105, 108, 111, 110, 3, 67, 104, 105, 12, 73, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15, 85, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 10, 97, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 101, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 101, 116, 97, 116, 111, 110, 111, 115, 9, 105, 111, 116, 97, 116, 111, 110, 111, 115, 20, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 107, 97, 112, 112, 97, 7, 111, 109, 105, 99, 114, 111, 110, 7, 117, 110, 105, 48, 51, 66, 67, 2, 110, 117, 3, 99, 104, 105, 12, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 12, 111, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 117, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 10, 111, 109, 101, 103, 97, 116, 111, 110, 111, 115, 7, 117, 110, 105, 48, 52, 48, 49, 7, 117, 110, 105, 48, 52, 48, 51, 7, 117, 110, 105, 48, 52, 48, 53, 7, 117, 110, 105, 48, 52, 48, 54, 7, 117, 110, 105, 48, 52, 48, 55, 7, 117, 110, 105, 48, 52, 48, 56, 7, 117, 110, 105, 48, 52, 49, 65, 7, 117, 110, 105, 48, 52, 48, 67, 7, 117, 110, 105, 48, 52, 48, 69, 7, 117, 110, 105, 48, 52, 49, 48, 7, 117, 110, 105, 48, 52, 49, 50, 7, 117, 110, 105, 48, 52, 49, 51, 7, 117, 110, 105, 48, 52, 49, 53, 7, 117, 110, 105, 48, 52, 49, 57, 7, 117, 110, 105, 48, 52, 49, 67, 7, 117, 110, 105, 48, 52, 49, 68, 7, 117, 110, 105, 48, 52, 49, 69, 7, 117, 110, 105, 48, 52, 49, 70, 7, 117, 110, 105, 48, 52, 50, 48, 7, 117, 110, 105, 48, 52, 50, 49, 7, 117, 110, 105, 48, 52, 50, 50, 7, 117, 110, 105, 48, 52, 50, 52, 7, 117, 110, 105, 48, 52, 50, 53, 7, 117, 110, 105, 48, 52, 51, 48, 7, 117, 110, 105, 48, 52, 51, 53, 7, 117, 110, 105, 48, 52, 51, 57, 7, 117, 110, 105, 48, 52, 51, 69, 7, 117, 110, 105, 48, 52, 52, 48, 7, 117, 110, 105, 48, 52, 52, 49, 7, 117, 110, 105, 48, 52, 52, 51, 7, 117, 110, 105, 48, 52, 52, 53, 7, 117, 110, 105, 48, 52, 53, 49, 7, 117, 110, 105, 48, 52, 53, 51, 7, 117, 110, 105, 48, 52, 53, 53, 7, 117, 110, 105, 48, 52, 53, 54, 7, 117, 110, 105, 48, 52, 53, 55, 7, 117, 110, 105, 48, 52, 53, 56, 7, 117, 110, 105, 48, 52, 53, 67, 7, 117, 110, 105, 48, 52, 53, 69, 9, 101, 120, 99, 108, 97, 109, 100, 98, 108, 7, 117, 110, 105, 48, 49, 70, 48, 7, 117, 110, 105, 48, 50, 66, 67, 7, 117, 110, 105, 49, 69, 51, 69, 7, 117, 110, 105, 49, 69, 51, 70, 7, 117, 110, 105, 49, 69, 48, 48, 7, 117, 110, 105, 49, 69, 48, 49, 7, 117, 110, 105, 49, 70, 52, 68, 7, 117, 110, 105, 48, 52, 48, 48, 7, 117, 110, 105, 48, 52, 48, 68, 7, 117, 110, 105, 48, 52, 53, 48, 7, 117, 110, 105, 48, 52, 53, 68, 7, 117, 110, 105, 48, 52, 55, 48, 7, 117, 110, 105, 48, 52, 55, 49, 7, 117, 110, 105, 48, 52, 55, 54, 7, 117, 110, 105, 48, 52, 55, 55, 7, 117, 110, 105, 48, 52, 57, 56, 7, 117, 110, 105, 48, 52, 57, 57, 7, 117, 110, 105, 48, 52, 65, 65, 7, 117, 110, 105, 48, 52, 65, 66, 7, 117, 110, 105, 48, 52, 65, 69, 7, 117, 110, 105, 48, 52, 65, 70, 7, 117, 110, 105, 48, 52, 67, 48, 7, 117, 110, 105, 48, 52, 67, 49, 7, 117, 110, 105, 48, 52, 67, 50, 7, 117, 110, 105, 48, 52, 67, 70, 7, 117, 110, 105, 48, 52, 68, 48, 7, 117, 110, 105, 48, 52, 68, 49, 7, 117, 110, 105, 48, 52, 68, 50, 7, 117, 110, 105, 48, 52, 68, 51, 7, 117, 110, 105, 48, 52, 68, 52, 7, 117, 110, 105, 48, 52, 68, 53, 7, 117, 110, 105, 48, 52, 68, 54, 7, 117, 110, 105, 48, 52, 68, 55, 7, 117, 110, 105, 48, 52, 68, 65, 7, 117, 110, 105, 48, 52, 68, 57, 7, 117, 110, 105, 48, 52, 68, 66, 7, 117, 110, 105, 48, 52, 68, 67, 7, 117, 110, 105, 48, 52, 68, 68, 7, 117, 110, 105, 48, 52, 68, 69, 7, 117, 110, 105, 48, 52, 68, 70, 7, 117, 110, 105, 48, 52, 69, 50, 7, 117, 110, 105, 48, 52, 69, 51, 7, 117, 110, 105, 48, 52, 69, 52, 7, 117, 110, 105, 48, 52, 69, 53, 7, 117, 110, 105, 48, 52, 69, 54, 7, 117, 110, 105, 48, 52, 69, 55, 7, 117, 110, 105, 48, 52, 69, 56, 7, 117, 110, 105, 48, 52, 69, 57, 7, 117, 110, 105, 48, 52, 69, 65, 7, 117, 110, 105, 48, 52, 69, 66, 7, 117, 110, 105, 48, 52, 69, 67, 7, 117, 110, 105, 48, 52, 69, 68, 7, 117, 110, 105, 48, 52, 69, 69, 7, 117, 110, 105, 48, 52, 69, 70, 7, 117, 110, 105, 48, 52, 70, 48, 7, 117, 110, 105, 48, 52, 70, 49, 7, 117, 110, 105, 48, 52, 70, 50, 7, 117, 110, 105, 48, 52, 70, 51, 7, 117, 110, 105, 48, 52, 70, 52, 7, 117, 110, 105, 48, 52, 70, 53, 7, 117, 110, 105, 48, 52, 70, 56, 7, 117, 110, 105, 48, 52, 70, 57, 7, 117, 110, 105, 48, 52, 70, 67, 7, 117, 110, 105, 48, 52, 70, 68, 7, 117, 110, 105, 48, 53, 48, 49, 7, 117, 110, 105, 48, 53, 49, 50, 7, 117, 110, 105, 48, 53, 49, 51, 7, 117, 110, 105, 49, 69, 65, 48, 7, 117, 110, 105, 49, 69, 65, 49, 7, 117, 110, 105, 49, 69, 65, 50, 7, 117, 110, 105, 49, 69, 65, 51, 7, 117, 110, 105, 49, 69, 65, 52, 7, 117, 110, 105, 49, 69, 65, 53, 7, 117, 110, 105, 49, 69, 65, 54, 7, 117, 110, 105, 49, 69, 65, 55, 7, 117, 110, 105, 49, 69, 65, 56, 7, 117, 110, 105, 49, 69, 65, 57, 7, 117, 110, 105, 49, 69, 65, 65, 7, 117, 110, 105, 49, 69, 65, 66, 7, 117, 110, 105, 49, 69, 65, 67, 7, 117, 110, 105, 49, 69, 65, 68, 7, 117, 110, 105, 49, 69, 65, 69, 7, 117, 110, 105, 49, 69, 65, 70, 7, 117, 110, 105, 49, 69, 66, 48, 7, 117, 110, 105, 49, 69, 66, 49, 7, 117, 110, 105, 49, 69, 66, 50, 7, 117, 110, 105, 49, 69, 66, 51, 7, 117, 110, 105, 49, 69, 66, 52, 7, 117, 110, 105, 49, 69, 66, 53, 7, 117, 110, 105, 49, 69, 66, 54, 7, 117, 110, 105, 49, 69, 66, 55, 7, 117, 110, 105, 49, 69, 66, 56, 7, 117, 110, 105, 49, 69, 66, 57, 7, 117, 110, 105, 49, 69, 66, 65, 7, 117, 110, 105, 49, 69, 66, 66, 7, 117, 110, 105, 49, 69, 66, 67, 7, 117, 110, 105, 49, 69, 66, 68, 7, 117, 110, 105, 49, 69, 66, 69, 7, 117, 110, 105, 49, 69, 66, 70, 7, 117, 110, 105, 49, 69, 67, 48, 7, 117, 110, 105, 49, 69, 67, 49, 7, 117, 110, 105, 49, 69, 67, 50, 7, 117, 110, 105, 49, 69, 67, 51, 7, 117, 110, 105, 49, 69, 67, 52, 7, 117, 110, 105, 49, 69, 67, 53, 7, 117, 110, 105, 49, 69, 67, 54, 7, 117, 110, 105, 49, 69, 67, 55, 7, 117, 110, 105, 49, 69, 67, 56, 7, 117, 110, 105, 49, 69, 67, 57, 7, 117, 110, 105, 49, 69, 67, 65, 7, 117, 110, 105, 49, 69, 67, 66, 7, 117, 110, 105, 49, 69, 67, 67, 7, 117, 110, 105, 49, 69, 67, 68, 7, 117, 110, 105, 49, 69, 67, 69, 7, 117, 110, 105, 49, 69, 67, 70, 7, 117, 110, 105, 49, 69, 68, 48, 7, 117, 110, 105, 49, 69, 68, 49, 7, 117, 110, 105, 49, 69, 68, 50, 7, 117, 110, 105, 49, 69, 68, 51, 7, 117, 110, 105, 49, 69, 68, 52, 7, 117, 110, 105, 49, 69, 68, 53, 7, 117, 110, 105, 49, 69, 68, 54, 7, 117, 110, 105, 49, 69, 68, 55, 7, 117, 110, 105, 49, 69, 68, 56, 7, 117, 110, 105, 49, 69, 68, 57, 7, 117, 110, 105, 49, 69, 68, 65, 7, 117, 110, 105, 49, 69, 68, 66, 7, 117, 110, 105, 49, 69, 68, 67, 7, 117, 110, 105, 49, 69, 68, 68, 7, 117, 110, 105, 49, 69, 68, 69, 7, 117, 110, 105, 49, 69, 68, 70, 7, 117, 110, 105, 49, 69, 69, 48, 7, 117, 110, 105, 49, 69, 69, 49, 7, 117, 110, 105, 49, 69, 69, 50, 7, 117, 110, 105, 49, 69, 69, 51, 7, 117, 110, 105, 49, 69, 69, 52, 7, 117, 110, 105, 49, 69, 69, 53, 7, 117, 110, 105, 49, 69, 69, 54, 7, 117, 110, 105, 49, 69, 69, 55, 7, 117, 110, 105, 49, 69, 69, 56, 7, 117, 110, 105, 49, 69, 69, 57, 7, 117, 110, 105, 49, 69, 69, 65, 7, 117, 110, 105, 49, 69, 69, 66, 7, 117, 110, 105, 49, 69, 69, 67, 7, 117, 110, 105, 49, 69, 69, 68, 7, 117, 110, 105, 49, 69, 69, 69, 7, 117, 110, 105, 49, 69, 69, 70, 7, 117, 110, 105, 49, 69, 70, 48, 7, 117, 110, 105, 49, 69, 70, 49, 7, 117, 110, 105, 49, 69, 70, 52, 7, 117, 110, 105, 49, 69, 70, 53, 7, 117, 110, 105, 49, 69, 70, 54, 7, 117, 110, 105, 49, 69, 70, 55, 7, 117, 110, 105, 49, 69, 70, 56, 7, 117, 110, 105, 49, 69, 70, 57, 7, 117, 110, 105, 50, 48, 65, 66, 7, 117, 110, 105, 48, 52, 57, 65, 7, 117, 110, 105, 48, 52, 57, 66, 7, 117, 110, 105, 48, 52, 65, 50, 7, 117, 110, 105, 48, 52, 65, 51, 7, 117, 110, 105, 48, 52, 65, 67, 7, 117, 110, 105, 48, 52, 65, 68, 7, 117, 110, 105, 48, 52, 66, 50, 7, 117, 110, 105, 48, 52, 66, 51, 7, 117, 110, 105, 48, 52, 66, 54, 7, 117, 110, 105, 48, 52, 66, 55, 7, 117, 110, 105, 48, 52, 67, 66, 7, 117, 110, 105, 48, 52, 67, 67, 7, 117, 110, 105, 48, 52, 70, 54, 7, 117, 110, 105, 48, 52, 70, 55, 7, 117, 110, 105, 48, 52, 57, 54, 7, 117, 110, 105, 48, 52, 57, 55, 7, 117, 110, 105, 48, 52, 66, 69, 7, 117, 110, 105, 48, 52, 66, 70, 7, 117, 110, 105, 48, 52, 66, 66, 7, 117, 110, 105, 48, 52, 56, 68, 7, 117, 110, 105, 48, 52, 56, 67, 7, 117, 110, 105, 48, 52, 54, 50, 7, 117, 110, 105, 48, 52, 57, 50, 7, 117, 110, 105, 48, 52, 57, 51, 7, 117, 110, 105, 48, 52, 57, 69, 7, 117, 110, 105, 48, 52, 57, 70, 7, 117, 110, 105, 48, 52, 56, 65, 7, 117, 110, 105, 48, 52, 56, 66, 7, 117, 110, 105, 48, 52, 67, 57, 7, 117, 110, 105, 48, 52, 67, 65, 7, 117, 110, 105, 48, 52, 67, 68, 7, 117, 110, 105, 48, 52, 67, 69, 7, 117, 110, 105, 48, 52, 67, 53, 7, 117, 110, 105, 48, 52, 67, 54, 7, 117, 110, 105, 48, 52, 66, 48, 7, 117, 110, 105, 48, 52, 66, 49, 7, 117, 110, 105, 48, 52, 70, 69, 7, 117, 110, 105, 48, 52, 70, 70, 7, 117, 110, 105, 48, 53, 49, 49, 7, 117, 110, 105, 50, 48, 49, 53, 0, 1, 0, 1, 255, 255, 0, 15, 0, 1, 0, 0, 0, 10, 0, 48, 0, 62, 0, 4, 68, 70, 76, 84, 0, 26, 99, 121, 114, 108, 0, 26, 103, 114, 101, 107, 0, 26, 108, 97, 116, 110, 0, 26, 0, 4, 0, 0, 0, 0, 255, 255, 0, 1, 0, 0, 0, 1, 115, 109, 99, 112, 0, 8, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 1, 190, 0, 220, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 112, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 112, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 130, 2, 114, 2, 133, 2, 160, 2, 134, 2, 136, 2, 132, 2, 159, 2, 161, 2, 137, 2, 138, 2, 135, 2, 162, 2, 164, 2, 139, 2, 163, 2, 165, 2, 129, 2, 141, 2, 167, 2, 170, 2, 142, 2, 143, 2, 168, 2, 140, 2, 166, 2, 169, 2, 130, 2, 172, 2, 171, 2, 173, 2, 174, 2, 145, 2, 177, 2, 146, 2, 147, 2, 179, 2, 144, 2, 176, 2, 178, 2, 175, 2, 180, 2, 181, 2, 182, 2, 184, 2, 183, 2, 185, 2, 186, 2, 188, 2, 187, 2, 148, 2, 150, 2, 190, 2, 151, 2, 153, 2, 149, 2, 191, 2, 189, 2, 152, 2, 192, 2, 194, 2, 193, 2, 195, 2, 198, 2, 197, 2, 196, 2, 131, 2, 199, 2, 155, 2, 202, 2, 156, 2, 157, 2, 154, 2, 204, 2, 201, 2, 205, 2, 203, 2, 200, 2, 206, 2, 158, 2, 207, 2, 208, 2, 209, 2, 211, 2, 210, 2, 133, 2, 160, 2, 134, 2, 136, 2, 132, 2, 159, 2, 161, 2, 137, 2, 138, 2, 135, 2, 162, 2, 164, 2, 139, 2, 163, 2, 165, 2, 129, 2, 141, 2, 167, 2, 170, 2, 142, 2, 143, 2, 168, 2, 140, 2, 166, 2, 169, 2, 172, 2, 171, 2, 173, 2, 174, 2, 145, 2, 177, 2, 146, 2, 147, 2, 144, 2, 176, 2, 178, 2, 175, 2, 180, 2, 181, 2, 182, 2, 184, 2, 183, 2, 185, 2, 186, 2, 188, 2, 187, 2, 148, 2, 150, 2, 190, 2, 151, 2, 153, 2, 149, 2, 191, 2, 189, 2, 152, 2, 192, 2, 194, 2, 193, 2, 195, 2, 198, 2, 197, 2, 196, 2, 131, 2, 199, 2, 155, 2, 202, 2, 156, 2, 157, 2, 154, 2, 204, 2, 201, 2, 205, 2, 203, 2, 200, 2, 206, 2, 158, 2, 207, 2, 208, 2, 209, 2, 211, 2, 210, 2, 127, 2, 127, 0, 2, 0, 26, 0, 2, 0, 53, 0, 0, 0, 76, 0, 76, 0, 52, 0, 80, 0, 80, 0, 53, 0, 158, 0, 167, 0, 54, 0, 169, 0, 182, 0, 64, 0, 184, 0, 188, 0, 78, 0, 190, 0, 205, 0, 83, 0, 207, 0, 215, 0, 99, 0, 217, 0, 218, 0, 108, 0, 221, 0, 235, 0, 110, 0, 237, 0, 241, 0, 125, 0, 243, 0, 243, 0, 130, 0, 246, 0, 248, 0, 131, 0, 250, 1, 6, 0, 134, 1, 8, 1, 21, 0, 147, 1, 23, 1, 26, 0, 161, 1, 28, 1, 42, 0, 165, 1, 44, 1, 52, 0, 180, 1, 54, 1, 55, 0, 189, 1, 58, 1, 72, 0, 191, 1, 74, 1, 78, 0, 206, 1, 80, 1, 80, 0, 211, 1, 83, 1, 85, 0, 212, 1, 87, 1, 89, 0, 215, 2, 126, 2, 126, 0, 218, 2, 128, 2, 128, 0, 219, 0, 1, 0, 1, 0, 8, 0, 2, 0, 0, 0, 20, 0, 2, 0, 0, 0, 36, 0, 2, 119, 103, 104, 116, 1, 0, 0, 0, 105, 116, 97, 108, 1, 11, 0, 1, 0, 4, 0, 20, 0, 3, 0, 0, 0, 2, 1, 14, 1, 144, 0, 0, 2, 188, 0, 0, 0, 1, 0, 1, 0, 0, 1, 17, 0, 1, 0, 0) +font_name = "Roboto Mono" +style_name = "Italic" +font_style = 6 +msdf_pixel_range = 8 +fixed_size = 14 +cache/0/16/0/ascent = 15.0 +cache/0/16/0/descent = 4.0 +cache/0/16/0/underline_position = 1.375 +cache/0/16/0/underline_thickness = 0.6875 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/14/0/ascent = 15.0 +cache/0/14/0/descent = 4.0 +cache/0/14/0/underline_position = 1.375 +cache/0/14/0/underline_thickness = 0.6875 +cache/0/14/0/scale = 1.0 +cache/0/14/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/14/0/kerning_overrides/14/0 = Vector2(0, 0) + +[sub_resource type="FontFile" id="FontFile_xg6bo"] +data = PackedByteArray(0, 1, 0, 0, 0, 14, 0, 128, 0, 3, 0, 96, 71, 83, 85, 66, 54, 189, 53, 203, 0, 1, 108, 220, 0, 0, 2, 168, 79, 83, 47, 50, 154, 14, 171, 99, 0, 1, 63, 156, 0, 0, 0, 96, 83, 84, 65, 84, 229, 216, 204, 44, 0, 1, 111, 132, 0, 0, 0, 64, 99, 109, 97, 112, 136, 53, 174, 103, 0, 1, 63, 252, 0, 0, 7, 80, 103, 97, 115, 112, 0, 0, 0, 16, 0, 1, 108, 212, 0, 0, 0, 8, 103, 108, 121, 102, 42, 86, 46, 152, 0, 0, 0, 236, 0, 1, 46, 146, 104, 101, 97, 100, 2, 60, 156, 14, 0, 1, 55, 112, 0, 0, 0, 54, 104, 104, 101, 97, 11, 181, 0, 151, 0, 1, 63, 120, 0, 0, 0, 36, 104, 109, 116, 120, 126, 110, 138, 127, 0, 1, 55, 168, 0, 0, 7, 208, 108, 111, 99, 97, 173, 101, 247, 125, 0, 1, 47, 160, 0, 0, 7, 208, 109, 97, 120, 112, 4, 6, 1, 98, 0, 1, 47, 128, 0, 0, 0, 32, 110, 97, 109, 101, 102, 36, 140, 84, 0, 1, 71, 84, 0, 0, 3, 196, 112, 111, 115, 116, 151, 175, 175, 6, 0, 1, 75, 24, 0, 0, 33, 188, 112, 114, 101, 112, 104, 6, 140, 133, 0, 1, 71, 76, 0, 0, 0, 7, 0, 2, 255, 174, 0, 0, 4, 60, 5, 176, 0, 7, 0, 10, 0, 0, 65, 19, 33, 3, 35, 1, 33, 19, 55, 19, 19, 3, 6, 29, 1, 25, 202, 249, 253, 53, 1, 41, 136, 109, 240, 51, 1, 48, 254, 208, 5, 176, 250, 80, 1, 48, 239, 2, 21, 253, 235, 0, 0, 3, 0, 20, 255, 255, 4, 175, 5, 176, 0, 26, 0, 41, 0, 56, 0, 0, 115, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 19, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 19, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 20, 2, 19, 105, 196, 77, 76, 98, 8, 3, 18, 22, 22, 71, 50, 53, 91, 35, 34, 42, 5, 8, 72, 65, 65, 172, 92, 254, 52, 134, 1, 11, 49, 70, 21, 19, 14, 7, 8, 50, 37, 38, 93, 50, 229, 107, 67, 214, 45, 76, 26, 26, 24, 7, 8, 52, 38, 39, 94, 49, 1, 49, 53, 53, 166, 115, 50, 97, 41, 41, 64, 18, 22, 61, 39, 39, 99, 60, 105, 146, 47, 46, 43, 2, 1, 252, 210, 1, 2, 31, 28, 26, 73, 45, 53, 78, 26, 27, 26, 1, 2, 2, 106, 1, 126, 1, 1, 21, 21, 22, 69, 50, 54, 75, 24, 24, 22, 0, 1, 0, 74, 255, 232, 4, 156, 5, 199, 0, 63, 0, 0, 65, 5, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 21, 5, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 4, 51, 254, 242, 11, 44, 34, 34, 94, 60, 53, 68, 20, 20, 16, 1, 8, 5, 28, 6, 22, 17, 17, 49, 34, 33, 88, 57, 60, 76, 22, 21, 15, 1, 16, 3, 56, 54, 55, 166, 112, 92, 157, 65, 65, 103, 38, 38, 51, 12, 29, 10, 5, 18, 17, 66, 51, 50, 138, 89, 110, 194, 75, 75, 98, 1, 201, 2, 56, 93, 33, 33, 36, 3, 2, 43, 35, 34, 88, 46, 46, 90, 37, 199, 45, 98, 48, 47, 86, 32, 31, 37, 2, 2, 43, 35, 35, 94, 53, 1, 106, 178, 65, 65, 75, 2, 2, 50, 45, 45, 125, 73, 73, 162, 81, 196, 77, 155, 71, 72, 125, 46, 47, 55, 2, 3, 67, 63, 63, 178, 0, 2, 0, 17, 255, 255, 4, 124, 5, 176, 0, 21, 0, 43, 0, 0, 115, 33, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 23, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 39, 17, 1, 138, 95, 170, 72, 79, 131, 48, 43, 58, 13, 17, 11, 19, 30, 25, 83, 52, 62, 159, 97, 254, 160, 237, 104, 59, 86, 30, 29, 35, 8, 7, 1, 6, 17, 8, 31, 25, 36, 86, 59, 36, 87, 49, 91, 1, 46, 42, 44, 131, 81, 71, 165, 88, 120, 94, 177, 76, 65, 110, 42, 47, 55, 2, 1, 228, 1, 3, 39, 32, 33, 85, 48, 48, 101, 48, 123, 55, 108, 47, 68, 94, 31, 19, 21, 2, 0, 0, 1, 0, 38, 0, 0, 4, 217, 5, 176, 0, 11, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 33, 55, 33, 19, 3, 236, 39, 253, 187, 64, 2, 163, 40, 252, 74, 253, 3, 185, 40, 253, 89, 72, 2, 126, 222, 1, 111, 229, 250, 80, 227, 1, 155, 0, 0, 1, 0, 40, 0, 0, 4, 225, 5, 176, 0, 9, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 33, 19, 4, 1, 40, 253, 162, 69, 2, 168, 41, 252, 67, 252, 1, 19, 105, 2, 91, 228, 1, 140, 229, 250, 80, 2, 91, 0, 0, 1, 0, 82, 255, 234, 4, 151, 5, 197, 0, 61, 0, 0, 101, 19, 33, 7, 51, 3, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 33, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 36, 4, 9, 90, 254, 5, 37, 235, 51, 45, 114, 56, 53, 71, 21, 22, 20, 2, 3, 7, 5, 29, 6, 23, 19, 18, 50, 34, 34, 85, 53, 53, 71, 22, 22, 20, 2, 1, 10, 5, 59, 54, 55, 161, 107, 91, 155, 64, 64, 102, 37, 38, 50, 12, 29, 10, 6, 18, 17, 67, 51, 50, 139, 90, 132, 1, 29, 169, 2, 63, 210, 254, 247, 35, 29, 2, 2, 42, 35, 34, 86, 47, 46, 90, 38, 201, 42, 96, 48, 47, 87, 33, 33, 38, 2, 2, 35, 30, 30, 82, 48, 103, 167, 59, 58, 64, 2, 1, 50, 45, 46, 125, 72, 73, 160, 80, 198, 78, 155, 71, 71, 124, 46, 46, 55, 2, 2, 86, 0, 0, 1, 0, 15, 0, 0, 4, 185, 5, 176, 0, 11, 0, 0, 97, 19, 33, 3, 33, 19, 33, 3, 33, 19, 33, 3, 3, 188, 253, 254, 241, 104, 254, 114, 104, 254, 239, 252, 1, 16, 110, 1, 142, 110, 5, 176, 253, 171, 2, 85, 250, 80, 2, 119, 253, 137, 0, 1, 0, 82, 0, 0, 4, 130, 5, 176, 0, 11, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 33, 55, 1, 79, 40, 1, 13, 174, 254, 244, 40, 3, 51, 40, 254, 236, 174, 1, 19, 40, 5, 176, 227, 252, 21, 226, 226, 3, 235, 227, 0, 1, 0, 71, 255, 234, 4, 192, 5, 176, 0, 27, 0, 0, 65, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 3, 173, 172, 8, 42, 32, 32, 86, 52, 53, 67, 19, 19, 12, 2, 254, 237, 3, 52, 54, 53, 160, 104, 105, 186, 74, 73, 98, 15, 171, 5, 176, 252, 14, 48, 88, 33, 34, 39, 1, 1, 35, 30, 29, 81, 47, 1, 102, 165, 58, 59, 64, 1, 2, 68, 63, 62, 173, 103, 3, 241, 0, 0, 1, 0, 20, 0, 0, 5, 82, 5, 176, 0, 12, 0, 0, 65, 19, 33, 1, 1, 33, 1, 7, 19, 33, 3, 33, 19, 2, 44, 244, 1, 55, 254, 164, 2, 87, 254, 160, 254, 93, 157, 114, 254, 237, 253, 1, 20, 72, 2, 83, 253, 173, 3, 32, 2, 144, 254, 34, 175, 2, 141, 250, 80, 1, 162, 0, 0, 1, 0, 41, 0, 0, 3, 249, 5, 176, 0, 5, 0, 0, 101, 19, 33, 3, 33, 55, 1, 99, 214, 254, 236, 252, 3, 168, 40, 227, 4, 205, 250, 80, 227, 0, 0, 1, 0, 18, 0, 0, 4, 212, 5, 176, 0, 14, 0, 0, 65, 33, 3, 51, 27, 2, 51, 1, 3, 3, 51, 19, 33, 3, 2, 96, 254, 175, 253, 252, 73, 106, 61, 137, 1, 29, 124, 77, 252, 253, 254, 168, 246, 5, 176, 250, 80, 1, 164, 2, 163, 253, 153, 2, 98, 253, 120, 254, 70, 5, 176, 253, 225, 0, 0, 1, 0, 15, 0, 0, 4, 184, 5, 176, 0, 9, 0, 0, 97, 19, 33, 3, 3, 33, 3, 33, 19, 19, 3, 187, 253, 254, 237, 166, 229, 254, 241, 252, 1, 20, 165, 232, 5, 176, 252, 79, 3, 177, 250, 80, 3, 181, 252, 75, 0, 2, 0, 73, 255, 234, 4, 138, 5, 198, 0, 37, 0, 75, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 3, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 95, 33, 10, 8, 18, 19, 68, 51, 52, 137, 88, 91, 154, 63, 63, 100, 36, 37, 49, 12, 33, 10, 6, 17, 17, 64, 50, 49, 135, 87, 92, 156, 65, 65, 103, 39, 38, 50, 232, 33, 7, 22, 17, 18, 50, 33, 34, 86, 54, 51, 65, 19, 19, 16, 1, 7, 5, 33, 6, 20, 16, 15, 46, 32, 31, 84, 55, 51, 68, 21, 21, 20, 3, 2, 6, 2, 110, 211, 76, 154, 71, 70, 123, 47, 46, 54, 2, 2, 49, 44, 45, 124, 72, 72, 159, 80, 212, 75, 152, 70, 71, 123, 46, 47, 55, 2, 2, 48, 44, 44, 123, 72, 72, 160, 1, 39, 215, 43, 96, 46, 47, 84, 31, 31, 35, 2, 2, 43, 34, 34, 86, 45, 45, 86, 35, 215, 43, 95, 46, 46, 83, 32, 31, 35, 2, 2, 42, 33, 33, 84, 44, 45, 88, 0, 2, 0, 40, 0, 0, 4, 184, 5, 176, 0, 16, 0, 31, 0, 0, 65, 23, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 33, 19, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 1, 151, 224, 105, 197, 78, 78, 101, 9, 9, 59, 59, 60, 168, 101, 254, 43, 252, 1, 18, 132, 81, 223, 50, 72, 22, 21, 14, 6, 7, 49, 37, 37, 94, 53, 2, 22, 1, 61, 59, 58, 171, 112, 104, 168, 60, 60, 66, 3, 1, 250, 80, 2, 250, 1, 210, 1, 2, 39, 31, 32, 83, 47, 54, 86, 30, 30, 33, 1, 0, 0, 2, 0, 71, 254, 255, 4, 146, 5, 198, 0, 40, 0, 78, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 23, 55, 39, 54, 54, 55, 54, 54, 3, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 97, 39, 10, 8, 18, 19, 69, 51, 51, 138, 88, 92, 154, 63, 64, 100, 37, 37, 49, 12, 40, 9, 11, 20, 20, 70, 50, 49, 131, 80, 37, 71, 35, 222, 192, 195, 38, 65, 26, 50, 63, 224, 40, 6, 23, 17, 16, 51, 33, 33, 85, 51, 47, 63, 20, 21, 20, 3, 4, 4, 5, 40, 6, 21, 16, 16, 46, 32, 32, 85, 55, 52, 69, 21, 21, 19, 2, 2, 6, 2, 66, 251, 76, 154, 72, 71, 124, 47, 46, 55, 2, 2, 49, 45, 45, 125, 72, 73, 159, 81, 252, 72, 143, 65, 66, 114, 42, 42, 50, 1, 1, 9, 8, 255, 151, 224, 30, 69, 37, 70, 164, 1, 88, 255, 39, 84, 39, 42, 74, 29, 29, 33, 2, 2, 36, 30, 29, 75, 40, 40, 80, 34, 255, 43, 96, 47, 46, 84, 32, 31, 36, 2, 2, 42, 33, 34, 85, 45, 45, 89, 0, 2, 0, 22, 0, 0, 4, 173, 5, 176, 0, 20, 0, 35, 0, 0, 65, 19, 33, 53, 3, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 33, 19, 55, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 2, 91, 171, 1, 36, 201, 70, 114, 42, 41, 50, 6, 9, 65, 62, 63, 173, 100, 254, 53, 253, 1, 19, 94, 39, 80, 213, 50, 76, 24, 24, 20, 7, 7, 51, 38, 39, 99, 55, 2, 32, 253, 224, 15, 2, 85, 28, 77, 51, 51, 128, 77, 108, 160, 53, 53, 55, 2, 1, 250, 80, 2, 32, 228, 1, 200, 1, 2, 31, 27, 28, 82, 52, 57, 88, 30, 30, 31, 0, 1, 0, 57, 255, 235, 4, 177, 5, 198, 0, 73, 0, 0, 65, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 59, 7, 50, 36, 36, 87, 44, 60, 92, 29, 30, 30, 2, 254, 244, 3, 73, 67, 67, 182, 105, 98, 195, 75, 72, 98, 7, 6, 59, 53, 54, 144, 79, 37, 90, 38, 39, 46, 6, 6, 50, 36, 36, 87, 44, 52, 77, 26, 25, 25, 1, 1, 10, 3, 65, 60, 60, 168, 99, 95, 189, 77, 77, 102, 6, 6, 67, 58, 58, 151, 78, 41, 84, 33, 32, 35, 1, 131, 48, 69, 22, 23, 21, 1, 33, 31, 32, 92, 59, 1, 110, 173, 61, 61, 65, 2, 2, 47, 56, 53, 149, 105, 91, 147, 56, 56, 81, 27, 12, 33, 25, 24, 71, 51, 48, 71, 24, 23, 23, 1, 1, 32, 29, 29, 82, 49, 1, 102, 164, 58, 58, 64, 2, 2, 50, 52, 52, 156, 104, 93, 145, 54, 54, 77, 25, 14, 36, 26, 27, 74, 0, 0, 1, 0, 134, 0, 0, 5, 35, 5, 176, 0, 7, 0, 0, 65, 55, 33, 7, 33, 3, 33, 19, 4, 250, 41, 251, 139, 40, 1, 174, 213, 1, 19, 213, 4, 203, 229, 229, 251, 53, 4, 203, 0, 1, 0, 94, 255, 233, 4, 193, 5, 176, 0, 29, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 4, 193, 254, 240, 165, 8, 36, 30, 31, 90, 62, 56, 61, 13, 14, 1, 5, 162, 254, 238, 165, 12, 38, 49, 49, 159, 110, 119, 191, 70, 70, 88, 17, 5, 176, 252, 58, 52, 104, 41, 41, 49, 3, 3, 57, 42, 42, 97, 43, 3, 198, 252, 58, 102, 184, 69, 70, 83, 2, 3, 75, 69, 68, 190, 113, 0, 0, 1, 0, 167, 0, 0, 5, 21, 5, 176, 0, 8, 0, 0, 97, 33, 1, 33, 1, 7, 39, 3, 33, 1, 110, 1, 23, 2, 144, 254, 202, 254, 108, 26, 7, 92, 254, 217, 5, 176, 252, 42, 64, 73, 3, 205, 0, 1, 0, 127, 0, 0, 5, 27, 5, 176, 0, 18, 0, 0, 115, 51, 19, 55, 21, 3, 51, 1, 35, 3, 7, 55, 19, 35, 3, 7, 55, 19, 35, 127, 248, 230, 32, 1, 248, 1, 167, 255, 212, 27, 1, 10, 197, 225, 30, 4, 32, 248, 2, 240, 103, 113, 253, 26, 5, 176, 252, 252, 100, 104, 3, 0, 253, 5, 100, 103, 2, 248, 0, 1, 255, 184, 0, 0, 5, 38, 5, 176, 0, 11, 0, 0, 65, 3, 33, 1, 1, 33, 1, 19, 33, 1, 1, 33, 2, 140, 165, 254, 204, 1, 24, 253, 237, 1, 80, 1, 84, 176, 1, 51, 254, 224, 2, 7, 254, 178, 3, 168, 2, 8, 253, 58, 253, 22, 2, 16, 253, 240, 2, 210, 2, 222, 0, 1, 0, 186, 0, 0, 5, 63, 5, 176, 0, 8, 0, 0, 65, 3, 33, 1, 3, 33, 19, 1, 33, 2, 124, 162, 254, 224, 1, 15, 91, 1, 17, 86, 2, 106, 254, 199, 3, 19, 2, 157, 252, 98, 253, 238, 1, 235, 3, 197, 0, 1, 255, 248, 0, 0, 4, 212, 5, 176, 0, 9, 0, 0, 101, 1, 55, 33, 7, 33, 1, 7, 33, 55, 1, 112, 3, 73, 27, 252, 10, 37, 2, 165, 252, 183, 29, 4, 10, 35, 227, 4, 27, 178, 229, 251, 236, 183, 227, 0, 0, 2, 0, 58, 255, 235, 4, 27, 4, 80, 0, 56, 0, 79, 0, 0, 97, 33, 55, 38, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 39, 34, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 6, 22, 39, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 23, 7, 6, 6, 7, 6, 6, 2, 188, 1, 13, 1, 21, 9, 9, 75, 9, 57, 55, 56, 152, 85, 81, 165, 68, 68, 90, 6, 1, 15, 7, 29, 22, 23, 61, 36, 39, 62, 21, 20, 17, 6, 13, 156, 61, 125, 59, 59, 104, 40, 40, 49, 3, 3, 50, 46, 45, 123, 68, 58, 104, 46, 24, 46, 22, 1, 3, 231, 29, 49, 17, 17, 16, 4, 4, 18, 13, 16, 44, 23, 36, 82, 40, 123, 34, 19, 45, 24, 34, 78, 18, 58, 123, 59, 1, 209, 93, 140, 48, 47, 50, 2, 1, 39, 42, 43, 131, 90, 2, 33, 51, 16, 18, 17, 1, 1, 23, 21, 22, 62, 39, 67, 2, 14, 17, 17, 55, 41, 41, 110, 72, 72, 116, 40, 41, 45, 1, 1, 27, 26, 14, 35, 20, 26, 49, 168, 16, 15, 15, 46, 31, 27, 44, 17, 21, 29, 12, 15, 14, 1, 187, 23, 38, 14, 20, 20, 0, 0, 2, 0, 38, 255, 234, 4, 56, 6, 0, 0, 35, 0, 67, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 33, 1, 51, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 47, 3, 6, 3, 12, 12, 49, 39, 40, 111, 74, 51, 90, 40, 23, 45, 21, 106, 254, 240, 254, 246, 246, 40, 15, 35, 20, 40, 97, 54, 78, 129, 51, 51, 78, 28, 28, 35, 254, 251, 2, 4, 16, 12, 14, 48, 35, 25, 57, 51, 26, 64, 23, 20, 30, 9, 75, 18, 43, 25, 27, 63, 37, 42, 56, 18, 17, 17, 3, 2, 4, 2, 24, 21, 61, 127, 60, 60, 107, 40, 40, 48, 2, 1, 24, 23, 14, 37, 22, 2, 41, 250, 0, 116, 22, 37, 15, 30, 31, 1, 2, 43, 39, 39, 108, 63, 62, 137, 88, 21, 36, 76, 35, 43, 77, 25, 19, 21, 16, 17, 15, 43, 28, 1, 178, 27, 44, 15, 17, 17, 1, 1, 31, 25, 25, 65, 35, 35, 71, 0, 1, 0, 96, 255, 233, 4, 49, 4, 81, 0, 60, 0, 0, 101, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 2, 19, 36, 53, 18, 26, 24, 5, 3, 3, 3, 4, 6, 27, 23, 12, 38, 22, 28, 72, 45, 43, 64, 21, 21, 18, 3, 255, 5, 53, 52, 53, 150, 93, 115, 191, 71, 80, 96, 14, 3, 6, 6, 12, 18, 83, 62, 46, 121, 74, 87, 169, 69, 68, 88, 5, 254, 6, 41, 29, 30, 73, 201, 1, 22, 18, 26, 75, 40, 35, 73, 32, 30, 48, 99, 43, 24, 48, 18, 22, 24, 1, 2, 31, 26, 26, 71, 40, 1, 93, 153, 56, 55, 62, 2, 3, 78, 72, 82, 203, 117, 31, 57, 111, 50, 78, 131, 45, 32, 38, 1, 2, 53, 51, 51, 147, 92, 2, 40, 64, 21, 22, 22, 0, 2, 0, 91, 255, 235, 4, 187, 6, 0, 0, 35, 0, 64, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 51, 1, 33, 3, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 5, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 100, 3, 6, 5, 13, 13, 50, 39, 39, 108, 72, 51, 90, 39, 29, 53, 24, 14, 243, 1, 10, 254, 240, 104, 18, 40, 23, 35, 83, 46, 78, 128, 52, 52, 79, 28, 29, 36, 1, 5, 2, 7, 34, 32, 32, 96, 68, 31, 51, 20, 21, 31, 11, 78, 19, 43, 24, 26, 62, 36, 39, 54, 17, 15, 17, 6, 7, 3, 2, 31, 22, 59, 125, 59, 60, 106, 40, 41, 49, 2, 1, 24, 22, 17, 44, 27, 113, 6, 0, 253, 215, 22, 36, 14, 22, 24, 1, 2, 44, 39, 40, 109, 63, 63, 136, 89, 21, 57, 120, 49, 49, 62, 1, 1, 15, 15, 14, 44, 28, 254, 72, 25, 42, 15, 17, 17, 1, 1, 29, 23, 19, 48, 28, 41, 89, 0, 2, 0, 85, 255, 235, 4, 76, 4, 80, 0, 36, 0, 50, 0, 0, 69, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 55, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 19, 22, 22, 23, 22, 22, 7, 7, 33, 54, 54, 55, 54, 54, 2, 44, 129, 245, 72, 123, 58, 151, 85, 54, 84, 28, 29, 30, 2, 2, 195, 18, 13, 37, 50, 51, 164, 113, 81, 146, 62, 49, 86, 36, 51, 65, 10, 4, 10, 58, 62, 61, 179, 220, 45, 69, 23, 22, 18, 7, 5, 254, 71, 19, 50, 34, 33, 86, 20, 1, 96, 100, 151, 60, 65, 3, 1, 39, 33, 33, 89, 52, 118, 105, 190, 74, 73, 88, 3, 2, 41, 37, 30, 81, 46, 70, 168, 90, 41, 110, 188, 69, 70, 82, 3, 129, 2, 33, 28, 28, 76, 44, 25, 44, 86, 34, 34, 40, 0, 0, 1, 0, 169, 0, 0, 5, 0, 6, 47, 0, 29, 0, 0, 97, 33, 19, 33, 55, 5, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 37, 7, 33, 1, 37, 1, 16, 153, 1, 121, 37, 254, 125, 13, 10, 43, 30, 39, 105, 63, 48, 95, 47, 42, 64, 128, 65, 108, 181, 69, 70, 92, 18, 11, 254, 244, 37, 1, 20, 3, 109, 205, 1, 61, 49, 74, 26, 34, 32, 1, 11, 11, 218, 11, 18, 1, 1, 58, 56, 56, 165, 106, 61, 1, 205, 0, 2, 0, 26, 254, 83, 4, 123, 4, 80, 0, 53, 0, 82, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 39, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 5, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 101, 3, 6, 6, 15, 14, 53, 41, 40, 111, 72, 45, 81, 37, 29, 54, 25, 14, 12, 52, 38, 38, 98, 58, 75, 120, 45, 139, 68, 202, 108, 110, 192, 75, 74, 98, 16, 178, 249, 36, 17, 42, 23, 38, 89, 48, 78, 131, 53, 54, 82, 30, 30, 38, 1, 6, 2, 7, 39, 34, 33, 100, 68, 28, 48, 21, 22, 36, 13, 82, 19, 41, 23, 27, 64, 36, 41, 57, 19, 19, 20, 4, 4, 2, 2, 30, 21, 60, 126, 59, 60, 106, 40, 41, 48, 1, 1, 18, 19, 14, 40, 24, 64, 56, 89, 31, 32, 33, 2, 2, 65, 58, 166, 85, 89, 2, 3, 61, 60, 59, 174, 110, 4, 23, 1, 105, 24, 39, 14, 23, 23, 1, 2, 43, 39, 40, 108, 63, 63, 138, 89, 21, 57, 121, 49, 49, 61, 1, 1, 12, 11, 13, 41, 28, 254, 51, 23, 38, 13, 16, 16, 1, 1, 31, 25, 24, 63, 35, 34, 71, 0, 0, 1, 0, 32, 0, 0, 4, 68, 6, 0, 0, 31, 0, 0, 65, 19, 33, 1, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 33, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 199, 115, 254, 241, 254, 245, 1, 15, 138, 22, 48, 26, 28, 61, 34, 49, 64, 18, 18, 9, 5, 111, 1, 16, 109, 9, 23, 36, 37, 129, 96, 64, 111, 46, 26, 48, 3, 163, 2, 93, 250, 0, 3, 14, 22, 35, 12, 12, 13, 1, 2, 34, 29, 30, 77, 45, 253, 110, 2, 143, 85, 160, 63, 62, 76, 1, 1, 41, 35, 20, 49, 0, 2, 0, 104, 0, 0, 3, 233, 5, 230, 0, 9, 0, 21, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 3, 20, 22, 55, 50, 54, 53, 52, 38, 7, 34, 6, 1, 36, 40, 1, 43, 109, 254, 213, 39, 3, 89, 40, 254, 227, 149, 246, 91, 64, 65, 92, 91, 64, 68, 89, 4, 58, 227, 253, 139, 226, 226, 3, 88, 1, 16, 66, 80, 2, 85, 69, 66, 80, 2, 88, 0, 2, 0, 48, 254, 73, 3, 219, 5, 230, 0, 23, 0, 35, 0, 0, 65, 7, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 23, 50, 54, 55, 54, 54, 55, 19, 3, 20, 22, 55, 50, 54, 53, 52, 38, 7, 34, 6, 1, 125, 40, 1, 9, 149, 7, 33, 24, 29, 83, 51, 36, 75, 35, 36, 45, 89, 45, 104, 173, 65, 65, 83, 14, 189, 244, 89, 65, 64, 93, 93, 63, 66, 89, 4, 58, 227, 252, 144, 41, 66, 23, 28, 28, 1, 1, 7, 8, 228, 8, 8, 1, 50, 52, 51, 156, 105, 4, 83, 1, 16, 65, 81, 2, 84, 70, 67, 79, 2, 88, 0, 0, 1, 0, 35, 0, 0, 4, 175, 6, 0, 0, 12, 0, 0, 65, 19, 33, 1, 1, 33, 1, 7, 19, 33, 1, 33, 19, 2, 2, 219, 1, 60, 254, 176, 1, 230, 254, 168, 254, 169, 90, 151, 254, 241, 254, 245, 1, 15, 56, 1, 189, 254, 67, 2, 108, 1, 206, 254, 188, 87, 3, 97, 250, 0, 1, 64, 0, 1, 0, 88, 0, 0, 3, 249, 6, 0, 0, 9, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 1, 99, 40, 1, 59, 188, 254, 198, 40, 3, 121, 40, 254, 211, 227, 6, 0, 227, 251, 197, 226, 226, 5, 30, 0, 1, 255, 224, 0, 0, 4, 117, 4, 79, 0, 52, 0, 0, 65, 7, 3, 51, 19, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 6, 7, 3, 51, 19, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 20, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 38, 38, 39, 38, 38, 35, 34, 6, 7, 1, 132, 232, 188, 247, 141, 7, 16, 10, 11, 29, 18, 22, 23, 5, 4, 1, 1, 131, 239, 145, 8, 15, 8, 12, 27, 17, 21, 23, 5, 5, 2, 131, 247, 124, 10, 9, 35, 19, 74, 54, 68, 99, 40, 5, 19, 14, 22, 58, 36, 79, 111, 36, 4, 59, 1, 251, 198, 3, 43, 12, 21, 9, 10, 13, 19, 14, 15, 36, 16, 252, 248, 3, 59, 8, 16, 6, 9, 10, 20, 15, 15, 35, 16, 252, 249, 2, 239, 59, 143, 66, 36, 46, 1, 1, 65, 51, 24, 38, 13, 20, 21, 87, 66, 0, 0, 1, 0, 32, 0, 0, 4, 67, 4, 79, 0, 31, 0, 0, 115, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 33, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 7, 32, 1, 16, 135, 21, 46, 26, 27, 62, 34, 51, 65, 18, 17, 9, 5, 110, 1, 15, 111, 9, 22, 35, 35, 123, 94, 63, 111, 47, 32, 57, 26, 18, 244, 3, 2, 24, 40, 13, 15, 15, 1, 1, 32, 28, 28, 77, 47, 253, 105, 2, 154, 83, 155, 61, 61, 74, 2, 1, 34, 32, 21, 54, 31, 152, 1, 0, 2, 0, 81, 255, 232, 4, 66, 4, 81, 0, 31, 0, 57, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 91, 2, 8, 15, 23, 19, 54, 39, 44, 145, 88, 121, 199, 73, 73, 91, 14, 3, 8, 15, 23, 19, 60, 40, 50, 135, 85, 122, 199, 73, 73, 91, 255, 2, 7, 39, 34, 33, 99, 69, 56, 70, 18, 24, 3, 5, 2, 8, 37, 33, 34, 99, 68, 65, 73, 16, 17, 2, 2, 32, 21, 74, 140, 61, 49, 80, 39, 43, 56, 2, 3, 87, 76, 76, 203, 114, 22, 75, 143, 63, 50, 87, 36, 43, 50, 1, 3, 88, 77, 77, 205, 135, 21, 58, 120, 49, 49, 60, 2, 3, 50, 41, 55, 122, 54, 21, 57, 119, 48, 49, 61, 2, 2, 65, 48, 47, 111, 0, 0, 2, 255, 220, 254, 96, 4, 53, 4, 79, 0, 35, 0, 67, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 7, 1, 33, 19, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 45, 2, 6, 3, 12, 13, 49, 39, 40, 110, 74, 54, 97, 42, 23, 45, 21, 17, 248, 254, 252, 1, 15, 97, 18, 42, 23, 37, 84, 46, 77, 127, 52, 51, 79, 29, 28, 36, 254, 250, 2, 5, 17, 15, 15, 47, 32, 27, 69, 42, 33, 56, 22, 18, 28, 10, 80, 17, 39, 21, 28, 64, 37, 38, 53, 18, 21, 23, 2, 3, 3, 2, 25, 22, 61, 127, 60, 59, 106, 41, 40, 47, 2, 1, 26, 27, 15, 38, 22, 108, 1, 250, 38, 2, 0, 22, 36, 14, 21, 23, 1, 2, 45, 40, 40, 108, 63, 63, 135, 88, 21, 37, 79, 37, 42, 72, 25, 21, 24, 1, 1, 17, 16, 14, 38, 26, 1, 198, 23, 37, 14, 17, 18, 1, 1, 26, 22, 24, 73, 38, 34, 69, 0, 0, 2, 0, 92, 254, 96, 4, 109, 4, 80, 0, 35, 0, 67, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 3, 33, 1, 35, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 5, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 101, 2, 7, 5, 13, 13, 49, 40, 39, 110, 72, 49, 87, 39, 24, 46, 22, 99, 1, 16, 1, 4, 242, 42, 18, 43, 25, 36, 87, 47, 77, 127, 51, 52, 82, 29, 29, 37, 1, 5, 2, 5, 18, 15, 14, 43, 27, 29, 74, 46, 28, 48, 21, 21, 35, 12, 82, 17, 38, 22, 27, 65, 37, 41, 56, 17, 18, 18, 3, 3, 3, 2, 31, 21, 59, 126, 59, 60, 107, 40, 41, 49, 1, 1, 22, 22, 13, 36, 21, 254, 3, 5, 218, 111, 26, 42, 15, 23, 24, 1, 2, 42, 37, 38, 109, 63, 63, 140, 90, 21, 38, 79, 38, 37, 66, 25, 25, 29, 1, 1, 12, 12, 12, 40, 28, 254, 49, 22, 37, 14, 18, 18, 1, 1, 32, 26, 25, 65, 35, 35, 70, 0, 0, 1, 0, 174, 0, 0, 4, 142, 4, 80, 0, 24, 0, 0, 65, 34, 6, 7, 6, 6, 7, 55, 55, 35, 3, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 19, 38, 38, 3, 194, 59, 105, 47, 47, 82, 36, 7, 21, 252, 188, 1, 15, 113, 26, 61, 36, 43, 100, 58, 54, 104, 52, 74, 51, 101, 4, 80, 29, 26, 27, 74, 44, 44, 134, 251, 198, 2, 139, 41, 63, 21, 26, 26, 1, 1, 15, 13, 1, 21, 13, 15, 0, 1, 0, 74, 255, 234, 4, 76, 4, 79, 0, 79, 0, 0, 65, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 37, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 5, 52, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 2, 255, 7, 49, 33, 34, 75, 31, 41, 73, 28, 29, 34, 2, 254, 255, 79, 64, 63, 160, 83, 72, 164, 71, 81, 114, 5, 4, 75, 59, 24, 54, 28, 41, 86, 40, 26, 70, 30, 30, 38, 7, 6, 45, 31, 31, 70, 31, 37, 65, 24, 24, 27, 1, 1, 14, 75, 61, 62, 156, 82, 69, 149, 61, 86, 117, 3, 3, 70, 56, 47, 98, 62, 32, 73, 42, 21, 42, 15, 18, 20, 1, 47, 38, 48, 13, 14, 10, 18, 20, 19, 62, 44, 1, 92, 135, 45, 46, 46, 1, 1, 30, 32, 39, 135, 102, 84, 114, 37, 15, 24, 10, 15, 21, 8, 5, 14, 14, 13, 46, 38, 36, 49, 15, 14, 12, 17, 17, 18, 56, 39, 1, 91, 131, 43, 43, 41, 1, 1, 31, 29, 40, 142, 101, 77, 110, 37, 32, 41, 16, 8, 17, 9, 5, 18, 11, 14, 37, 0, 1, 0, 169, 255, 234, 4, 84, 5, 67, 0, 29, 0, 0, 65, 33, 3, 35, 7, 51, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 55, 33, 2, 250, 254, 241, 46, 240, 36, 240, 81, 9, 31, 41, 40, 131, 91, 79, 176, 73, 9, 57, 114, 58, 47, 59, 15, 16, 7, 5, 76, 1, 136, 36, 254, 120, 5, 67, 254, 247, 205, 254, 20, 86, 147, 54, 54, 63, 1, 2, 26, 40, 193, 12, 18, 2, 1, 32, 27, 27, 72, 43, 1, 210, 205, 0, 0, 1, 0, 113, 255, 233, 4, 127, 4, 58, 0, 28, 0, 0, 69, 22, 54, 55, 7, 51, 19, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 33, 3, 6, 22, 23, 22, 22, 1, 169, 97, 157, 60, 21, 245, 188, 254, 240, 133, 19, 43, 24, 30, 71, 41, 52, 56, 11, 12, 1, 5, 107, 254, 241, 107, 9, 16, 38, 35, 125, 21, 2, 100, 76, 153, 4, 58, 253, 8, 26, 41, 15, 18, 18, 1, 1, 42, 33, 33, 83, 42, 2, 131, 253, 128, 85, 163, 69, 63, 82, 0, 0, 1, 0, 149, 0, 0, 4, 179, 4, 59, 0, 8, 0, 0, 97, 51, 1, 33, 1, 7, 39, 3, 5, 1, 125, 254, 2, 56, 254, 221, 254, 167, 28, 2, 119, 254, 243, 4, 58, 253, 15, 81, 73, 2, 250, 1, 0, 1, 0, 112, 0, 0, 4, 210, 4, 58, 0, 18, 0, 0, 115, 51, 19, 55, 23, 19, 51, 1, 35, 3, 7, 53, 3, 35, 3, 7, 55, 19, 35, 112, 239, 207, 44, 3, 15, 238, 1, 120, 254, 187, 32, 3, 182, 222, 37, 6, 33, 244, 2, 53, 119, 120, 253, 204, 4, 58, 253, 137, 109, 123, 2, 105, 253, 134, 104, 108, 2, 118, 0, 1, 255, 241, 0, 0, 4, 197, 4, 58, 0, 11, 0, 0, 65, 3, 33, 1, 1, 33, 1, 19, 33, 1, 1, 33, 2, 120, 173, 254, 235, 1, 7, 254, 52, 1, 52, 1, 38, 186, 1, 21, 254, 239, 1, 188, 254, 206, 2, 233, 1, 81, 253, 248, 253, 206, 1, 97, 254, 159, 2, 28, 2, 30, 0, 1, 0, 0, 254, 72, 5, 3, 4, 58, 0, 26, 0, 0, 65, 3, 33, 1, 7, 6, 6, 7, 6, 6, 7, 6, 38, 39, 7, 22, 22, 23, 50, 54, 55, 54, 54, 55, 1, 33, 1, 2, 45, 132, 254, 226, 1, 6, 96, 17, 35, 19, 20, 46, 29, 20, 44, 20, 55, 35, 69, 36, 71, 117, 48, 48, 79, 33, 2, 235, 254, 201, 254, 106, 1, 186, 2, 128, 252, 1, 139, 20, 45, 19, 19, 26, 2, 2, 6, 1, 211, 9, 13, 1, 43, 38, 37, 102, 57, 4, 221, 253, 29, 0, 0, 1, 0, 20, 0, 0, 4, 129, 4, 58, 0, 9, 0, 0, 101, 1, 55, 33, 7, 33, 1, 7, 33, 55, 1, 177, 2, 180, 28, 252, 74, 36, 2, 54, 253, 84, 29, 3, 220, 35, 223, 2, 170, 177, 226, 253, 94, 182, 223, 0, 0, 3, 0, 124, 255, 233, 4, 92, 5, 199, 0, 37, 0, 57, 0, 77, 0, 0, 65, 19, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 1, 22, 22, 23, 22, 6, 7, 1, 54, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 3, 38, 38, 39, 38, 38, 55, 1, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 4, 28, 55, 9, 5, 15, 15, 58, 45, 45, 123, 81, 77, 130, 54, 34, 61, 26, 66, 79, 16, 54, 6, 2, 5, 5, 29, 24, 43, 158, 121, 81, 136, 55, 57, 90, 33, 34, 45, 254, 178, 57, 60, 13, 12, 1, 5, 254, 94, 1, 2, 6, 33, 7, 29, 28, 10, 24, 14, 25, 63, 135, 56, 60, 13, 13, 1, 4, 1, 165, 4, 3, 3, 30, 6, 18, 14, 13, 43, 28, 25, 58, 2, 43, 1, 91, 70, 139, 63, 63, 109, 41, 40, 48, 2, 2, 35, 32, 22, 54, 31, 81, 210, 112, 254, 164, 48, 96, 45, 54, 102, 44, 81, 102, 3, 2, 39, 36, 37, 106, 64, 66, 151, 3, 9, 2, 58, 43, 43, 98, 43, 254, 230, 5, 14, 37, 207, 51, 110, 46, 16, 30, 12, 20, 23, 251, 227, 2, 56, 42, 41, 96, 42, 1, 27, 20, 24, 19, 190, 37, 79, 37, 35, 64, 23, 20, 16, 0, 0, 1, 0, 233, 0, 0, 3, 172, 5, 176, 0, 6, 0, 0, 97, 19, 35, 5, 7, 37, 3, 2, 182, 246, 20, 253, 125, 44, 1, 124, 193, 5, 176, 224, 252, 131, 251, 169, 0, 1, 0, 3, 0, 0, 4, 66, 5, 198, 0, 42, 0, 0, 97, 55, 33, 1, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 1, 7, 3, 199, 36, 253, 156, 1, 55, 59, 128, 55, 55, 76, 7, 8, 51, 52, 53, 152, 93, 105, 192, 75, 76, 97, 8, 1, 15, 7, 38, 32, 31, 89, 57, 43, 61, 19, 18, 13, 5, 7, 53, 36, 37, 82, 35, 253, 242, 31, 223, 1, 34, 55, 119, 67, 66, 151, 86, 95, 153, 55, 54, 60, 2, 2, 68, 63, 63, 176, 107, 1, 53, 90, 33, 33, 36, 1, 2, 33, 27, 27, 71, 40, 52, 96, 44, 45, 78, 34, 254, 15, 200, 0, 1, 0, 52, 255, 234, 4, 107, 5, 198, 0, 76, 0, 0, 65, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 1, 195, 38, 162, 53, 79, 23, 22, 16, 6, 6, 45, 34, 35, 88, 50, 45, 70, 23, 21, 22, 1, 254, 243, 3, 62, 57, 57, 159, 93, 101, 191, 76, 76, 97, 8, 4, 16, 21, 21, 67, 48, 51, 91, 36, 35, 45, 5, 8, 60, 58, 58, 160, 92, 92, 174, 70, 70, 91, 7, 1, 14, 8, 40, 29, 29, 74, 42, 38, 59, 20, 25, 22, 6, 7, 45, 35, 35, 90, 51, 3, 82, 216, 1, 2, 32, 29, 27, 76, 48, 50, 81, 28, 28, 30, 1, 2, 30, 26, 25, 69, 41, 1, 97, 153, 53, 54, 58, 2, 2, 55, 56, 55, 164, 108, 52, 97, 43, 42, 68, 23, 24, 64, 41, 40, 99, 60, 99, 150, 52, 51, 53, 2, 2, 52, 51, 51, 150, 97, 2, 41, 65, 23, 22, 24, 1, 1, 21, 20, 24, 74, 47, 53, 81, 27, 27, 29, 0, 2, 0, 19, 0, 0, 4, 55, 5, 176, 0, 10, 0, 14, 0, 0, 65, 19, 33, 1, 7, 33, 3, 33, 19, 51, 55, 33, 1, 55, 3, 3, 147, 159, 254, 229, 253, 17, 21, 2, 74, 55, 1, 15, 55, 164, 39, 253, 9, 1, 135, 35, 102, 2, 29, 3, 147, 252, 70, 186, 254, 196, 1, 60, 225, 1, 237, 51, 253, 224, 0, 1, 0, 76, 255, 233, 4, 140, 5, 176, 0, 48, 0, 0, 83, 23, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 33, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 19, 33, 55, 33, 169, 221, 44, 96, 60, 56, 74, 21, 21, 12, 5, 6, 33, 29, 30, 88, 61, 45, 66, 22, 22, 24, 2, 254, 247, 63, 57, 57, 156, 93, 110, 188, 71, 70, 88, 11, 9, 33, 44, 45, 146, 104, 56, 109, 48, 100, 2, 47, 41, 252, 237, 2, 209, 57, 38, 41, 1, 1, 43, 35, 35, 91, 49, 53, 103, 41, 41, 50, 2, 1, 32, 27, 27, 72, 42, 94, 154, 55, 56, 62, 2, 3, 72, 66, 66, 183, 108, 94, 174, 67, 66, 81, 1, 1, 28, 30, 1, 66, 236, 0, 2, 0, 85, 255, 233, 4, 31, 5, 189, 0, 45, 0, 73, 0, 0, 65, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 54, 54, 55, 54, 54, 55, 54, 54, 23, 23, 1, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 3, 215, 42, 83, 151, 67, 124, 194, 69, 55, 71, 16, 14, 12, 39, 52, 51, 168, 119, 110, 187, 70, 70, 87, 9, 8, 31, 41, 41, 138, 100, 42, 78, 35, 41, 72, 32, 17, 43, 25, 45, 114, 71, 49, 115, 64, 12, 254, 163, 53, 69, 19, 19, 11, 4, 5, 36, 31, 32, 88, 57, 41, 58, 19, 19, 22, 4, 4, 1, 3, 11, 19, 50, 30, 29, 68, 5, 189, 29, 26, 50, 173, 111, 90, 211, 115, 107, 107, 204, 81, 81, 101, 3, 3, 78, 69, 69, 187, 106, 87, 172, 69, 69, 86, 2, 17, 16, 18, 54, 33, 48, 87, 38, 64, 97, 30, 20, 22, 1, 1, 254, 24, 2, 50, 38, 39, 93, 44, 50, 101, 40, 41, 50, 2, 1, 31, 25, 25, 65, 36, 35, 70, 31, 84, 30, 53, 20, 19, 22, 0, 0, 1, 0, 125, 0, 0, 4, 170, 5, 176, 0, 6, 0, 0, 65, 55, 33, 7, 33, 1, 33, 4, 144, 26, 252, 30, 36, 2, 192, 253, 25, 1, 40, 5, 9, 167, 227, 251, 51, 0, 0, 3, 0, 63, 255, 234, 4, 88, 5, 198, 0, 47, 0, 71, 0, 95, 0, 0, 65, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 1, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 4, 81, 7, 55, 53, 54, 151, 88, 96, 172, 66, 67, 83, 7, 4, 23, 27, 17, 46, 28, 58, 100, 38, 38, 47, 5, 8, 62, 58, 57, 160, 92, 99, 184, 72, 72, 92, 7, 5, 36, 39, 18, 47, 28, 51, 87, 33, 33, 41, 254, 162, 5, 39, 31, 32, 82, 49, 45, 67, 21, 21, 16, 5, 5, 39, 32, 31, 83, 50, 45, 66, 21, 20, 16, 78, 5, 32, 26, 27, 72, 44, 41, 56, 17, 17, 13, 4, 4, 31, 27, 26, 71, 45, 40, 57, 18, 17, 14, 4, 53, 93, 146, 52, 51, 55, 2, 2, 54, 54, 54, 156, 100, 56, 105, 45, 28, 50, 21, 27, 71, 45, 45, 111, 67, 98, 151, 51, 52, 56, 1, 2, 54, 55, 54, 161, 105, 70, 128, 52, 24, 44, 18, 26, 67, 41, 41, 100, 253, 175, 47, 82, 30, 30, 35, 1, 1, 33, 28, 27, 75, 43, 48, 83, 31, 30, 35, 1, 1, 34, 28, 29, 76, 2, 85, 41, 75, 29, 29, 34, 1, 33, 27, 26, 68, 37, 42, 74, 28, 28, 33, 1, 1, 31, 26, 26, 67, 0, 2, 0, 142, 255, 243, 4, 65, 5, 198, 0, 48, 0, 76, 0, 0, 119, 39, 7, 51, 54, 36, 55, 54, 18, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 6, 6, 7, 6, 6, 7, 6, 6, 1, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 253, 15, 24, 26, 181, 1, 32, 105, 104, 129, 23, 12, 7, 8, 17, 18, 63, 46, 47, 126, 81, 74, 133, 57, 57, 94, 34, 35, 43, 6, 8, 33, 43, 43, 141, 100, 42, 77, 35, 30, 58, 26, 22, 57, 34, 39, 94, 56, 47, 108, 1, 12, 54, 66, 17, 18, 9, 5, 5, 34, 30, 30, 86, 57, 30, 46, 17, 31, 30, 2, 2, 2, 3, 13, 18, 46, 28, 28, 66, 220, 1, 234, 1, 120, 107, 106, 1, 36, 173, 96, 69, 142, 65, 65, 115, 43, 43, 50, 2, 2, 37, 34, 35, 97, 58, 59, 133, 70, 89, 172, 68, 68, 84, 1, 1, 14, 15, 12, 38, 24, 60, 100, 39, 43, 63, 19, 16, 16, 1, 211, 1, 54, 40, 39, 95, 44, 48, 104, 44, 43, 55, 1, 1, 19, 16, 29, 92, 48, 30, 60, 25, 101, 31, 54, 19, 20, 22, 0, 1, 1, 223, 2, 147, 3, 133, 5, 165, 0, 6, 0, 0, 65, 19, 35, 5, 7, 55, 3, 3, 4, 129, 24, 254, 143, 29, 193, 95, 2, 147, 3, 18, 116, 163, 42, 253, 219, 0, 0, 1, 1, 61, 2, 155, 3, 224, 5, 190, 0, 39, 0, 0, 65, 55, 37, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 51, 50, 22, 7, 6, 6, 7, 6, 6, 7, 5, 7, 3, 150, 28, 254, 176, 132, 40, 85, 36, 36, 48, 2, 3, 44, 39, 39, 102, 56, 63, 111, 42, 43, 53, 5, 198, 5, 20, 16, 15, 41, 27, 37, 38, 7, 5, 28, 19, 20, 43, 18, 254, 202, 25, 2, 155, 159, 2, 91, 28, 63, 38, 37, 89, 54, 62, 90, 30, 29, 29, 1, 1, 38, 36, 36, 102, 64, 1, 24, 41, 16, 16, 18, 43, 38, 25, 47, 21, 21, 38, 15, 251, 144, 0, 1, 1, 79, 2, 142, 3, 235, 5, 188, 0, 73, 0, 0, 65, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 35, 7, 51, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 39, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 3, 155, 14, 41, 27, 31, 56, 22, 21, 27, 2, 3, 51, 41, 42, 104, 50, 56, 105, 42, 42, 55, 5, 202, 15, 58, 37, 17, 32, 12, 12, 11, 3, 4, 26, 19, 19, 45, 23, 82, 11, 92, 21, 40, 15, 14, 13, 4, 4, 25, 18, 19, 45, 22, 25, 40, 14, 11, 14, 1, 192, 46, 39, 38, 102, 58, 56, 119, 49, 49, 63, 2, 1, 16, 3, 240, 19, 28, 9, 14, 34, 22, 21, 57, 36, 60, 83, 26, 26, 24, 1, 26, 27, 28, 86, 60, 1, 34, 30, 9, 9, 9, 28, 19, 26, 35, 11, 12, 12, 1, 136, 1, 8, 9, 10, 33, 26, 24, 36, 11, 12, 12, 12, 12, 10, 30, 20, 1, 62, 92, 30, 31, 31, 1, 1, 25, 29, 28, 92, 66, 34, 58, 0, 2, 1, 61, 2, 178, 3, 230, 5, 197, 0, 51, 0, 71, 0, 0, 65, 51, 38, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 6, 22, 39, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 51, 7, 6, 6, 7, 6, 6, 2, 255, 169, 7, 3, 8, 17, 18, 15, 8, 32, 32, 32, 97, 62, 57, 110, 45, 45, 62, 8, 171, 6, 22, 16, 19, 50, 30, 28, 37, 10, 9, 6, 3, 8, 136, 59, 123, 51, 51, 67, 3, 2, 30, 29, 29, 83, 50, 69, 112, 45, 1, 1, 173, 20, 37, 13, 14, 14, 3, 3, 35, 25, 25, 59, 27, 123, 18, 16, 42, 24, 24, 52, 2, 192, 47, 89, 46, 105, 104, 105, 61, 101, 36, 36, 41, 1, 1, 26, 29, 29, 89, 61, 13, 23, 35, 12, 15, 14, 1, 1, 20, 17, 17, 45, 25, 53, 1, 22, 27, 27, 93, 70, 51, 82, 28, 29, 31, 1, 57, 51, 23, 47, 105, 9, 10, 9, 32, 23, 31, 44, 14, 14, 13, 1, 104, 21, 35, 13, 13, 14, 0, 0, 2, 1, 72, 2, 176, 4, 5, 5, 198, 0, 25, 0, 51, 0, 0, 65, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 1, 91, 13, 6, 35, 39, 38, 115, 72, 76, 132, 50, 50, 65, 9, 13, 7, 35, 38, 39, 114, 73, 77, 132, 50, 50, 65, 153, 12, 5, 29, 24, 24, 67, 42, 40, 56, 17, 16, 11, 3, 13, 5, 29, 24, 24, 67, 42, 41, 54, 16, 16, 12, 4, 116, 116, 71, 121, 44, 45, 51, 2, 2, 47, 45, 44, 125, 75, 117, 71, 121, 45, 44, 52, 2, 2, 48, 45, 45, 125, 194, 120, 39, 69, 26, 26, 29, 1, 1, 31, 26, 26, 67, 36, 119, 39, 69, 26, 26, 30, 1, 1, 32, 26, 25, 67, 0, 3, 0, 138, 0, 0, 4, 120, 5, 179, 0, 6, 0, 49, 0, 53, 0, 0, 65, 19, 35, 5, 7, 55, 3, 1, 55, 37, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 5, 7, 39, 1, 39, 1, 1, 146, 116, 22, 254, 180, 26, 174, 86, 3, 84, 25, 254, 210, 118, 36, 77, 32, 33, 43, 2, 2, 39, 35, 35, 92, 51, 56, 100, 38, 39, 47, 5, 178, 5, 18, 14, 14, 37, 24, 19, 29, 7, 6, 3, 3, 4, 26, 17, 18, 38, 17, 254, 233, 22, 246, 2, 140, 127, 253, 117, 2, 240, 2, 195, 104, 147, 38, 254, 18, 253, 16, 143, 2, 82, 25, 57, 33, 34, 80, 49, 56, 81, 26, 27, 26, 1, 1, 34, 33, 32, 92, 58, 1, 22, 37, 14, 15, 16, 14, 12, 9, 24, 14, 23, 42, 19, 19, 34, 13, 226, 130, 237, 3, 160, 73, 252, 96, 0, 4, 0, 177, 0, 0, 4, 70, 5, 178, 0, 6, 0, 17, 0, 21, 0, 25, 0, 0, 65, 19, 35, 5, 7, 55, 3, 1, 19, 39, 1, 7, 33, 7, 51, 55, 51, 55, 33, 55, 55, 7, 5, 1, 39, 1, 1, 185, 116, 22, 254, 180, 26, 174, 86, 2, 230, 73, 179, 254, 131, 12, 1, 46, 25, 177, 26, 78, 28, 254, 118, 162, 14, 42, 254, 36, 2, 140, 127, 253, 117, 2, 239, 2, 195, 104, 147, 38, 254, 18, 254, 51, 1, 164, 3, 254, 72, 129, 144, 144, 147, 176, 20, 196, 54, 3, 160, 73, 252, 96, 0, 4, 0, 104, 0, 0, 4, 117, 5, 186, 0, 10, 0, 14, 0, 88, 0, 92, 0, 0, 65, 19, 39, 1, 7, 33, 7, 51, 55, 51, 55, 33, 55, 55, 7, 1, 7, 51, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 35, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 51, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 19, 1, 39, 1, 4, 30, 73, 179, 254, 131, 12, 1, 46, 25, 177, 26, 78, 28, 254, 118, 162, 14, 42, 253, 216, 10, 82, 19, 36, 13, 13, 12, 3, 4, 23, 16, 17, 40, 20, 23, 37, 13, 9, 12, 1, 172, 41, 35, 34, 92, 52, 51, 107, 44, 44, 57, 1, 1, 18, 20, 12, 33, 21, 28, 50, 20, 19, 24, 2, 3, 46, 38, 37, 93, 45, 51, 94, 38, 38, 49, 5, 182, 13, 53, 33, 15, 29, 11, 11, 9, 2, 4, 23, 17, 17, 41, 21, 37, 2, 140, 127, 253, 117, 1, 34, 1, 164, 3, 254, 72, 129, 144, 144, 147, 176, 20, 196, 3, 107, 122, 1, 7, 9, 8, 30, 24, 21, 33, 10, 10, 11, 11, 12, 9, 26, 18, 55, 83, 28, 27, 28, 1, 1, 23, 25, 26, 83, 59, 34, 57, 21, 13, 21, 7, 13, 30, 20, 19, 51, 33, 54, 75, 23, 23, 22, 1, 24, 24, 25, 77, 54, 31, 27, 8, 8, 8, 25, 18, 23, 31, 11, 10, 11, 1, 252, 95, 3, 160, 73, 252, 96, 0, 2, 255, 193, 0, 0, 4, 247, 5, 176, 0, 15, 0, 18, 0, 0, 97, 55, 33, 19, 51, 55, 35, 19, 51, 55, 33, 1, 33, 19, 51, 3, 3, 19, 3, 4, 15, 39, 254, 251, 71, 210, 40, 211, 64, 240, 40, 253, 152, 253, 50, 1, 28, 150, 204, 58, 41, 230, 90, 226, 1, 153, 227, 1, 110, 228, 250, 80, 1, 78, 254, 178, 2, 62, 2, 0, 254, 0, 0, 3, 255, 245, 255, 235, 4, 158, 4, 81, 0, 78, 0, 93, 0, 113, 0, 0, 69, 22, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 38, 38, 39, 38, 6, 7, 6, 6, 7, 5, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 6, 7, 7, 35, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 19, 22, 22, 23, 22, 22, 15, 2, 55, 54, 54, 55, 54, 54, 1, 6, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 23, 3, 6, 6, 7, 6, 6, 2, 239, 36, 79, 39, 38, 71, 30, 38, 26, 52, 26, 21, 44, 23, 44, 59, 14, 11, 7, 4, 15, 1, 180, 32, 16, 22, 30, 31, 109, 81, 64, 113, 52, 44, 112, 60, 75, 127, 47, 47, 59, 6, 1, 2, 4, 14, 12, 11, 34, 25, 22, 22, 4, 4, 1, 3, 24, 8, 89, 169, 67, 68, 86, 6, 3, 33, 36, 35, 105, 69, 42, 74, 33, 24, 46, 22, 20, 54, 32, 31, 70, 149, 26, 29, 7, 6, 1, 2, 15, 196, 12, 5, 15, 15, 14, 46, 254, 27, 23, 32, 9, 10, 7, 3, 4, 36, 28, 28, 70, 39, 4, 62, 8, 17, 8, 8, 18, 19, 1, 7, 9, 8, 31, 23, 194, 11, 19, 6, 6, 5, 1, 1, 28, 26, 18, 51, 32, 92, 206, 100, 150, 58, 57, 74, 2, 2, 38, 37, 42, 33, 1, 1, 43, 41, 42, 119, 75, 10, 21, 38, 15, 14, 16, 1, 1, 22, 16, 17, 37, 16, 121, 3, 37, 43, 44, 139, 99, 66, 113, 41, 41, 47, 1, 1, 22, 20, 15, 39, 23, 31, 43, 14, 15, 13, 3, 129, 1, 23, 17, 18, 43, 20, 114, 1, 63, 29, 62, 26, 26, 32, 253, 73, 1, 15, 14, 13, 37, 20, 37, 69, 26, 25, 29, 2, 1, 255, 0, 4, 8, 4, 3, 5, 0, 2, 0, 47, 255, 235, 5, 13, 5, 199, 0, 35, 0, 58, 0, 0, 97, 55, 33, 19, 33, 55, 33, 19, 33, 55, 33, 38, 38, 35, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 3, 34, 6, 4, 27, 41, 254, 164, 73, 1, 30, 38, 254, 225, 65, 1, 80, 38, 254, 99, 66, 127, 66, 80, 132, 52, 45, 71, 27, 33, 42, 11, 74, 7, 4, 14, 14, 52, 41, 40, 110, 72, 67, 130, 66, 245, 28, 42, 14, 15, 18, 5, 10, 5, 5, 72, 8, 29, 27, 27, 86, 65, 22, 43, 22, 190, 23, 43, 232, 1, 160, 217, 1, 118, 217, 5, 17, 1, 42, 37, 33, 84, 49, 60, 140, 74, 254, 48, 62, 124, 57, 57, 98, 36, 37, 44, 1, 1, 16, 5, 213, 2, 16, 14, 13, 36, 21, 41, 97, 42, 1, 212, 54, 109, 43, 43, 53, 1, 1, 3, 2, 251, 235, 1, 0, 3, 0, 6, 255, 235, 4, 142, 4, 80, 0, 76, 0, 114, 0, 135, 0, 0, 65, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 53, 52, 54, 55, 55, 33, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 3, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 37, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 1, 203, 72, 116, 45, 32, 51, 21, 32, 40, 9, 29, 6, 4, 12, 6, 16, 10, 33, 122, 95, 55, 97, 43, 12, 24, 11, 18, 41, 22, 36, 83, 42, 36, 71, 33, 25, 46, 21, 44, 19, 36, 19, 17, 35, 19, 45, 50, 11, 7, 6, 3, 3, 7, 1, 144, 31, 10, 5, 11, 11, 41, 31, 32, 88, 58, 39, 70, 31, 21, 39, 19, 17, 39, 20, 31, 68, 225, 24, 2, 4, 3, 3, 10, 7, 14, 50, 42, 25, 31, 8, 7, 4, 1, 2, 5, 2, 25, 2, 6, 6, 6, 18, 14, 14, 42, 28, 25, 30, 7, 8, 3, 2, 1, 5, 1, 215, 1, 3, 6, 4, 5, 15, 13, 12, 37, 26, 15, 21, 6, 5, 7, 2, 4, 2, 2, 12, 4, 79, 1, 40, 36, 25, 66, 36, 58, 135, 68, 200, 55, 114, 51, 23, 45, 20, 66, 84, 2, 1, 30, 29, 8, 18, 10, 19, 30, 11, 18, 16, 1, 12, 13, 10, 29, 19, 182, 8, 16, 5, 4, 5, 1, 40, 31, 17, 39, 20, 16, 32, 16, 36, 201, 65, 101, 48, 47, 83, 32, 31, 38, 1, 1, 16, 16, 10, 28, 16, 18, 28, 10, 15, 15, 253, 104, 203, 15, 37, 20, 19, 40, 19, 38, 52, 2, 1, 27, 21, 22, 52, 26, 26, 47, 15, 202, 20, 51, 27, 27, 52, 20, 20, 24, 1, 1, 28, 21, 21, 53, 26, 26, 47, 224, 9, 17, 42, 24, 26, 52, 20, 20, 23, 1, 1, 12, 10, 7, 17, 9, 23, 49, 18, 86, 0, 2, 0, 7, 255, 233, 4, 148, 5, 234, 0, 49, 0, 78, 0, 0, 65, 38, 38, 39, 55, 39, 7, 38, 38, 39, 7, 22, 22, 23, 7, 23, 37, 22, 22, 23, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 54, 1, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 7, 7, 6, 6, 7, 6, 6, 4, 60, 7, 48, 42, 185, 60, 218, 56, 131, 74, 109, 32, 61, 27, 221, 62, 1, 1, 34, 33, 2, 28, 59, 32, 31, 66, 34, 113, 191, 72, 72, 88, 9, 9, 58, 59, 58, 168, 101, 86, 152, 65, 64, 106, 40, 40, 52, 11, 9, 8, 4, 254, 120, 39, 110, 72, 54, 76, 23, 24, 18, 6, 6, 43, 35, 34, 96, 60, 32, 71, 34, 33, 59, 20, 3, 15, 6, 20, 14, 11, 28, 3, 119, 96, 186, 93, 91, 124, 112, 54, 73, 22, 214, 14, 30, 23, 112, 123, 133, 59, 125, 69, 21, 33, 11, 11, 12, 1, 3, 75, 68, 68, 188, 111, 102, 173, 64, 65, 74, 3, 2, 43, 41, 40, 113, 68, 67, 151, 79, 68, 62, 120, 253, 254, 52, 64, 2, 2, 45, 36, 36, 91, 49, 54, 106, 43, 42, 53, 9, 10, 11, 36, 28, 14, 96, 35, 71, 35, 26, 50, 0, 2, 0, 27, 0, 0, 4, 148, 5, 176, 0, 18, 0, 33, 0, 0, 65, 33, 3, 33, 19, 23, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 2, 40, 254, 240, 253, 1, 16, 51, 234, 107, 201, 79, 79, 103, 10, 9, 66, 62, 63, 172, 99, 205, 39, 233, 49, 77, 26, 25, 22, 7, 8, 53, 40, 40, 100, 55, 207, 5, 176, 250, 80, 1, 33, 1, 56, 57, 57, 171, 116, 106, 162, 56, 55, 58, 2, 1, 224, 1, 2, 31, 27, 28, 79, 49, 58, 86, 29, 30, 29, 1, 2, 0, 0, 2, 255, 220, 254, 96, 4, 53, 6, 7, 0, 38, 0, 70, 0, 0, 101, 54, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 33, 1, 33, 19, 22, 22, 23, 22, 22, 23, 22, 54, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 2, 234, 49, 81, 35, 25, 43, 18, 28, 36, 8, 2, 6, 3, 12, 12, 49, 39, 40, 110, 74, 47, 85, 37, 27, 51, 23, 107, 254, 241, 254, 172, 1, 15, 97, 21, 50, 27, 34, 76, 42, 46, 82, 181, 28, 50, 20, 23, 35, 11, 79, 20, 47, 28, 24, 56, 32, 41, 56, 18, 18, 18, 3, 3, 3, 3, 2, 7, 34, 31, 16, 39, 24, 24, 59, 8, 20, 64, 41, 31, 71, 38, 63, 135, 66, 21, 61, 127, 60, 60, 106, 40, 40, 48, 2, 1, 20, 20, 14, 39, 24, 2, 45, 248, 89, 2, 1, 26, 41, 14, 18, 18, 1, 1, 15, 208, 1, 13, 12, 14, 43, 30, 1, 197, 28, 43, 14, 13, 12, 1, 1, 31, 25, 26, 64, 35, 35, 70, 30, 21, 56, 121, 49, 25, 41, 15, 15, 16, 0, 0, 1, 0, 50, 0, 0, 4, 222, 4, 58, 0, 12, 0, 0, 65, 19, 33, 1, 1, 33, 1, 7, 19, 33, 3, 33, 19, 2, 52, 164, 1, 76, 254, 234, 1, 208, 254, 154, 254, 160, 108, 81, 254, 240, 187, 1, 15, 48, 1, 168, 254, 88, 2, 110, 1, 204, 254, 159, 108, 1, 205, 251, 198, 1, 21, 0, 0, 1, 0, 52, 255, 232, 4, 81, 6, 29, 0, 75, 0, 0, 97, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 1, 67, 181, 6, 28, 25, 24, 75, 53, 30, 42, 13, 12, 9, 3, 6, 48, 27, 28, 47, 4, 4, 27, 22, 21, 52, 21, 21, 24, 7, 4, 22, 17, 20, 59, 36, 54, 109, 46, 77, 62, 146, 70, 90, 153, 58, 57, 69, 6, 3, 27, 21, 22, 50, 20, 20, 22, 7, 10, 50, 27, 27, 44, 5, 6, 45, 45, 46, 129, 78, 111, 180, 66, 66, 82, 15, 184, 4, 49, 42, 96, 41, 41, 52, 3, 2, 28, 21, 22, 53, 26, 54, 90, 43, 44, 92, 55, 47, 81, 37, 37, 71, 35, 36, 75, 41, 28, 50, 20, 23, 29, 1, 2, 31, 28, 219, 36, 25, 1, 1, 50, 49, 49, 143, 92, 44, 82, 39, 38, 74, 37, 36, 75, 39, 54, 89, 44, 44, 93, 57, 80, 130, 47, 47, 52, 2, 3, 73, 66, 66, 180, 104, 251, 204, 0, 2, 0, 119, 255, 235, 4, 84, 4, 79, 0, 42, 0, 56, 0, 0, 65, 38, 6, 7, 6, 6, 7, 23, 54, 54, 23, 22, 22, 23, 22, 22, 23, 20, 6, 21, 33, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 3, 38, 38, 39, 38, 38, 55, 55, 33, 6, 6, 7, 6, 6, 2, 148, 54, 113, 55, 56, 103, 43, 61, 78, 158, 88, 55, 81, 27, 23, 23, 1, 1, 253, 93, 24, 12, 40, 51, 51, 160, 107, 87, 153, 64, 56, 72, 32, 40, 52, 9, 5, 10, 49, 57, 56, 173, 225, 47, 66, 19, 20, 13, 7, 6, 1, 154, 17, 46, 31, 31, 81, 4, 78, 1, 12, 15, 14, 48, 35, 182, 38, 45, 3, 2, 39, 34, 29, 78, 45, 6, 11, 6, 158, 103, 176, 66, 65, 75, 3, 2, 47, 44, 38, 82, 50, 65, 149, 79, 41, 108, 190, 72, 71, 85, 252, 126, 1, 32, 27, 27, 74, 44, 28, 43, 84, 33, 34, 40, 0, 1, 0, 89, 255, 43, 4, 156, 6, 152, 0, 55, 0, 0, 65, 6, 6, 39, 38, 38, 55, 37, 6, 18, 23, 7, 51, 55, 54, 36, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 23, 22, 22, 7, 33, 54, 2, 39, 55, 35, 7, 6, 4, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 36, 12, 143, 87, 113, 86, 6, 254, 240, 8, 182, 190, 37, 156, 36, 176, 1, 12, 12, 6, 56, 52, 52, 140, 77, 38, 70, 26, 26, 28, 6, 12, 119, 89, 103, 63, 4, 1, 15, 8, 146, 176, 40, 157, 40, 178, 254, 252, 12, 6, 57, 53, 52, 141, 78, 39, 69, 26, 25, 25, 1, 133, 93, 95, 2, 2, 147, 101, 1, 186, 254, 255, 26, 198, 196, 18, 196, 194, 94, 141, 54, 53, 81, 33, 16, 37, 25, 24, 67, 47, 87, 102, 2, 2, 157, 86, 168, 1, 6, 34, 219, 215, 18, 206, 186, 94, 141, 53, 54, 79, 32, 16, 38, 25, 26, 69, 0, 0, 1, 0, 121, 255, 11, 4, 72, 5, 38, 0, 66, 0, 0, 101, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 55, 35, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 7, 51, 55, 54, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 2, 43, 65, 69, 15, 6, 6, 2, 2, 3, 3, 4, 5, 18, 15, 18, 50, 34, 27, 66, 40, 43, 64, 21, 21, 18, 3, 255, 4, 36, 38, 38, 110, 69, 41, 196, 39, 102, 167, 62, 62, 77, 12, 3, 5, 3, 8, 6, 25, 17, 36, 121, 84, 43, 196, 40, 78, 145, 57, 57, 72, 5, 254, 6, 41, 29, 30, 73, 201, 2, 65, 48, 17, 40, 20, 33, 67, 30, 30, 38, 77, 37, 40, 73, 24, 18, 19, 1, 2, 31, 26, 26, 71, 40, 1, 78, 134, 53, 52, 73, 17, 230, 221, 13, 96, 73, 73, 186, 103, 31, 49, 94, 44, 39, 73, 33, 70, 102, 22, 241, 228, 9, 61, 50, 50, 135, 83, 2, 40, 64, 21, 22, 22, 0, 1, 0, 10, 0, 0, 4, 191, 5, 198, 0, 48, 0, 0, 65, 33, 55, 33, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 35, 7, 51, 7, 6, 6, 7, 6, 6, 7, 39, 7, 33, 55, 5, 54, 54, 55, 2, 29, 1, 37, 39, 254, 211, 28, 6, 31, 25, 25, 70, 45, 43, 57, 18, 17, 13, 2, 1, 7, 4, 48, 49, 49, 146, 94, 100, 173, 66, 66, 84, 12, 30, 151, 39, 158, 23, 5, 14, 13, 14, 41, 31, 75, 40, 4, 1, 39, 253, 114, 44, 50, 9, 2, 73, 221, 235, 40, 76, 30, 29, 35, 1, 1, 30, 24, 25, 67, 39, 1, 92, 151, 54, 54, 60, 2, 2, 62, 57, 58, 162, 99, 234, 221, 166, 30, 60, 26, 27, 41, 12, 2, 225, 226, 3, 45, 102, 63, 0, 0, 1, 0, 77, 0, 0, 5, 64, 5, 176, 0, 26, 0, 0, 65, 1, 7, 49, 39, 3, 33, 19, 33, 7, 33, 7, 33, 7, 33, 3, 33, 19, 33, 55, 33, 55, 55, 33, 55, 35, 1, 4, 6, 254, 197, 76, 35, 140, 254, 223, 249, 254, 244, 29, 1, 77, 22, 254, 180, 29, 1, 77, 50, 1, 18, 50, 1, 65, 29, 254, 190, 22, 1, 1, 64, 29, 236, 1, 240, 5, 176, 254, 15, 120, 125, 1, 236, 253, 54, 166, 124, 165, 254, 225, 1, 31, 165, 118, 6, 166, 2, 202, 0, 1, 255, 248, 254, 73, 4, 215, 6, 47, 0, 47, 0, 0, 65, 55, 35, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 35, 7, 51, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 3, 193, 32, 200, 11, 8, 46, 34, 34, 87, 50, 35, 65, 31, 45, 48, 96, 51, 102, 177, 67, 68, 87, 13, 9, 156, 32, 156, 136, 6, 26, 22, 23, 66, 45, 35, 72, 29, 37, 46, 95, 48, 99, 155, 56, 55, 67, 12, 136, 3, 109, 205, 79, 51, 74, 24, 24, 23, 1, 16, 16, 215, 16, 25, 1, 2, 53, 53, 54, 159, 103, 79, 205, 252, 134, 40, 74, 28, 28, 33, 1, 1, 18, 17, 220, 19, 19, 1, 1, 63, 57, 56, 157, 93, 3, 122, 255, 255, 255, 189, 0, 0, 4, 225, 5, 176, 6, 38, 0, 7, 0, 0, 0, 7, 2, 106, 254, 146, 254, 86, 0, 1, 0, 4, 0, 0, 4, 185, 5, 198, 0, 56, 0, 0, 65, 55, 33, 55, 33, 55, 33, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 35, 7, 51, 7, 35, 7, 55, 7, 6, 6, 7, 6, 6, 7, 39, 7, 33, 55, 5, 54, 54, 55, 55, 3, 29, 27, 254, 228, 16, 1, 31, 27, 254, 218, 18, 6, 31, 25, 25, 69, 45, 43, 58, 17, 17, 14, 2, 1, 7, 4, 48, 49, 49, 145, 94, 101, 172, 66, 66, 85, 12, 19, 146, 26, 151, 18, 153, 27, 166, 10, 6, 16, 13, 14, 41, 31, 75, 40, 4, 1, 40, 253, 113, 45, 51, 11, 6, 1, 213, 153, 114, 153, 152, 40, 76, 30, 29, 35, 1, 1, 30, 24, 25, 67, 39, 1, 92, 151, 54, 54, 60, 2, 2, 62, 57, 58, 162, 99, 151, 153, 114, 153, 1, 53, 30, 59, 26, 26, 41, 11, 1, 225, 226, 3, 45, 100, 63, 39, 0, 2, 0, 15, 255, 236, 4, 209, 5, 176, 0, 45, 0, 63, 0, 0, 65, 55, 35, 19, 35, 3, 7, 54, 38, 39, 38, 38, 39, 39, 3, 51, 19, 23, 50, 54, 55, 54, 54, 55, 51, 3, 6, 22, 23, 22, 22, 23, 50, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 54, 55, 19, 5, 19, 23, 22, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 4, 183, 26, 169, 46, 196, 46, 89, 4, 28, 34, 35, 110, 76, 233, 252, 195, 104, 59, 85, 130, 48, 48, 66, 23, 70, 104, 5, 10, 22, 21, 81, 65, 36, 76, 29, 17, 17, 36, 18, 27, 25, 4, 4, 3, 2, 107, 253, 59, 112, 58, 28, 37, 10, 10, 7, 5, 2, 5, 25, 23, 24, 73, 54, 3, 164, 150, 1, 4, 254, 252, 1, 69, 132, 52, 52, 65, 3, 2, 250, 80, 2, 51, 2, 60, 51, 51, 135, 74, 253, 136, 53, 113, 46, 47, 60, 1, 17, 23, 143, 5, 7, 33, 23, 23, 49, 18, 2, 123, 213, 2, 66, 2, 3, 33, 25, 25, 60, 30, 31, 55, 19, 44, 102, 44, 44, 60, 2, 0, 2, 255, 255, 255, 229, 4, 145, 4, 41, 0, 35, 0, 71, 0, 0, 101, 23, 55, 39, 54, 54, 55, 54, 38, 39, 55, 39, 7, 38, 38, 39, 38, 6, 7, 39, 7, 23, 6, 6, 7, 6, 22, 23, 7, 23, 55, 22, 22, 23, 22, 54, 1, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 38, 3, 32, 79, 152, 91, 48, 61, 10, 9, 15, 21, 137, 121, 137, 56, 130, 70, 76, 139, 65, 87, 151, 92, 54, 66, 11, 8, 13, 18, 122, 120, 118, 57, 137, 73, 82, 147, 254, 60, 5, 29, 23, 23, 67, 40, 38, 89, 48, 38, 64, 26, 38, 50, 10, 9, 4, 4, 6, 30, 23, 25, 60, 38, 39, 91, 50, 44, 71, 28, 27, 42, 12, 11, 5, 76, 103, 134, 121, 64, 142, 81, 72, 139, 69, 114, 156, 119, 43, 44, 1, 1, 47, 39, 115, 133, 125, 68, 151, 85, 69, 136, 67, 101, 155, 102, 47, 48, 1, 2, 53, 1, 212, 43, 84, 38, 40, 71, 23, 24, 25, 1, 1, 22, 18, 28, 77, 47, 32, 70, 34, 44, 86, 38, 40, 67, 23, 26, 27, 1, 1, 28, 24, 25, 68, 39, 35, 75, 0, 0, 2, 1, 96, 255, 239, 3, 110, 5, 176, 0, 3, 0, 27, 0, 0, 65, 19, 33, 3, 3, 20, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 7, 34, 6, 7, 6, 6, 2, 186, 180, 254, 234, 149, 99, 25, 21, 21, 57, 33, 33, 58, 22, 21, 24, 24, 21, 21, 57, 33, 34, 58, 21, 22, 24, 1, 253, 3, 179, 252, 77, 254, 133, 33, 54, 19, 20, 21, 1, 24, 21, 21, 57, 34, 34, 56, 20, 19, 22, 1, 25, 21, 22, 59, 0, 2, 1, 55, 254, 132, 3, 76, 4, 82, 0, 3, 0, 15, 0, 0, 65, 3, 33, 19, 19, 52, 38, 7, 6, 6, 21, 20, 22, 55, 50, 54, 1, 236, 181, 1, 23, 149, 105, 91, 66, 71, 88, 92, 65, 65, 94, 2, 53, 252, 79, 3, 177, 1, 132, 66, 87, 2, 2, 94, 67, 67, 81, 2, 89, 0, 0, 2, 0, 243, 255, 241, 4, 137, 5, 199, 0, 43, 0, 55, 0, 0, 65, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 3, 20, 22, 55, 50, 54, 53, 52, 38, 7, 34, 6, 1, 210, 240, 10, 52, 59, 54, 111, 46, 46, 63, 6, 8, 59, 56, 57, 155, 89, 97, 174, 67, 68, 87, 9, 1, 16, 8, 36, 27, 27, 71, 42, 36, 56, 19, 24, 19, 7, 7, 51, 34, 35, 78, 34, 95, 63, 111, 91, 65, 67, 92, 91, 66, 69, 89, 1, 185, 1, 70, 102, 49, 43, 89, 51, 51, 121, 76, 97, 143, 47, 47, 47, 2, 2, 50, 50, 51, 152, 101, 1, 40, 65, 23, 23, 25, 1, 1, 18, 17, 21, 66, 45, 46, 84, 37, 38, 65, 27, 75, 154, 254, 88, 67, 81, 2, 87, 71, 66, 86, 2, 95, 0, 0, 2, 0, 84, 254, 117, 3, 187, 4, 55, 0, 49, 0, 61, 0, 0, 65, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 5, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 3, 22, 22, 55, 54, 54, 39, 52, 38, 7, 6, 6, 2, 253, 238, 6, 15, 13, 13, 40, 29, 53, 109, 45, 45, 61, 6, 8, 52, 52, 52, 147, 88, 95, 167, 64, 64, 81, 9, 254, 241, 7, 27, 20, 25, 70, 45, 34, 49, 15, 16, 11, 5, 7, 47, 33, 33, 76, 35, 48, 59, 18, 17, 17, 179, 1, 70, 59, 60, 71, 1, 70, 62, 63, 65, 2, 128, 1, 36, 58, 25, 26, 45, 24, 43, 91, 52, 53, 122, 74, 93, 141, 48, 48, 51, 2, 2, 50, 51, 50, 149, 98, 1, 34, 58, 22, 27, 30, 1, 1, 22, 20, 21, 58, 35, 47, 87, 40, 39, 69, 28, 38, 71, 40, 39, 93, 1, 102, 60, 64, 2, 2, 68, 60, 61, 72, 2, 2, 76, 0, 0, 1, 0, 190, 254, 106, 2, 117, 0, 243, 0, 12, 0, 0, 101, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 2, 80, 37, 255, 40, 17, 77, 50, 142, 49, 86, 34, 34, 46, 23, 220, 234, 95, 161, 81, 78, 40, 96, 55, 54, 120, 0, 0, 1, 1, 78, 255, 235, 2, 196, 1, 90, 0, 11, 0, 0, 101, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 78, 103, 79, 79, 113, 103, 79, 84, 108, 154, 77, 98, 106, 83, 77, 101, 110, 255, 255, 1, 92, 255, 235, 3, 96, 4, 148, 4, 38, 0, 96, 14, 0, 0, 7, 0, 96, 0, 156, 3, 58, 255, 255, 1, 8, 254, 106, 3, 134, 4, 148, 4, 39, 0, 96, 0, 194, 3, 58, 0, 6, 0, 95, 74, 0, 255, 255, 0, 22, 255, 234, 4, 142, 1, 89, 4, 39, 0, 96, 254, 200, 255, 255, 0, 38, 0, 96, 73, 255, 0, 7, 0, 96, 1, 202, 255, 255, 0, 1, 1, 241, 2, 37, 3, 36, 3, 86, 0, 11, 0, 0, 65, 20, 22, 55, 50, 54, 53, 52, 38, 7, 34, 6, 1, 241, 88, 65, 65, 89, 88, 65, 67, 87, 2, 184, 65, 82, 2, 88, 67, 65, 83, 2, 91, 0, 0, 1, 1, 163, 1, 245, 3, 109, 3, 246, 0, 25, 0, 0, 65, 7, 20, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 1, 165, 2, 29, 28, 27, 79, 48, 51, 86, 32, 32, 38, 4, 3, 1, 28, 27, 28, 80, 50, 52, 87, 32, 32, 37, 3, 12, 60, 48, 79, 29, 29, 33, 1, 33, 30, 30, 83, 51, 57, 49, 83, 31, 30, 35, 1, 35, 31, 31, 86, 0, 0, 1, 0, 1, 255, 39, 3, 158, 0, 0, 0, 3, 0, 0, 69, 55, 33, 7, 3, 119, 39, 252, 137, 38, 217, 217, 217, 0, 0, 1, 1, 5, 2, 18, 4, 86, 2, 243, 0, 3, 0, 0, 65, 55, 33, 7, 4, 46, 40, 252, 214, 39, 2, 18, 225, 225, 0, 1, 0, 58, 2, 89, 4, 173, 3, 60, 0, 3, 0, 0, 65, 55, 33, 7, 4, 121, 52, 251, 193, 52, 2, 89, 227, 227, 0, 1, 0, 54, 2, 89, 4, 169, 3, 60, 0, 3, 0, 0, 65, 55, 33, 7, 4, 117, 52, 251, 193, 52, 2, 89, 227, 227, 0, 1, 1, 248, 3, 225, 3, 30, 6, 0, 0, 5, 0, 0, 65, 55, 35, 7, 3, 51, 3, 6, 24, 209, 21, 64, 183, 5, 102, 154, 134, 254, 103, 0, 0, 2, 1, 79, 3, 240, 3, 250, 6, 0, 0, 5, 0, 11, 0, 0, 65, 55, 35, 7, 3, 51, 1, 55, 35, 7, 3, 51, 2, 89, 19, 202, 17, 66, 175, 1, 233, 19, 200, 17, 66, 174, 5, 136, 120, 111, 254, 95, 1, 152, 120, 107, 254, 91, 0, 1, 2, 35, 3, 244, 3, 164, 6, 43, 0, 12, 0, 0, 65, 7, 51, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 2, 64, 29, 218, 30, 16, 72, 49, 122, 45, 77, 30, 31, 42, 4, 163, 175, 177, 87, 150, 72, 81, 37, 88, 50, 50, 109, 0, 1, 2, 24, 3, 228, 3, 152, 6, 24, 0, 12, 0, 0, 65, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 3, 124, 28, 218, 29, 16, 71, 50, 122, 45, 77, 31, 30, 42, 5, 108, 172, 173, 88, 150, 72, 81, 37, 88, 50, 50, 109, 0, 1, 1, 49, 254, 187, 2, 188, 1, 13, 0, 9, 0, 0, 101, 55, 35, 7, 6, 6, 7, 23, 54, 54, 2, 154, 34, 227, 36, 15, 68, 49, 128, 88, 126, 66, 203, 205, 86, 150, 72, 81, 75, 201, 255, 255, 1, 131, 3, 244, 4, 79, 6, 43, 4, 39, 0, 108, 255, 96, 0, 0, 0, 7, 0, 108, 0, 171, 0, 0, 255, 255, 1, 119, 3, 228, 4, 83, 6, 24, 4, 39, 0, 109, 255, 95, 0, 0, 0, 7, 0, 109, 0, 187, 0, 0, 0, 2, 0, 166, 254, 185, 3, 106, 0, 235, 0, 9, 0, 22, 0, 0, 101, 55, 35, 7, 6, 6, 7, 23, 54, 54, 37, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 2, 17, 26, 227, 30, 15, 68, 49, 134, 89, 122, 1, 80, 27, 227, 31, 15, 74, 48, 133, 45, 77, 31, 31, 42, 65, 170, 173, 86, 150, 72, 81, 74, 203, 115, 170, 173, 87, 149, 72, 81, 37, 88, 50, 50, 110, 0, 255, 255, 1, 248, 3, 225, 3, 30, 6, 0, 6, 6, 0, 106, 0, 0, 255, 255, 1, 79, 3, 240, 3, 250, 6, 0, 6, 6, 0, 107, 0, 0, 0, 1, 1, 58, 254, 55, 3, 239, 6, 85, 0, 36, 0, 0, 65, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 55, 54, 54, 55, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 7, 6, 6, 1, 77, 3, 11, 5, 9, 9, 47, 41, 40, 121, 84, 64, 58, 74, 21, 21, 16, 1, 1, 14, 9, 3, 18, 65, 53, 52, 149, 103, 43, 96, 161, 65, 66, 103, 38, 38, 51, 2, 76, 23, 85, 191, 97, 98, 191, 85, 85, 142, 48, 149, 49, 131, 75, 75, 163, 81, 81, 154, 66, 25, 124, 246, 113, 113, 200, 78, 155, 43, 132, 82, 83, 190, 100, 101, 205, 0, 0, 1, 0, 163, 254, 53, 3, 101, 6, 83, 0, 33, 0, 0, 65, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 21, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 18, 3, 83, 3, 11, 4, 11, 11, 49, 42, 43, 123, 84, 64, 57, 74, 22, 21, 16, 1, 14, 9, 4, 18, 65, 52, 53, 150, 103, 39, 150, 233, 79, 75, 92, 2, 62, 23, 85, 191, 98, 98, 191, 86, 85, 141, 47, 148, 49, 131, 75, 76, 164, 81, 81, 153, 66, 25, 124, 246, 114, 114, 200, 78, 153, 64, 241, 149, 136, 1, 47, 0, 1, 0, 241, 254, 177, 3, 225, 6, 154, 0, 7, 0, 0, 65, 55, 33, 1, 33, 55, 35, 19, 3, 191, 34, 254, 77, 254, 195, 1, 179, 34, 165, 249, 5, 195, 215, 248, 23, 215, 6, 59, 0, 1, 0, 241, 254, 177, 3, 226, 6, 154, 0, 7, 0, 0, 65, 7, 51, 3, 35, 7, 33, 1, 2, 46, 34, 166, 249, 166, 34, 1, 180, 1, 61, 6, 154, 215, 249, 197, 215, 7, 233, 0, 0, 1, 1, 36, 254, 153, 4, 56, 6, 64, 0, 48, 0, 0, 65, 55, 38, 38, 39, 38, 54, 55, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 7, 7, 6, 6, 7, 7, 22, 22, 23, 22, 22, 7, 7, 6, 22, 23, 22, 22, 3, 6, 43, 50, 48, 10, 8, 7, 5, 21, 5, 17, 21, 22, 72, 49, 124, 150, 17, 21, 7, 19, 22, 22, 76, 64, 19, 101, 152, 53, 54, 65, 12, 21, 18, 146, 127, 20, 60, 81, 24, 23, 15, 7, 21, 9, 25, 30, 35, 130, 254, 153, 159, 4, 62, 44, 46, 109, 40, 164, 55, 102, 44, 44, 73, 26, 50, 171, 135, 163, 51, 108, 45, 45, 59, 1, 159, 4, 78, 63, 64, 166, 93, 163, 127, 123, 2, 200, 3, 34, 30, 31, 90, 59, 164, 75, 153, 61, 72, 99, 0, 0, 1, 0, 193, 254, 148, 3, 213, 6, 60, 0, 45, 0, 0, 87, 23, 54, 54, 55, 54, 54, 55, 55, 54, 54, 55, 55, 38, 38, 55, 55, 54, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 6, 7, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 7, 6, 6, 7, 6, 6, 193, 23, 97, 151, 54, 54, 65, 12, 22, 18, 146, 126, 20, 120, 90, 14, 21, 9, 24, 36, 37, 125, 92, 46, 43, 54, 12, 16, 13, 7, 21, 6, 21, 27, 21, 60, 40, 119, 142, 17, 21, 6, 24, 23, 24, 75, 203, 161, 6, 80, 64, 64, 166, 90, 163, 126, 122, 2, 200, 6, 125, 118, 164, 80, 162, 66, 66, 86, 4, 157, 4, 38, 35, 46, 131, 52, 164, 62, 115, 48, 36, 62, 24, 51, 171, 131, 163, 46, 107, 46, 47, 62, 0, 1, 1, 110, 0, 128, 3, 127, 3, 159, 0, 6, 0, 0, 65, 1, 35, 1, 7, 19, 51, 2, 68, 1, 59, 193, 254, 178, 2, 214, 161, 2, 2, 1, 157, 254, 122, 20, 254, 123, 0, 1, 1, 28, 0, 127, 3, 44, 3, 158, 0, 6, 0, 0, 65, 35, 19, 1, 51, 1, 55, 2, 86, 161, 160, 254, 199, 192, 1, 79, 1, 3, 158, 254, 125, 254, 100, 1, 135, 20, 0, 1, 0, 88, 0, 146, 4, 78, 4, 182, 0, 11, 0, 0, 65, 19, 33, 3, 33, 7, 33, 3, 33, 19, 33, 55, 2, 235, 68, 254, 254, 69, 254, 156, 44, 1, 100, 71, 1, 2, 72, 1, 99, 44, 3, 44, 1, 138, 254, 118, 254, 254, 100, 1, 156, 254, 0, 1, 0, 144, 2, 89, 3, 252, 3, 60, 0, 3, 0, 0, 65, 55, 33, 7, 3, 212, 40, 252, 188, 40, 2, 89, 227, 227, 0, 2, 0, 72, 0, 0, 4, 60, 5, 4, 0, 11, 0, 15, 0, 0, 65, 19, 35, 3, 33, 7, 33, 3, 51, 19, 33, 55, 3, 55, 33, 7, 2, 251, 55, 239, 55, 254, 182, 37, 1, 75, 58, 239, 58, 1, 65, 36, 176, 40, 252, 188, 40, 3, 165, 1, 95, 254, 161, 232, 254, 142, 1, 114, 232, 252, 91, 227, 227, 0, 0, 1, 0, 114, 0, 207, 4, 113, 4, 141, 0, 11, 0, 0, 83, 23, 1, 19, 55, 3, 1, 39, 1, 3, 7, 19, 114, 141, 1, 96, 243, 178, 246, 1, 99, 141, 254, 160, 243, 178, 246, 1, 126, 175, 1, 56, 254, 200, 153, 1, 60, 1, 59, 174, 254, 200, 1, 56, 153, 254, 196, 0, 0, 3, 0, 99, 0, 136, 4, 110, 4, 209, 0, 3, 0, 15, 0, 27, 0, 0, 65, 55, 33, 7, 1, 20, 22, 51, 50, 54, 53, 52, 38, 7, 34, 6, 3, 20, 22, 51, 50, 54, 53, 52, 38, 7, 34, 6, 4, 70, 40, 252, 29, 40, 1, 181, 86, 61, 60, 89, 88, 60, 65, 83, 143, 88, 60, 60, 89, 87, 62, 65, 83, 2, 61, 227, 227, 1, 255, 61, 76, 81, 66, 62, 77, 2, 84, 252, 150, 62, 75, 81, 66, 62, 78, 2, 85, 0, 0, 2, 0, 98, 1, 30, 4, 108, 3, 177, 0, 3, 0, 7, 0, 0, 65, 55, 33, 7, 1, 55, 33, 7, 4, 68, 40, 252, 105, 40, 3, 76, 40, 252, 105, 40, 2, 205, 228, 228, 254, 81, 227, 227, 0, 1, 0, 92, 0, 132, 4, 102, 4, 79, 0, 19, 0, 0, 65, 55, 33, 55, 33, 55, 35, 55, 39, 7, 33, 7, 33, 7, 33, 7, 51, 7, 23, 55, 3, 243, 40, 254, 91, 141, 1, 59, 40, 197, 62, 119, 110, 253, 213, 40, 1, 181, 141, 254, 181, 40, 214, 59, 120, 106, 1, 30, 227, 204, 228, 89, 69, 158, 228, 204, 227, 86, 68, 154, 0, 2, 0, 91, 0, 243, 4, 107, 4, 7, 0, 43, 0, 90, 0, 0, 83, 7, 54, 54, 55, 54, 54, 51, 54, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 7, 34, 6, 7, 6, 6, 3, 7, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 7, 34, 6, 7, 6, 6, 187, 11, 26, 59, 33, 33, 72, 41, 32, 60, 28, 27, 53, 28, 53, 104, 62, 38, 65, 29, 28, 50, 21, 13, 26, 56, 31, 32, 70, 39, 27, 50, 24, 29, 55, 28, 56, 110, 66, 39, 69, 31, 31, 53, 108, 10, 26, 58, 32, 32, 72, 40, 28, 51, 24, 31, 62, 31, 52, 104, 62, 38, 68, 30, 29, 51, 22, 12, 26, 57, 32, 33, 71, 40, 27, 50, 23, 29, 56, 29, 27, 52, 27, 29, 63, 35, 39, 67, 30, 30, 51, 3, 115, 211, 28, 53, 20, 20, 25, 1, 12, 10, 11, 27, 15, 29, 43, 25, 21, 20, 53, 29, 210, 27, 52, 21, 21, 25, 9, 8, 10, 28, 16, 32, 44, 1, 24, 20, 20, 53, 254, 51, 209, 28, 52, 20, 20, 25, 8, 8, 10, 30, 18, 29, 42, 24, 21, 20, 52, 29, 212, 28, 53, 20, 21, 24, 9, 8, 9, 28, 16, 15, 27, 10, 11, 13, 1, 25, 20, 20, 53, 0, 1, 0, 136, 0, 149, 4, 75, 4, 85, 0, 8, 0, 0, 83, 1, 19, 37, 39, 55, 37, 19, 1, 136, 3, 29, 45, 254, 0, 49, 83, 2, 45, 42, 252, 100, 2, 5, 254, 144, 1, 5, 188, 20, 29, 186, 1, 20, 254, 144, 0, 1, 0, 75, 0, 137, 4, 29, 4, 74, 0, 8, 0, 0, 119, 1, 55, 1, 3, 5, 23, 7, 5, 75, 3, 171, 39, 252, 213, 45, 2, 24, 42, 75, 253, 192, 137, 1, 112, 226, 1, 111, 254, 253, 194, 17, 23, 188, 0, 2, 0, 78, 0, 35, 4, 134, 4, 236, 0, 8, 0, 12, 0, 0, 65, 55, 37, 55, 1, 7, 1, 55, 37, 1, 55, 33, 7, 1, 220, 83, 2, 45, 42, 252, 100, 39, 3, 29, 45, 254, 0, 1, 133, 40, 252, 188, 40, 3, 50, 26, 168, 248, 254, 181, 202, 254, 181, 235, 169, 253, 3, 227, 227, 0, 0, 2, 0, 72, 0, 34, 4, 85, 4, 234, 0, 8, 0, 12, 0, 0, 65, 7, 5, 7, 1, 55, 1, 7, 5, 19, 55, 33, 7, 3, 63, 75, 253, 192, 49, 3, 171, 39, 252, 213, 45, 2, 24, 119, 40, 252, 188, 40, 3, 67, 20, 170, 252, 1, 76, 203, 1, 74, 233, 174, 252, 207, 227, 227, 0, 1, 0, 184, 1, 118, 4, 2, 3, 37, 0, 5, 0, 0, 65, 19, 33, 7, 33, 3, 3, 183, 75, 252, 213, 31, 2, 105, 46, 1, 118, 1, 175, 171, 254, 252, 0, 1, 0, 82, 255, 131, 4, 124, 5, 176, 0, 3, 0, 0, 69, 1, 33, 1, 1, 88, 3, 36, 254, 249, 252, 221, 125, 6, 45, 249, 211, 0, 0, 1, 1, 129, 255, 131, 3, 116, 5, 176, 0, 3, 0, 0, 65, 19, 51, 3, 1, 129, 255, 244, 254, 5, 176, 249, 211, 6, 45, 0, 0, 1, 0, 217, 0, 229, 3, 227, 4, 206, 0, 3, 0, 0, 101, 1, 39, 1, 1, 87, 2, 140, 127, 253, 117, 229, 3, 160, 73, 252, 96, 0, 0, 5, 0, 122, 255, 234, 4, 90, 5, 199, 0, 25, 0, 51, 0, 77, 0, 103, 0, 107, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 19, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 5, 1, 39, 1, 133, 7, 4, 30, 32, 32, 95, 61, 64, 107, 41, 40, 50, 7, 7, 4, 28, 31, 32, 95, 62, 65, 108, 40, 41, 50, 172, 7, 3, 15, 13, 12, 38, 26, 26, 32, 8, 8, 5, 1, 8, 3, 15, 12, 13, 38, 25, 26, 31, 8, 9, 5, 243, 7, 5, 30, 33, 32, 95, 62, 64, 108, 40, 40, 50, 7, 7, 4, 29, 31, 32, 95, 62, 64, 108, 40, 41, 51, 172, 8, 3, 14, 13, 13, 38, 26, 25, 31, 9, 8, 5, 1, 8, 3, 13, 12, 12, 38, 27, 24, 32, 9, 9, 6, 254, 118, 2, 208, 128, 253, 48, 4, 171, 76, 60, 101, 37, 37, 43, 1, 2, 41, 37, 37, 104, 62, 77, 60, 102, 38, 37, 43, 2, 1, 41, 37, 38, 105, 141, 80, 22, 43, 17, 16, 20, 21, 17, 17, 42, 21, 79, 22, 43, 16, 17, 20, 21, 17, 16, 42, 253, 8, 77, 60, 101, 37, 38, 43, 1, 1, 40, 37, 37, 104, 63, 78, 60, 102, 37, 37, 43, 2, 1, 40, 37, 38, 105, 142, 81, 22, 43, 17, 16, 19, 21, 16, 17, 42, 21, 79, 24, 44, 16, 17, 19, 1, 22, 17, 16, 42, 38, 3, 255, 68, 252, 1, 0, 6, 0, 96, 255, 232, 4, 93, 5, 198, 0, 49, 0, 75, 0, 101, 0, 127, 0, 153, 0, 157, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 5, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 37, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 3, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 39, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 17, 1, 39, 1, 255, 3, 3, 26, 28, 28, 86, 58, 35, 62, 29, 13, 26, 13, 10, 23, 11, 28, 63, 34, 63, 102, 37, 37, 45, 6, 2, 3, 24, 27, 27, 85, 59, 37, 65, 30, 12, 24, 12, 10, 21, 11, 27, 64, 35, 63, 104, 37, 38, 45, 2, 15, 2, 10, 10, 10, 31, 24, 22, 26, 6, 6, 2, 1, 3, 2, 8, 9, 10, 32, 25, 22, 25, 6, 7, 3, 1, 254, 167, 2, 10, 10, 10, 32, 24, 22, 26, 6, 6, 2, 1, 3, 2, 9, 9, 10, 32, 25, 21, 25, 6, 7, 3, 90, 2, 10, 10, 9, 33, 24, 22, 26, 6, 6, 2, 1, 3, 2, 11, 9, 10, 32, 23, 23, 26, 6, 6, 2, 1, 169, 3, 3, 24, 27, 26, 84, 57, 61, 101, 37, 37, 45, 5, 3, 3, 26, 28, 28, 87, 60, 62, 98, 34, 35, 41, 3, 127, 83, 252, 129, 1, 34, 39, 54, 97, 37, 37, 44, 1, 1, 16, 15, 7, 18, 10, 11, 18, 7, 17, 15, 1, 1, 44, 39, 38, 104, 60, 39, 54, 99, 38, 38, 46, 1, 1, 18, 16, 7, 17, 9, 10, 18, 7, 18, 16, 1, 1, 46, 39, 40, 106, 59, 19, 43, 18, 18, 24, 24, 17, 18, 41, 16, 38, 20, 43, 18, 18, 22, 24, 17, 17, 40, 16, 39, 19, 43, 18, 18, 24, 24, 17, 18, 41, 16, 38, 20, 43, 18, 18, 22, 24, 17, 17, 40, 16, 3, 169, 19, 44, 19, 18, 24, 25, 18, 18, 41, 16, 36, 18, 43, 18, 18, 24, 23, 17, 17, 40, 17, 36, 37, 52, 97, 38, 38, 46, 1, 2, 44, 39, 39, 103, 59, 37, 55, 100, 39, 38, 46, 1, 1, 47, 40, 41, 105, 252, 253, 2, 82, 100, 253, 174, 0, 0, 1, 1, 102, 254, 102, 3, 53, 5, 176, 0, 3, 0, 0, 65, 1, 35, 1, 2, 17, 1, 36, 171, 254, 220, 254, 102, 7, 74, 248, 182, 0, 0, 2, 1, 66, 254, 242, 3, 100, 5, 176, 0, 3, 0, 7, 0, 0, 65, 51, 19, 35, 37, 19, 35, 3, 1, 66, 247, 138, 247, 1, 21, 131, 247, 131, 254, 242, 3, 27, 173, 2, 246, 253, 10, 0, 0, 1, 0, 141, 0, 0, 4, 116, 5, 176, 0, 11, 0, 0, 65, 55, 33, 19, 33, 3, 33, 7, 33, 3, 33, 19, 4, 79, 37, 254, 164, 59, 254, 240, 59, 254, 170, 37, 1, 87, 133, 1, 16, 133, 3, 82, 232, 1, 118, 254, 138, 232, 252, 174, 3, 82, 0, 1, 0, 30, 254, 96, 4, 136, 5, 176, 0, 19, 0, 0, 97, 55, 33, 19, 33, 55, 33, 19, 33, 3, 33, 7, 33, 3, 33, 7, 33, 3, 33, 19, 3, 223, 35, 254, 164, 99, 1, 91, 36, 254, 164, 59, 254, 240, 59, 254, 171, 36, 1, 86, 99, 254, 171, 35, 1, 85, 65, 1, 16, 66, 223, 2, 121, 226, 1, 118, 254, 138, 226, 253, 135, 223, 254, 96, 1, 160, 0, 3, 0, 66, 255, 234, 4, 94, 4, 80, 0, 51, 0, 75, 0, 108, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 3, 42, 111, 7, 22, 17, 17, 49, 34, 38, 46, 12, 12, 6, 2, 8, 4, 23, 20, 19, 58, 40, 34, 45, 13, 13, 9, 1, 115, 3, 28, 29, 29, 85, 55, 64, 100, 36, 36, 43, 6, 8, 3, 23, 28, 27, 87, 61, 58, 91, 33, 33, 41, 253, 132, 10, 86, 67, 66, 173, 99, 91, 140, 45, 45, 39, 10, 11, 84, 66, 67, 172, 99, 93, 140, 45, 46, 38, 81, 11, 52, 58, 57, 173, 111, 78, 145, 64, 63, 107, 40, 39, 50, 8, 7, 19, 24, 24, 77, 51, 51, 126, 74, 79, 145, 63, 64, 106, 40, 40, 50, 1, 186, 1, 30, 50, 18, 18, 18, 1, 1, 36, 27, 27, 65, 31, 92, 35, 68, 27, 27, 33, 20, 18, 18, 50, 31, 1, 56, 89, 31, 29, 33, 1, 1, 47, 40, 40, 107, 59, 90, 56, 103, 39, 40, 50, 1, 2, 32, 31, 30, 88, 148, 94, 173, 66, 66, 78, 3, 2, 80, 64, 65, 162, 85, 93, 175, 67, 67, 79, 3, 2, 81, 65, 65, 164, 85, 104, 197, 77, 78, 95, 3, 2, 42, 38, 38, 107, 64, 64, 144, 75, 69, 135, 61, 60, 104, 39, 38, 44, 2, 2, 41, 38, 38, 107, 63, 64, 144, 0, 4, 0, 69, 255, 233, 4, 95, 4, 80, 0, 32, 0, 56, 0, 76, 0, 91, 0, 0, 83, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 37, 51, 23, 51, 3, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 3, 51, 19, 55, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 76, 7, 18, 24, 24, 77, 51, 51, 127, 74, 79, 145, 64, 63, 106, 40, 39, 50, 8, 10, 51, 57, 57, 173, 111, 79, 145, 63, 64, 106, 40, 40, 50, 84, 10, 85, 67, 66, 173, 99, 92, 140, 45, 45, 39, 10, 11, 84, 66, 67, 173, 99, 92, 140, 45, 45, 39, 1, 67, 116, 74, 109, 95, 29, 54, 22, 21, 28, 2, 3, 34, 30, 30, 80, 43, 198, 100, 112, 55, 30, 100, 24, 42, 15, 15, 14, 5, 4, 25, 18, 18, 43, 21, 2, 22, 70, 135, 61, 61, 104, 38, 39, 45, 2, 2, 42, 38, 38, 107, 64, 63, 144, 75, 104, 197, 78, 77, 95, 3, 2, 41, 38, 39, 106, 64, 64, 143, 76, 94, 174, 66, 66, 78, 3, 2, 80, 64, 65, 163, 85, 93, 174, 67, 67, 78, 3, 2, 81, 65, 64, 163, 36, 252, 1, 28, 12, 29, 20, 19, 52, 34, 49, 70, 23, 22, 21, 1, 1, 253, 131, 1, 97, 184, 1, 1, 7, 10, 10, 35, 28, 24, 33, 11, 12, 11, 1, 0, 2, 0, 240, 3, 146, 4, 228, 5, 176, 0, 12, 0, 20, 0, 0, 65, 3, 51, 19, 35, 3, 3, 35, 3, 51, 19, 19, 55, 1, 55, 33, 7, 51, 3, 51, 19, 4, 71, 61, 124, 94, 145, 188, 50, 149, 95, 123, 63, 49, 70, 254, 217, 19, 254, 117, 19, 132, 75, 135, 75, 4, 230, 254, 172, 2, 30, 254, 145, 1, 111, 253, 226, 1, 100, 254, 156, 1, 1, 180, 105, 105, 254, 78, 1, 178, 0, 2, 1, 192, 3, 161, 3, 206, 5, 198, 0, 23, 0, 47, 0, 0, 65, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 195, 3, 32, 32, 31, 89, 53, 58, 101, 39, 38, 47, 3, 3, 31, 30, 30, 87, 53, 58, 103, 39, 40, 49, 139, 3, 23, 19, 19, 48, 27, 25, 39, 13, 12, 12, 3, 3, 22, 17, 18, 46, 27, 24, 40, 14, 14, 14, 4, 169, 52, 94, 36, 36, 44, 1, 1, 45, 39, 39, 103, 56, 50, 95, 37, 37, 46, 1, 1, 46, 39, 40, 103, 54, 26, 48, 19, 19, 23, 21, 17, 18, 44, 23, 26, 46, 18, 18, 22, 19, 16, 16, 43, 0, 1, 0, 158, 1, 171, 4, 125, 5, 176, 0, 14, 0, 0, 65, 1, 23, 1, 19, 55, 3, 37, 39, 5, 19, 35, 3, 37, 7, 2, 10, 254, 195, 163, 1, 4, 146, 185, 213, 1, 147, 32, 254, 132, 105, 214, 33, 254, 169, 94, 3, 126, 254, 190, 130, 1, 101, 254, 140, 122, 1, 72, 91, 216, 159, 1, 175, 254, 76, 168, 198, 0, 0, 2, 0, 6, 0, 0, 4, 176, 5, 176, 0, 27, 0, 31, 0, 0, 65, 3, 51, 19, 51, 55, 35, 19, 51, 55, 35, 19, 35, 3, 35, 19, 35, 3, 35, 7, 51, 3, 35, 7, 51, 3, 51, 19, 55, 19, 51, 3, 2, 82, 143, 181, 142, 242, 30, 214, 101, 237, 30, 209, 146, 181, 145, 188, 144, 179, 146, 254, 30, 226, 101, 247, 30, 219, 142, 180, 143, 57, 101, 188, 100, 1, 154, 254, 102, 1, 154, 169, 1, 34, 171, 1, 160, 254, 96, 1, 160, 254, 96, 171, 254, 222, 169, 254, 102, 1, 154, 169, 1, 34, 254, 222, 0, 3, 0, 25, 255, 234, 4, 150, 5, 201, 0, 39, 0, 53, 0, 69, 0, 0, 83, 6, 22, 23, 22, 54, 55, 23, 33, 39, 54, 54, 55, 35, 6, 6, 7, 3, 55, 54, 54, 55, 54, 38, 39, 38, 6, 7, 6, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 5, 38, 38, 55, 54, 54, 55, 54, 54, 55, 55, 19, 6, 6, 19, 54, 54, 23, 22, 22, 7, 6, 6, 7, 7, 38, 38, 39, 38, 38, 37, 12, 220, 169, 95, 169, 80, 47, 1, 37, 138, 98, 104, 12, 231, 10, 55, 45, 183, 101, 86, 147, 6, 8, 165, 134, 174, 230, 14, 4, 9, 10, 10, 28, 16, 43, 46, 86, 35, 43, 55, 1, 142, 75, 58, 8, 4, 23, 17, 17, 43, 24, 11, 192, 49, 102, 23, 8, 83, 69, 49, 27, 2, 4, 54, 39, 102, 7, 13, 5, 8, 6, 1, 108, 173, 209, 2, 2, 55, 48, 81, 238, 96, 238, 136, 76, 133, 63, 1, 53, 73, 60, 156, 114, 132, 193, 4, 4, 218, 170, 43, 82, 40, 40, 79, 39, 27, 30, 68, 40, 50, 118, 234, 2, 109, 65, 31, 60, 27, 27, 48, 19, 7, 254, 171, 23, 33, 3, 125, 59, 102, 2, 2, 81, 38, 51, 69, 29, 69, 18, 36, 18, 26, 54, 0, 2, 0, 41, 255, 247, 4, 170, 5, 164, 0, 109, 0, 137, 0, 0, 65, 54, 2, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 20, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 23, 22, 22, 23, 22, 22, 51, 54, 54, 55, 54, 54, 55, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 5, 54, 54, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 4, 150, 20, 60, 95, 48, 129, 84, 102, 179, 76, 76, 123, 46, 47, 61, 14, 13, 16, 15, 66, 53, 52, 148, 98, 70, 142, 58, 22, 58, 124, 63, 74, 103, 33, 34, 35, 6, 6, 8, 10, 11, 45, 34, 34, 90, 57, 57, 138, 82, 68, 95, 31, 63, 13, 14, 3, 9, 8, 8, 24, 18, 18, 49, 33, 18, 16, 2, 2, 3, 2, 122, 44, 100, 60, 61, 103, 42, 42, 65, 24, 25, 33, 9, 7, 5, 7, 6, 22, 19, 21, 64, 45, 28, 49, 20, 20, 36, 16, 18, 75, 51, 61, 97, 38, 37, 54, 19, 19, 23, 253, 108, 5, 18, 13, 14, 40, 27, 25, 63, 39, 6, 13, 7, 122, 11, 22, 13, 13, 28, 16, 13, 20, 5, 15, 7, 4, 2, 7, 3, 62, 144, 1, 26, 88, 44, 52, 2, 2, 61, 55, 56, 151, 86, 86, 185, 90, 84, 165, 75, 76, 129, 47, 48, 56, 1, 2, 34, 39, 138, 25, 29, 1, 1, 46, 39, 39, 104, 58, 58, 121, 58, 69, 146, 70, 69, 123, 46, 45, 50, 2, 2, 41, 34, 70, 219, 107, 20, 71, 41, 41, 84, 34, 34, 42, 2, 1, 16, 12, 11, 28, 14, 2, 16, 40, 37, 1, 1, 37, 33, 33, 90, 51, 51, 109, 52, 41, 102, 49, 36, 65, 24, 28, 32, 1, 16, 15, 15, 32, 18, 48, 50, 2, 1, 51, 43, 42, 112, 59, 58, 115, 99, 31, 68, 33, 35, 65, 25, 22, 26, 1, 1, 2, 254, 46, 11, 21, 8, 9, 11, 1, 1, 12, 8, 24, 63, 39, 24, 42, 0, 0, 2, 255, 218, 254, 52, 4, 178, 5, 197, 0, 112, 0, 148, 0, 0, 65, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 55, 33, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 1, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 22, 22, 4, 88, 5, 28, 28, 13, 33, 19, 30, 72, 38, 35, 75, 37, 37, 90, 37, 38, 45, 9, 7, 54, 37, 36, 86, 41, 47, 75, 25, 25, 25, 2, 1, 15, 4, 64, 60, 60, 169, 101, 62, 126, 59, 60, 105, 40, 41, 52, 5, 4, 12, 17, 11, 29, 19, 38, 66, 25, 32, 41, 4, 7, 66, 58, 25, 57, 32, 40, 87, 44, 22, 55, 29, 29, 53, 20, 19, 19, 5, 8, 53, 37, 37, 86, 39, 49, 82, 29, 30, 32, 3, 254, 237, 3, 74, 65, 65, 177, 101, 124, 246, 80, 40, 51, 5, 4, 15, 22, 9, 25, 16, 35, 60, 24, 36, 45, 253, 179, 21, 41, 21, 36, 89, 38, 38, 46, 9, 5, 23, 17, 15, 37, 22, 12, 23, 12, 21, 45, 22, 38, 90, 36, 36, 41, 9, 5, 20, 16, 13, 37, 23, 13, 26, 1, 227, 64, 103, 41, 19, 35, 16, 25, 41, 17, 15, 27, 11, 11, 26, 21, 21, 64, 51, 46, 62, 19, 19, 15, 1, 1, 27, 26, 25, 76, 48, 1, 106, 160, 54, 53, 54, 2, 1, 18, 20, 20, 62, 43, 44, 112, 70, 49, 92, 41, 25, 46, 22, 21, 50, 29, 37, 93, 56, 95, 134, 48, 21, 35, 15, 20, 32, 14, 7, 16, 11, 11, 28, 19, 19, 49, 31, 45, 60, 17, 18, 14, 1, 22, 23, 23, 73, 53, 110, 157, 51, 52, 50, 1, 2, 73, 86, 43, 112, 70, 54, 101, 45, 19, 38, 17, 19, 44, 26, 38, 98, 1, 11, 7, 13, 7, 13, 28, 24, 24, 68, 49, 29, 47, 20, 18, 29, 13, 5, 8, 4, 7, 14, 7, 13, 30, 21, 23, 68, 52, 28, 48, 20, 18, 30, 12, 5, 9, 0, 0, 1, 1, 12, 0, 0, 4, 102, 5, 177, 0, 16, 0, 0, 97, 51, 19, 37, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 23, 2, 151, 211, 252, 254, 207, 108, 190, 72, 73, 91, 10, 9, 50, 54, 54, 161, 101, 65, 5, 176, 1, 66, 61, 62, 176, 110, 101, 168, 60, 61, 68, 3, 1, 0, 0, 1, 0, 215, 2, 175, 4, 6, 5, 176, 0, 8, 0, 0, 83, 51, 19, 55, 23, 19, 51, 3, 35, 215, 230, 240, 39, 4, 95, 207, 175, 196, 2, 175, 1, 187, 92, 69, 254, 46, 3, 1, 0, 1, 0, 8, 1, 120, 4, 104, 3, 58, 0, 49, 0, 0, 65, 39, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 4, 104, 181, 5, 25, 19, 19, 51, 33, 25, 46, 21, 21, 38, 17, 22, 45, 24, 43, 98, 56, 78, 119, 41, 41, 46, 6, 172, 6, 27, 20, 20, 53, 33, 24, 47, 22, 22, 39, 17, 31, 64, 35, 34, 77, 44, 79, 119, 41, 41, 47, 2, 241, 18, 29, 58, 24, 24, 31, 14, 13, 12, 31, 16, 20, 37, 15, 28, 33, 1, 1, 62, 52, 52, 133, 70, 21, 28, 58, 23, 23, 30, 15, 12, 12, 31, 16, 29, 49, 18, 18, 21, 1, 65, 53, 53, 136, 0, 255, 255, 255, 174, 0, 0, 4, 173, 7, 31, 6, 38, 0, 2, 0, 0, 0, 7, 1, 91, 0, 201, 1, 89, 255, 255, 255, 174, 0, 0, 4, 130, 7, 66, 6, 38, 0, 2, 0, 0, 0, 7, 1, 95, 0, 82, 1, 159, 255, 255, 255, 174, 0, 0, 4, 132, 7, 73, 6, 38, 0, 2, 0, 0, 0, 7, 1, 92, 0, 190, 1, 93, 255, 255, 255, 174, 0, 0, 4, 141, 7, 48, 6, 38, 0, 2, 0, 0, 0, 7, 1, 97, 0, 58, 1, 93, 255, 255, 255, 174, 0, 0, 4, 60, 7, 34, 6, 38, 0, 2, 0, 0, 0, 7, 1, 90, 255, 184, 1, 92, 255, 255, 255, 174, 0, 0, 4, 149, 6, 242, 6, 38, 0, 2, 0, 0, 0, 7, 1, 94, 0, 65, 1, 66, 0, 2, 255, 174, 254, 88, 4, 60, 5, 176, 0, 36, 0, 39, 0, 0, 69, 54, 54, 55, 54, 54, 55, 55, 51, 3, 35, 1, 33, 19, 33, 19, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 1, 19, 19, 3, 76, 3, 34, 26, 25, 61, 29, 10, 52, 202, 249, 253, 53, 1, 41, 136, 1, 167, 27, 33, 60, 23, 23, 28, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 254, 130, 240, 51, 184, 35, 56, 22, 22, 33, 13, 3, 5, 176, 250, 80, 1, 48, 254, 231, 21, 52, 30, 31, 72, 41, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 2, 242, 2, 21, 253, 235, 0, 255, 255, 255, 174, 0, 0, 4, 60, 7, 137, 6, 38, 0, 2, 0, 0, 0, 7, 1, 98, 0, 104, 1, 245, 255, 255, 255, 174, 0, 0, 4, 229, 8, 86, 6, 38, 0, 2, 0, 0, 0, 7, 2, 107, 0, 57, 1, 160, 255, 255, 255, 174, 0, 0, 4, 150, 7, 99, 6, 38, 0, 2, 0, 0, 0, 7, 1, 93, 0, 209, 1, 94, 255, 255, 255, 193, 0, 0, 5, 10, 7, 31, 6, 38, 0, 72, 0, 0, 0, 7, 1, 91, 1, 38, 1, 89, 255, 255, 0, 74, 255, 232, 4, 221, 7, 30, 6, 38, 0, 4, 0, 0, 0, 7, 1, 91, 0, 249, 1, 88, 255, 255, 0, 74, 255, 232, 4, 226, 7, 75, 6, 38, 0, 4, 0, 0, 0, 7, 1, 100, 0, 108, 1, 92, 255, 255, 0, 74, 254, 55, 4, 156, 5, 199, 6, 38, 0, 4, 0, 0, 0, 6, 1, 102, 51, 5, 255, 255, 0, 74, 255, 232, 4, 180, 7, 72, 6, 38, 0, 4, 0, 0, 0, 7, 1, 92, 0, 238, 1, 92, 255, 255, 0, 17, 255, 255, 4, 124, 7, 67, 6, 38, 0, 5, 0, 0, 0, 7, 1, 100, 255, 223, 1, 84, 0, 2, 255, 222, 255, 255, 4, 137, 5, 176, 0, 22, 0, 45, 0, 0, 115, 33, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 3, 35, 7, 51, 33, 55, 35, 19, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 35, 39, 19, 32, 1, 138, 145, 243, 92, 91, 118, 20, 17, 9, 7, 15, 20, 84, 60, 63, 170, 106, 254, 160, 110, 176, 32, 177, 1, 240, 32, 221, 71, 104, 59, 86, 30, 29, 35, 8, 7, 1, 6, 17, 13, 63, 51, 51, 144, 95, 91, 72, 1, 106, 91, 90, 244, 137, 120, 70, 136, 61, 83, 145, 51, 55, 65, 2, 1, 253, 135, 180, 180, 1, 149, 1, 3, 39, 32, 33, 85, 48, 48, 101, 48, 123, 85, 160, 61, 62, 75, 2, 1, 161, 0, 255, 255, 0, 38, 0, 0, 4, 217, 7, 22, 6, 38, 0, 6, 0, 0, 0, 7, 1, 91, 0, 208, 1, 80, 255, 255, 0, 38, 0, 0, 4, 217, 7, 57, 6, 38, 0, 6, 0, 0, 0, 7, 1, 95, 0, 89, 1, 150, 255, 255, 0, 38, 0, 0, 4, 217, 7, 67, 6, 38, 0, 6, 0, 0, 0, 7, 1, 100, 0, 67, 1, 84, 255, 255, 0, 38, 0, 0, 4, 217, 7, 64, 6, 38, 0, 6, 0, 0, 0, 7, 1, 92, 0, 197, 1, 84, 255, 255, 0, 38, 0, 0, 4, 217, 7, 39, 6, 38, 0, 6, 0, 0, 0, 7, 1, 97, 0, 65, 1, 84, 255, 255, 0, 38, 0, 0, 4, 217, 7, 70, 6, 38, 0, 6, 0, 0, 0, 7, 1, 96, 0, 79, 1, 100, 255, 255, 0, 38, 0, 0, 4, 217, 7, 25, 6, 38, 0, 6, 0, 0, 0, 7, 1, 90, 255, 191, 1, 83, 255, 255, 0, 38, 0, 0, 4, 217, 6, 233, 6, 38, 0, 6, 0, 0, 0, 7, 1, 94, 0, 72, 1, 57, 0, 1, 0, 39, 254, 74, 4, 188, 5, 176, 0, 28, 0, 0, 65, 33, 3, 3, 33, 3, 33, 19, 19, 7, 6, 6, 7, 6, 6, 7, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 4, 188, 254, 238, 156, 222, 254, 244, 253, 1, 18, 155, 223, 6, 6, 22, 19, 19, 54, 37, 26, 49, 24, 39, 36, 70, 37, 93, 146, 53, 53, 66, 12, 5, 176, 252, 132, 3, 124, 250, 80, 3, 123, 252, 133, 37, 32, 63, 24, 25, 31, 1, 8, 6, 221, 8, 10, 58, 54, 53, 147, 88, 0, 0, 1, 0, 38, 254, 88, 4, 217, 5, 176, 0, 41, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 55, 51, 55, 33, 19, 3, 236, 39, 253, 187, 64, 2, 163, 40, 252, 74, 253, 2, 65, 27, 48, 18, 18, 22, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 29, 10, 111, 40, 253, 89, 72, 2, 126, 222, 1, 111, 229, 250, 80, 20, 48, 28, 28, 64, 36, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 33, 13, 3, 227, 1, 155, 0, 0, 2, 255, 222, 255, 255, 4, 137, 5, 176, 0, 22, 0, 45, 0, 0, 115, 33, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 3, 35, 7, 51, 33, 55, 35, 19, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 35, 39, 19, 32, 1, 138, 145, 243, 92, 91, 118, 20, 17, 9, 7, 15, 20, 84, 60, 63, 170, 106, 254, 160, 110, 176, 32, 177, 1, 240, 32, 221, 71, 104, 59, 86, 30, 29, 35, 8, 7, 1, 6, 17, 13, 63, 51, 51, 144, 95, 91, 72, 1, 106, 91, 90, 244, 137, 120, 70, 136, 61, 83, 145, 51, 55, 65, 2, 1, 253, 135, 180, 180, 1, 149, 1, 3, 39, 32, 33, 85, 48, 48, 101, 48, 123, 85, 160, 61, 62, 75, 2, 1, 161, 0, 255, 255, 0, 82, 255, 234, 4, 151, 7, 65, 6, 38, 0, 8, 0, 0, 0, 7, 1, 95, 0, 102, 1, 158, 255, 255, 0, 82, 255, 234, 4, 152, 7, 72, 6, 38, 0, 8, 0, 0, 0, 7, 1, 92, 0, 210, 1, 92, 255, 255, 0, 82, 254, 21, 4, 151, 5, 197, 6, 38, 0, 8, 0, 0, 0, 7, 1, 104, 0, 162, 254, 190, 0, 2, 255, 222, 0, 0, 5, 31, 5, 176, 0, 19, 0, 23, 0, 0, 65, 55, 33, 7, 33, 55, 33, 7, 35, 7, 51, 3, 33, 19, 33, 3, 33, 19, 51, 55, 1, 33, 55, 33, 4, 94, 42, 254, 241, 42, 254, 114, 42, 254, 239, 42, 47, 30, 48, 181, 1, 16, 110, 1, 142, 110, 1, 15, 182, 192, 30, 253, 242, 254, 114, 33, 1, 142, 4, 194, 238, 238, 238, 238, 171, 251, 233, 2, 119, 253, 137, 4, 23, 171, 254, 153, 188, 0, 255, 255, 0, 15, 0, 0, 4, 185, 7, 64, 6, 38, 0, 9, 0, 0, 0, 7, 1, 92, 0, 162, 1, 84, 255, 255, 0, 82, 0, 0, 4, 141, 7, 31, 6, 38, 0, 10, 0, 0, 0, 7, 1, 91, 0, 169, 1, 89, 255, 255, 0, 82, 0, 0, 4, 130, 7, 66, 6, 38, 0, 10, 0, 0, 0, 7, 1, 95, 0, 50, 1, 159, 255, 255, 0, 82, 0, 0, 4, 130, 7, 73, 6, 38, 0, 10, 0, 0, 0, 7, 1, 92, 0, 158, 1, 93, 255, 255, 0, 82, 0, 0, 4, 130, 7, 48, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 0, 26, 1, 93, 255, 255, 0, 82, 0, 0, 4, 130, 7, 79, 6, 38, 0, 10, 0, 0, 0, 7, 1, 96, 0, 40, 1, 109, 255, 255, 0, 82, 0, 0, 4, 130, 7, 34, 6, 38, 0, 10, 0, 0, 0, 7, 1, 90, 255, 152, 1, 92, 255, 255, 0, 82, 0, 0, 4, 130, 6, 242, 6, 38, 0, 10, 0, 0, 0, 7, 1, 94, 0, 33, 1, 66, 0, 1, 0, 82, 254, 88, 4, 130, 5, 176, 0, 41, 0, 0, 65, 7, 33, 3, 33, 7, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 39, 51, 55, 33, 19, 33, 55, 1, 79, 40, 1, 13, 174, 254, 244, 40, 1, 204, 27, 48, 18, 18, 22, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 29, 7, 111, 40, 254, 236, 174, 1, 19, 40, 5, 176, 227, 252, 21, 226, 20, 48, 28, 28, 64, 36, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 33, 13, 3, 226, 3, 235, 227, 255, 255, 0, 82, 0, 0, 4, 130, 7, 99, 6, 38, 0, 10, 0, 0, 0, 7, 1, 93, 0, 177, 1, 94, 255, 255, 0, 71, 255, 234, 5, 200, 7, 61, 6, 38, 0, 11, 0, 0, 0, 7, 1, 92, 2, 2, 1, 81, 255, 255, 0, 20, 254, 11, 5, 82, 5, 176, 6, 38, 0, 12, 0, 0, 0, 7, 1, 104, 0, 110, 254, 180, 255, 255, 0, 41, 0, 0, 3, 249, 7, 2, 6, 38, 0, 13, 0, 0, 0, 7, 1, 91, 255, 125, 1, 60, 255, 255, 0, 41, 0, 0, 4, 125, 5, 177, 6, 38, 0, 13, 0, 0, 0, 7, 0, 109, 0, 229, 255, 153, 255, 255, 0, 41, 254, 34, 3, 249, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 1, 104, 0, 119, 254, 203, 255, 255, 0, 41, 0, 0, 3, 249, 5, 176, 6, 38, 0, 13, 0, 0, 0, 7, 1, 96, 0, 43, 253, 221, 0, 1, 0, 43, 0, 0, 4, 21, 5, 176, 0, 13, 0, 0, 65, 19, 33, 3, 7, 7, 55, 3, 33, 55, 33, 19, 55, 55, 1, 242, 99, 254, 236, 113, 129, 36, 130, 104, 3, 168, 40, 253, 106, 80, 237, 36, 3, 122, 2, 54, 253, 120, 37, 203, 37, 253, 163, 227, 1, 204, 68, 203, 255, 255, 0, 15, 0, 0, 4, 184, 7, 31, 6, 38, 0, 15, 0, 0, 0, 7, 1, 91, 0, 181, 1, 89, 255, 255, 0, 15, 0, 0, 4, 184, 7, 76, 6, 38, 0, 15, 0, 0, 0, 7, 1, 100, 0, 40, 1, 93, 255, 255, 0, 15, 254, 27, 4, 184, 5, 176, 6, 38, 0, 15, 0, 0, 0, 7, 1, 104, 0, 117, 254, 196, 255, 255, 0, 15, 0, 0, 4, 184, 7, 99, 6, 38, 0, 15, 0, 0, 0, 7, 1, 93, 0, 189, 1, 94, 255, 255, 0, 73, 255, 234, 4, 159, 7, 52, 6, 38, 0, 16, 0, 0, 0, 7, 1, 91, 0, 187, 1, 110, 255, 255, 0, 73, 255, 234, 4, 138, 7, 87, 6, 38, 0, 16, 0, 0, 0, 7, 1, 95, 0, 68, 1, 180, 255, 255, 0, 73, 255, 234, 4, 138, 7, 94, 6, 38, 0, 16, 0, 0, 0, 7, 1, 92, 0, 176, 1, 114, 255, 255, 0, 73, 255, 234, 4, 138, 7, 69, 6, 38, 0, 16, 0, 0, 0, 7, 1, 97, 0, 44, 1, 114, 255, 255, 0, 73, 255, 234, 4, 138, 7, 55, 6, 38, 0, 16, 0, 0, 0, 7, 1, 90, 255, 170, 1, 113, 0, 2, 0, 86, 255, 234, 5, 80, 5, 224, 0, 50, 0, 88, 0, 0, 65, 55, 54, 38, 39, 54, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 3, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 108, 33, 11, 11, 22, 51, 76, 27, 26, 31, 6, 186, 5, 12, 11, 11, 33, 25, 22, 52, 31, 47, 118, 73, 91, 154, 63, 63, 100, 36, 37, 49, 12, 33, 10, 6, 17, 17, 64, 50, 49, 135, 87, 92, 156, 65, 65, 103, 39, 38, 50, 232, 33, 7, 22, 17, 18, 50, 33, 34, 86, 54, 51, 65, 19, 19, 16, 1, 7, 5, 33, 6, 20, 16, 15, 46, 32, 31, 85, 54, 51, 68, 21, 21, 20, 3, 2, 6, 2, 110, 211, 81, 162, 75, 20, 68, 45, 45, 111, 64, 1, 29, 62, 28, 28, 46, 14, 32, 54, 22, 32, 38, 2, 2, 49, 44, 45, 124, 72, 72, 159, 80, 212, 75, 152, 70, 71, 123, 46, 47, 55, 2, 2, 48, 44, 44, 123, 72, 72, 160, 1, 39, 215, 43, 96, 46, 47, 84, 31, 31, 35, 2, 2, 43, 34, 34, 86, 45, 45, 86, 35, 215, 43, 95, 46, 46, 83, 32, 31, 35, 2, 2, 42, 33, 33, 84, 44, 45, 88, 0, 255, 255, 0, 73, 255, 234, 5, 96, 7, 96, 6, 38, 0, 16, 0, 0, 0, 7, 1, 99, 0, 184, 1, 114, 255, 255, 0, 73, 255, 234, 4, 138, 7, 7, 6, 38, 0, 16, 0, 0, 0, 7, 1, 94, 0, 51, 1, 87, 0, 3, 255, 174, 255, 161, 4, 252, 5, 238, 0, 46, 0, 69, 0, 86, 0, 0, 65, 55, 54, 52, 39, 38, 38, 39, 19, 35, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 6, 21, 20, 22, 23, 3, 51, 55, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 1, 54, 54, 55, 54, 54, 37, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 1, 22, 6, 4, 100, 33, 7, 8, 8, 33, 25, 186, 194, 95, 23, 53, 29, 34, 78, 44, 91, 154, 63, 63, 100, 36, 37, 49, 12, 33, 4, 4, 29, 30, 221, 193, 125, 50, 131, 86, 92, 156, 65, 65, 103, 39, 38, 50, 253, 23, 33, 6, 20, 16, 15, 46, 32, 31, 84, 55, 24, 41, 17, 15, 25, 10, 254, 31, 1, 2, 1, 2, 3, 2, 3, 33, 7, 22, 17, 18, 50, 33, 34, 86, 54, 51, 65, 20, 1, 243, 1, 6, 2, 110, 211, 56, 114, 55, 55, 103, 45, 1, 1, 132, 19, 30, 12, 13, 15, 1, 2, 49, 44, 45, 124, 72, 72, 159, 80, 212, 29, 60, 30, 76, 149, 65, 254, 205, 173, 45, 51, 2, 2, 48, 44, 44, 123, 72, 72, 160, 79, 215, 43, 95, 46, 46, 83, 32, 31, 35, 2, 1, 11, 9, 8, 23, 14, 253, 101, 13, 26, 13, 15, 29, 229, 215, 43, 96, 46, 47, 84, 31, 31, 35, 2, 2, 43, 35, 2, 179, 39, 74, 255, 255, 255, 174, 255, 161, 4, 252, 7, 93, 6, 38, 0, 219, 0, 0, 0, 7, 1, 91, 0, 194, 1, 151, 255, 255, 0, 73, 255, 234, 4, 138, 7, 120, 6, 38, 0, 16, 0, 0, 0, 7, 1, 93, 0, 195, 1, 115, 255, 255, 0, 22, 0, 0, 4, 173, 7, 19, 6, 38, 0, 19, 0, 0, 0, 7, 1, 91, 0, 161, 1, 77, 255, 255, 0, 22, 0, 0, 4, 173, 7, 64, 6, 38, 0, 19, 0, 0, 0, 7, 1, 100, 0, 20, 1, 81, 255, 255, 0, 22, 254, 34, 4, 173, 5, 176, 6, 38, 0, 19, 0, 0, 0, 7, 1, 104, 0, 108, 254, 203, 255, 255, 0, 57, 255, 235, 4, 177, 7, 52, 6, 38, 0, 20, 0, 0, 0, 7, 1, 91, 0, 200, 1, 110, 255, 255, 0, 57, 255, 235, 4, 177, 7, 97, 6, 38, 0, 20, 0, 0, 0, 7, 1, 100, 0, 59, 1, 114, 255, 255, 0, 57, 254, 41, 4, 177, 5, 198, 6, 38, 0, 20, 0, 0, 0, 6, 1, 102, 92, 247, 255, 255, 0, 57, 255, 235, 4, 177, 7, 94, 6, 38, 0, 20, 0, 0, 0, 7, 1, 92, 0, 189, 1, 114, 0, 1, 0, 134, 0, 0, 5, 35, 5, 176, 0, 15, 0, 0, 65, 55, 35, 19, 33, 55, 33, 7, 33, 3, 35, 7, 51, 3, 33, 19, 3, 216, 32, 228, 51, 1, 179, 41, 251, 139, 40, 1, 174, 51, 221, 32, 222, 131, 1, 19, 131, 2, 245, 180, 1, 34, 229, 229, 254, 222, 180, 253, 11, 2, 245, 0, 255, 255, 0, 134, 0, 0, 5, 35, 7, 73, 6, 38, 0, 21, 0, 0, 0, 7, 1, 100, 0, 41, 1, 90, 255, 255, 0, 94, 255, 233, 4, 193, 7, 28, 6, 38, 0, 22, 0, 0, 0, 7, 1, 91, 0, 191, 1, 86, 255, 255, 0, 94, 255, 233, 4, 193, 7, 63, 6, 38, 0, 22, 0, 0, 0, 7, 1, 95, 0, 72, 1, 156, 255, 255, 0, 94, 255, 233, 4, 193, 7, 70, 6, 38, 0, 22, 0, 0, 0, 7, 1, 92, 0, 180, 1, 90, 255, 255, 0, 94, 255, 233, 4, 193, 7, 45, 6, 38, 0, 22, 0, 0, 0, 7, 1, 97, 0, 48, 1, 90, 255, 255, 0, 94, 255, 233, 4, 193, 7, 31, 6, 38, 0, 22, 0, 0, 0, 7, 1, 90, 255, 174, 1, 89, 0, 1, 0, 101, 255, 233, 6, 33, 5, 230, 0, 43, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 54, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 4, 200, 254, 240, 165, 8, 36, 30, 31, 90, 62, 56, 61, 13, 14, 1, 5, 162, 254, 238, 165, 12, 38, 49, 49, 159, 110, 119, 191, 70, 70, 88, 17, 103, 97, 144, 50, 50, 56, 8, 191, 7, 21, 20, 21, 66, 52, 5, 176, 252, 58, 52, 104, 41, 41, 49, 3, 3, 57, 42, 42, 97, 43, 3, 198, 252, 58, 102, 184, 69, 70, 83, 2, 3, 75, 69, 68, 190, 113, 2, 97, 4, 56, 51, 51, 149, 98, 1, 51, 87, 32, 33, 41, 5, 255, 255, 0, 94, 255, 233, 5, 100, 7, 72, 6, 38, 0, 22, 0, 0, 0, 7, 1, 99, 0, 188, 1, 90, 255, 255, 0, 94, 255, 233, 4, 193, 6, 239, 6, 38, 0, 22, 0, 0, 0, 7, 1, 94, 0, 55, 1, 63, 0, 1, 0, 94, 254, 153, 4, 193, 5, 176, 0, 60, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 3, 6, 22, 23, 22, 22, 23, 48, 48, 49, 6, 6, 7, 6, 6, 21, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 4, 193, 254, 240, 165, 8, 36, 30, 31, 90, 62, 56, 61, 14, 13, 1, 5, 162, 254, 238, 165, 12, 33, 44, 44, 142, 98, 13, 20, 6, 5, 6, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 1, 14, 10, 11, 30, 16, 75, 120, 45, 45, 58, 13, 5, 176, 252, 58, 52, 104, 41, 41, 49, 3, 3, 57, 42, 42, 97, 43, 3, 198, 252, 58, 97, 176, 68, 68, 88, 10, 18, 38, 21, 15, 33, 17, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 20, 36, 16, 16, 28, 12, 26, 92, 63, 62, 153, 87, 255, 255, 0, 94, 255, 233, 4, 193, 7, 134, 6, 38, 0, 22, 0, 0, 0, 7, 1, 98, 0, 94, 1, 242, 255, 255, 0, 94, 255, 233, 4, 193, 7, 96, 6, 38, 0, 22, 0, 0, 0, 7, 1, 93, 0, 199, 1, 91, 255, 255, 0, 127, 0, 0, 5, 27, 7, 31, 6, 38, 0, 24, 0, 0, 0, 7, 1, 91, 0, 159, 1, 89, 255, 255, 0, 127, 0, 0, 5, 27, 7, 73, 6, 38, 0, 24, 0, 0, 0, 7, 1, 92, 0, 148, 1, 93, 255, 255, 0, 127, 0, 0, 5, 27, 7, 48, 6, 38, 0, 24, 0, 0, 0, 7, 1, 97, 0, 16, 1, 93, 255, 255, 0, 127, 0, 0, 5, 27, 7, 34, 6, 38, 0, 24, 0, 0, 0, 7, 1, 90, 255, 142, 1, 92, 255, 255, 0, 186, 0, 0, 5, 63, 7, 31, 6, 38, 0, 26, 0, 0, 0, 7, 1, 91, 0, 195, 1, 89, 255, 255, 0, 186, 0, 0, 5, 63, 7, 73, 6, 38, 0, 26, 0, 0, 0, 7, 1, 92, 0, 184, 1, 93, 255, 255, 0, 186, 0, 0, 5, 63, 7, 48, 6, 38, 0, 26, 0, 0, 0, 7, 1, 97, 0, 52, 1, 93, 255, 255, 0, 186, 0, 0, 5, 63, 7, 34, 6, 38, 0, 26, 0, 0, 0, 7, 1, 90, 255, 178, 1, 92, 255, 255, 255, 248, 0, 0, 4, 212, 7, 28, 6, 38, 0, 27, 0, 0, 0, 7, 1, 91, 0, 179, 1, 86, 255, 255, 255, 248, 0, 0, 4, 212, 7, 73, 6, 38, 0, 27, 0, 0, 0, 7, 1, 100, 0, 38, 1, 90, 255, 255, 255, 248, 0, 0, 4, 212, 7, 76, 6, 38, 0, 27, 0, 0, 0, 7, 1, 96, 0, 50, 1, 106, 255, 255, 0, 58, 255, 235, 4, 81, 5, 221, 6, 38, 0, 28, 0, 0, 0, 6, 1, 91, 109, 23, 255, 255, 0, 58, 255, 235, 4, 39, 6, 0, 6, 38, 0, 28, 0, 0, 0, 6, 1, 95, 247, 93, 255, 255, 0, 58, 255, 235, 4, 40, 6, 7, 6, 38, 0, 28, 0, 0, 0, 6, 1, 92, 98, 27, 255, 255, 0, 58, 255, 235, 4, 50, 5, 238, 6, 38, 0, 28, 0, 0, 0, 6, 1, 97, 223, 27, 255, 255, 0, 58, 255, 235, 4, 27, 5, 224, 6, 38, 0, 28, 0, 0, 0, 7, 1, 90, 255, 92, 0, 26, 255, 255, 0, 58, 255, 235, 4, 58, 5, 176, 6, 38, 0, 28, 0, 0, 0, 6, 1, 94, 230, 0, 0, 2, 0, 58, 254, 88, 4, 27, 4, 80, 0, 85, 0, 108, 0, 0, 101, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 55, 51, 55, 38, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 39, 34, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 6, 22, 39, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 23, 7, 6, 6, 7, 6, 6, 2, 182, 33, 61, 23, 23, 28, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 29, 9, 46, 1, 21, 9, 9, 75, 9, 57, 55, 56, 152, 85, 81, 165, 68, 68, 90, 6, 1, 15, 7, 29, 22, 23, 61, 36, 39, 62, 21, 20, 17, 6, 13, 156, 61, 125, 59, 59, 104, 40, 40, 49, 3, 3, 50, 46, 45, 123, 68, 50, 90, 41, 32, 59, 28, 1, 1, 229, 29, 49, 17, 17, 16, 4, 3, 14, 10, 13, 38, 22, 39, 92, 45, 123, 34, 23, 57, 32, 29, 66, 24, 21, 52, 31, 31, 72, 41, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 33, 13, 3, 18, 58, 123, 59, 1, 209, 93, 140, 48, 47, 50, 2, 1, 39, 42, 43, 131, 90, 2, 33, 51, 16, 18, 17, 1, 1, 23, 21, 22, 62, 39, 67, 2, 14, 17, 17, 55, 41, 41, 110, 72, 72, 116, 40, 41, 45, 1, 1, 20, 20, 15, 41, 26, 20, 38, 151, 16, 15, 15, 46, 31, 22, 38, 16, 21, 32, 12, 20, 18, 1, 187, 28, 44, 15, 14, 14, 0, 255, 255, 0, 58, 255, 235, 4, 27, 6, 71, 6, 38, 0, 28, 0, 0, 0, 7, 1, 98, 0, 12, 0, 179, 255, 255, 0, 58, 255, 235, 4, 138, 7, 20, 6, 38, 0, 28, 0, 0, 0, 6, 2, 107, 222, 94, 255, 255, 0, 58, 255, 235, 4, 58, 6, 33, 6, 38, 0, 28, 0, 0, 0, 6, 1, 93, 117, 28, 255, 255, 255, 245, 255, 235, 4, 158, 5, 222, 6, 38, 0, 73, 0, 0, 0, 7, 1, 91, 0, 168, 0, 24, 255, 255, 0, 96, 255, 233, 4, 112, 5, 221, 6, 38, 0, 30, 0, 0, 0, 7, 1, 91, 0, 140, 0, 23, 255, 255, 0, 96, 255, 233, 4, 118, 6, 10, 6, 38, 0, 30, 0, 0, 0, 6, 1, 100, 0, 27, 255, 255, 0, 96, 254, 55, 4, 49, 4, 81, 6, 38, 0, 30, 0, 0, 0, 6, 1, 102, 51, 5, 255, 255, 0, 96, 255, 233, 4, 71, 6, 7, 6, 38, 0, 30, 0, 0, 0, 7, 1, 92, 0, 129, 0, 27, 255, 255, 0, 17, 255, 234, 5, 238, 6, 24, 4, 38, 0, 31, 182, 255, 0, 7, 0, 109, 2, 86, 0, 0, 0, 2, 0, 76, 255, 235, 5, 56, 6, 0, 0, 43, 0, 72, 0, 0, 65, 55, 35, 55, 33, 7, 35, 7, 51, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 51, 19, 1, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 5, 24, 32, 164, 24, 254, 240, 26, 235, 32, 233, 44, 22, 49, 27, 33, 73, 41, 78, 128, 52, 52, 79, 28, 29, 36, 8, 3, 6, 5, 13, 13, 50, 39, 39, 108, 72, 50, 89, 39, 30, 54, 24, 14, 243, 211, 252, 237, 2, 7, 34, 32, 32, 96, 68, 31, 53, 20, 20, 31, 10, 78, 22, 53, 31, 22, 53, 29, 32, 50, 16, 24, 22, 5, 5, 2, 4, 196, 180, 136, 136, 180, 237, 27, 41, 15, 17, 18, 1, 2, 44, 39, 40, 109, 63, 63, 136, 67, 22, 59, 125, 59, 60, 106, 40, 41, 49, 2, 1, 23, 22, 17, 45, 27, 113, 4, 196, 253, 69, 21, 57, 120, 49, 49, 62, 1, 1, 16, 15, 15, 42, 28, 254, 72, 30, 48, 15, 11, 12, 1, 1, 20, 18, 28, 50, 38, 40, 84, 0, 255, 255, 0, 85, 255, 235, 4, 86, 5, 222, 6, 38, 0, 32, 0, 0, 0, 6, 1, 91, 114, 24, 255, 255, 0, 85, 255, 235, 4, 76, 6, 1, 6, 38, 0, 32, 0, 0, 0, 6, 1, 95, 252, 94, 255, 255, 0, 85, 255, 235, 4, 92, 6, 11, 6, 38, 0, 32, 0, 0, 0, 6, 1, 100, 230, 28, 255, 255, 0, 85, 255, 235, 4, 76, 6, 8, 6, 38, 0, 32, 0, 0, 0, 6, 1, 92, 103, 28, 255, 255, 0, 85, 255, 235, 4, 76, 5, 239, 6, 38, 0, 32, 0, 0, 0, 6, 1, 97, 228, 28, 255, 255, 0, 85, 255, 235, 4, 76, 6, 14, 6, 38, 0, 32, 0, 0, 0, 6, 1, 96, 242, 44, 255, 255, 0, 85, 255, 235, 4, 76, 5, 225, 6, 38, 0, 32, 0, 0, 0, 7, 1, 90, 255, 97, 0, 27, 255, 255, 0, 85, 255, 235, 4, 76, 5, 177, 6, 38, 0, 32, 0, 0, 0, 6, 1, 94, 235, 1, 0, 1, 0, 40, 254, 73, 4, 40, 4, 79, 0, 49, 0, 0, 115, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 23, 50, 54, 55, 54, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 7, 40, 1, 15, 138, 20, 44, 23, 28, 61, 34, 47, 54, 13, 12, 1, 4, 114, 5, 22, 18, 18, 53, 37, 25, 50, 24, 39, 36, 71, 37, 93, 146, 53, 52, 65, 12, 113, 9, 16, 31, 31, 118, 93, 65, 113, 48, 26, 47, 21, 23, 250, 3, 17, 20, 32, 12, 13, 14, 1, 1, 37, 30, 30, 75, 39, 253, 65, 32, 62, 24, 24, 30, 8, 7, 223, 8, 10, 1, 58, 53, 53, 147, 88, 2, 191, 79, 156, 62, 62, 78, 2, 1, 41, 36, 20, 49, 28, 154, 1, 0, 0, 2, 0, 86, 254, 111, 4, 76, 4, 80, 0, 68, 0, 82, 0, 0, 101, 39, 6, 6, 39, 38, 38, 39, 38, 38, 39, 52, 52, 53, 53, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 48, 48, 49, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 1, 22, 22, 23, 22, 22, 7, 7, 33, 54, 54, 55, 54, 54, 3, 234, 123, 58, 151, 85, 54, 84, 28, 26, 29, 2, 2, 195, 18, 13, 37, 50, 51, 164, 113, 82, 149, 63, 56, 93, 36, 43, 55, 9, 4, 9, 46, 50, 50, 149, 94, 39, 51, 2, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 2, 25, 19, 19, 47, 25, 81, 143, 254, 222, 45, 69, 23, 22, 18, 7, 5, 254, 71, 19, 50, 34, 33, 86, 175, 151, 60, 65, 3, 1, 39, 33, 29, 76, 45, 5, 10, 5, 4, 118, 105, 190, 74, 73, 88, 3, 2, 42, 39, 34, 94, 54, 66, 153, 81, 41, 99, 174, 67, 68, 90, 15, 38, 93, 57, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 29, 49, 20, 19, 32, 13, 21, 85, 3, 3, 2, 33, 28, 28, 76, 44, 25, 44, 86, 34, 34, 40, 0, 255, 255, 0, 26, 254, 83, 4, 123, 6, 0, 6, 38, 0, 34, 0, 0, 0, 6, 1, 95, 250, 93, 255, 255, 0, 26, 254, 83, 4, 123, 6, 7, 6, 38, 0, 34, 0, 0, 0, 6, 1, 92, 101, 27, 255, 255, 0, 26, 254, 83, 4, 123, 6, 180, 6, 38, 0, 34, 0, 0, 0, 7, 2, 78, 0, 37, 0, 153, 0, 1, 0, 47, 0, 0, 4, 83, 6, 0, 0, 39, 0, 0, 65, 55, 35, 55, 33, 7, 35, 7, 51, 3, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 33, 19, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 19, 3, 7, 32, 249, 27, 254, 241, 25, 155, 32, 156, 211, 1, 15, 138, 24, 52, 28, 26, 57, 32, 49, 64, 18, 18, 9, 5, 111, 1, 16, 109, 9, 23, 36, 37, 129, 96, 45, 82, 36, 44, 77, 32, 54, 4, 192, 180, 140, 140, 180, 251, 64, 3, 14, 23, 37, 12, 11, 11, 1, 2, 34, 29, 30, 77, 45, 253, 110, 2, 143, 85, 160, 63, 62, 76, 1, 20, 19, 22, 68, 42, 1, 29, 0, 255, 255, 0, 32, 0, 0, 4, 91, 7, 168, 6, 38, 0, 35, 0, 0, 0, 7, 1, 92, 0, 149, 1, 188, 255, 255, 0, 88, 0, 0, 4, 146, 5, 196, 6, 38, 1, 109, 0, 0, 0, 7, 1, 91, 0, 174, 255, 254, 255, 255, 0, 88, 0, 0, 4, 103, 5, 230, 6, 38, 1, 109, 0, 0, 0, 6, 1, 95, 55, 67, 255, 255, 0, 88, 0, 0, 4, 105, 5, 237, 6, 38, 1, 109, 0, 0, 0, 7, 1, 92, 0, 163, 0, 1, 255, 255, 0, 88, 0, 0, 4, 114, 5, 212, 6, 38, 1, 109, 0, 0, 0, 6, 1, 97, 31, 1, 255, 255, 0, 88, 0, 0, 3, 249, 5, 198, 6, 38, 1, 109, 0, 0, 0, 6, 1, 90, 157, 0, 255, 255, 0, 88, 0, 0, 4, 122, 5, 151, 6, 38, 1, 109, 0, 0, 0, 6, 1, 94, 38, 231, 0, 2, 0, 104, 254, 88, 3, 233, 5, 229, 0, 39, 0, 63, 0, 0, 65, 7, 33, 3, 33, 7, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 39, 33, 55, 33, 19, 3, 20, 22, 23, 22, 22, 55, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 7, 34, 6, 7, 6, 6, 1, 36, 40, 1, 43, 109, 254, 213, 39, 1, 23, 27, 48, 18, 18, 22, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 29, 7, 1, 74, 40, 254, 227, 149, 246, 25, 21, 21, 56, 32, 33, 58, 21, 21, 24, 25, 21, 21, 56, 32, 33, 57, 21, 22, 24, 4, 58, 227, 253, 139, 226, 20, 48, 28, 28, 64, 36, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 33, 13, 3, 226, 3, 88, 1, 16, 33, 54, 19, 19, 20, 1, 23, 21, 20, 56, 34, 33, 54, 19, 19, 20, 1, 23, 20, 21, 56, 0, 255, 255, 0, 88, 0, 0, 4, 123, 6, 7, 6, 38, 1, 109, 0, 0, 0, 7, 1, 93, 0, 182, 0, 2, 255, 255, 0, 51, 254, 73, 4, 167, 5, 223, 6, 38, 1, 113, 0, 0, 0, 7, 1, 92, 0, 225, 255, 243, 255, 255, 0, 35, 254, 12, 4, 175, 6, 0, 6, 38, 0, 38, 0, 0, 0, 7, 1, 104, 0, 89, 254, 181, 255, 255, 0, 88, 0, 0, 4, 214, 7, 101, 6, 38, 0, 39, 0, 0, 0, 7, 1, 91, 0, 242, 1, 159, 255, 255, 0, 13, 0, 0, 5, 11, 6, 5, 4, 38, 0, 39, 181, 0, 0, 7, 0, 109, 1, 115, 255, 237, 255, 255, 0, 88, 254, 35, 3, 249, 6, 0, 6, 38, 0, 39, 0, 0, 0, 7, 1, 104, 0, 169, 254, 204, 255, 255, 0, 13, 0, 0, 4, 99, 6, 0, 4, 38, 0, 39, 181, 0, 0, 7, 1, 96, 0, 241, 253, 217, 0, 1, 0, 102, 0, 0, 4, 139, 6, 0, 0, 17, 0, 0, 65, 7, 33, 3, 5, 7, 37, 3, 33, 7, 33, 55, 33, 19, 37, 55, 5, 19, 1, 113, 40, 1, 59, 71, 254, 185, 36, 1, 71, 81, 254, 198, 40, 3, 121, 40, 254, 211, 102, 1, 39, 36, 254, 217, 89, 6, 0, 227, 254, 104, 138, 207, 138, 254, 44, 226, 226, 2, 80, 125, 207, 125, 1, 255, 255, 255, 0, 32, 0, 0, 4, 92, 5, 221, 6, 38, 0, 41, 0, 0, 0, 6, 1, 91, 120, 23, 255, 255, 0, 32, 0, 0, 4, 98, 6, 10, 6, 38, 0, 41, 0, 0, 0, 6, 1, 100, 236, 27, 255, 255, 0, 32, 254, 34, 4, 67, 4, 79, 6, 38, 0, 41, 0, 0, 0, 7, 1, 104, 0, 116, 254, 203, 255, 255, 0, 32, 0, 0, 4, 69, 6, 33, 6, 38, 0, 41, 0, 0, 0, 7, 1, 93, 0, 128, 0, 28, 255, 255, 0, 81, 255, 232, 4, 105, 5, 221, 6, 38, 0, 42, 0, 0, 0, 7, 1, 91, 0, 133, 0, 23, 255, 255, 0, 81, 255, 232, 4, 66, 6, 0, 6, 38, 0, 42, 0, 0, 0, 6, 1, 95, 14, 93, 255, 255, 0, 81, 255, 232, 4, 66, 6, 7, 6, 38, 0, 42, 0, 0, 0, 6, 1, 92, 122, 27, 255, 255, 0, 81, 255, 232, 4, 74, 5, 238, 6, 38, 0, 42, 0, 0, 0, 6, 1, 97, 247, 27, 255, 255, 0, 81, 255, 232, 4, 66, 5, 224, 6, 38, 0, 42, 0, 0, 0, 7, 1, 90, 255, 116, 0, 26, 0, 2, 0, 70, 255, 232, 4, 221, 4, 157, 0, 44, 0, 73, 0, 0, 65, 6, 6, 7, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 54, 54, 55, 54, 54, 55, 7, 6, 6, 3, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 5, 13, 35, 24, 53, 149, 100, 85, 150, 62, 51, 88, 33, 41, 52, 10, 2, 11, 41, 53, 22, 56, 33, 45, 113, 67, 121, 199, 73, 73, 91, 14, 3, 8, 18, 26, 50, 78, 26, 22, 26, 5, 182, 5, 17, 240, 2, 8, 37, 33, 34, 99, 68, 48, 65, 20, 28, 15, 8, 2, 7, 39, 34, 33, 99, 69, 43, 60, 20, 19, 21, 5, 4, 3, 4, 39, 27, 45, 15, 57, 67, 2, 2, 43, 40, 33, 92, 53, 65, 153, 81, 21, 107, 195, 74, 32, 54, 20, 29, 32, 1, 3, 87, 76, 76, 203, 114, 22, 78, 148, 65, 23, 72, 48, 40, 97, 56, 2, 30, 60, 253, 232, 21, 57, 119, 48, 49, 61, 2, 1, 38, 30, 47, 122, 85, 21, 58, 120, 49, 49, 60, 2, 2, 31, 25, 25, 65, 35, 36, 73, 0, 255, 255, 0, 81, 255, 232, 5, 42, 6, 9, 6, 38, 0, 42, 0, 0, 0, 7, 1, 99, 0, 130, 0, 27, 255, 255, 0, 81, 255, 232, 4, 82, 5, 176, 6, 38, 0, 42, 0, 0, 0, 6, 1, 94, 254, 0, 0, 3, 0, 70, 255, 115, 4, 91, 4, 191, 0, 37, 0, 54, 0, 71, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 7, 51, 55, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 55, 35, 7, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 1, 38, 38, 53, 52, 54, 37, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 1, 22, 22, 21, 20, 6, 91, 2, 7, 10, 16, 16, 56, 39, 149, 167, 100, 37, 85, 49, 121, 199, 73, 73, 91, 14, 3, 7, 9, 16, 15, 51, 36, 153, 166, 100, 40, 93, 53, 122, 199, 73, 73, 91, 255, 2, 7, 39, 34, 33, 99, 69, 22, 37, 16, 254, 165, 8, 7, 2, 1, 195, 2, 8, 37, 33, 34, 99, 68, 18, 31, 14, 1, 82, 6, 5, 3, 2, 32, 21, 65, 123, 55, 56, 96, 38, 231, 154, 15, 18, 1, 3, 87, 76, 76, 203, 114, 22, 64, 123, 55, 52, 93, 38, 236, 154, 19, 21, 1, 3, 88, 77, 77, 205, 135, 21, 58, 120, 49, 49, 60, 2, 10, 9, 253, 232, 28, 62, 31, 20, 40, 49, 21, 57, 119, 48, 49, 61, 2, 1, 6, 5, 2, 10, 25, 51, 25, 20, 41, 0, 255, 255, 0, 70, 255, 115, 4, 91, 5, 217, 6, 38, 1, 56, 0, 0, 0, 6, 1, 91, 91, 19, 255, 255, 0, 81, 255, 232, 4, 82, 6, 33, 6, 38, 0, 42, 0, 0, 0, 7, 1, 93, 0, 141, 0, 28, 255, 255, 0, 174, 0, 0, 4, 142, 5, 221, 6, 38, 0, 45, 0, 0, 0, 6, 1, 91, 94, 23, 255, 255, 0, 174, 0, 0, 4, 142, 6, 10, 6, 38, 0, 45, 0, 0, 0, 6, 1, 100, 210, 27, 255, 255, 0, 87, 254, 34, 4, 142, 4, 80, 6, 38, 0, 45, 0, 0, 0, 7, 1, 104, 255, 194, 254, 203, 255, 255, 0, 74, 255, 234, 4, 76, 5, 221, 6, 38, 0, 46, 0, 0, 0, 6, 1, 91, 93, 23, 255, 255, 0, 74, 255, 234, 4, 76, 6, 10, 6, 38, 0, 46, 0, 0, 0, 6, 1, 100, 209, 27, 255, 255, 0, 74, 254, 41, 4, 76, 4, 79, 6, 38, 0, 46, 0, 0, 0, 6, 1, 102, 30, 247, 255, 255, 0, 74, 255, 234, 4, 76, 6, 7, 6, 38, 0, 46, 0, 0, 0, 6, 1, 92, 82, 27, 0, 1, 0, 161, 255, 235, 4, 84, 5, 67, 0, 40, 0, 0, 65, 55, 35, 55, 33, 55, 33, 19, 33, 3, 35, 7, 51, 7, 35, 7, 51, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 3, 66, 32, 212, 26, 1, 136, 36, 254, 120, 46, 254, 241, 46, 240, 36, 240, 26, 190, 32, 192, 25, 9, 31, 41, 40, 131, 91, 40, 86, 43, 42, 81, 36, 9, 57, 114, 58, 47, 59, 15, 16, 7, 5, 21, 2, 27, 180, 158, 205, 1, 9, 254, 247, 205, 158, 180, 154, 86, 147, 54, 54, 63, 1, 1, 5, 7, 7, 26, 20, 193, 12, 18, 2, 1, 32, 27, 27, 72, 43, 128, 255, 255, 0, 149, 255, 234, 5, 89, 6, 187, 4, 38, 0, 47, 236, 0, 0, 7, 0, 109, 1, 193, 0, 163, 255, 255, 0, 113, 255, 233, 4, 127, 5, 200, 6, 38, 0, 48, 0, 0, 0, 7, 1, 91, 0, 131, 0, 2, 255, 255, 0, 113, 255, 233, 4, 127, 5, 235, 6, 38, 0, 48, 0, 0, 0, 6, 1, 95, 12, 72, 255, 255, 0, 113, 255, 233, 4, 127, 5, 242, 6, 38, 0, 48, 0, 0, 0, 6, 1, 92, 120, 6, 255, 255, 0, 113, 255, 233, 4, 127, 5, 217, 6, 38, 0, 48, 0, 0, 0, 6, 1, 97, 245, 6, 255, 255, 0, 113, 255, 233, 4, 127, 5, 203, 6, 38, 0, 48, 0, 0, 0, 7, 1, 90, 255, 114, 0, 5, 0, 1, 0, 85, 255, 234, 5, 143, 4, 156, 0, 45, 0, 0, 97, 51, 19, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 55, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 33, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 2, 175, 245, 133, 161, 183, 14, 185, 7, 24, 19, 17, 46, 30, 25, 254, 240, 133, 22, 51, 29, 27, 64, 35, 52, 56, 11, 12, 1, 5, 107, 254, 241, 107, 6, 3, 12, 12, 45, 36, 36, 99, 66, 49, 89, 39, 39, 68, 30, 2, 253, 27, 202, 186, 2, 45, 77, 30, 28, 43, 14, 141, 253, 8, 30, 46, 14, 14, 14, 1, 1, 42, 33, 33, 83, 42, 2, 131, 253, 128, 56, 112, 51, 51, 88, 33, 33, 38, 1, 1, 26, 24, 23, 64, 38, 0, 255, 255, 0, 113, 255, 233, 5, 40, 5, 244, 6, 38, 0, 48, 0, 0, 0, 7, 1, 99, 0, 128, 0, 6, 255, 255, 0, 113, 255, 233, 4, 127, 5, 156, 6, 38, 0, 48, 0, 0, 0, 6, 1, 94, 252, 236, 0, 1, 0, 113, 254, 88, 4, 127, 4, 58, 0, 60, 0, 0, 97, 51, 19, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 3, 170, 25, 188, 254, 240, 133, 21, 48, 28, 28, 66, 37, 52, 56, 11, 12, 1, 5, 107, 254, 241, 107, 9, 17, 36, 36, 124, 99, 49, 89, 39, 39, 68, 30, 18, 33, 59, 22, 23, 27, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 29, 4, 58, 253, 8, 29, 44, 15, 15, 15, 1, 1, 42, 33, 33, 83, 42, 2, 131, 253, 128, 85, 166, 65, 64, 82, 1, 1, 26, 24, 23, 64, 38, 132, 21, 51, 31, 31, 71, 40, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 33, 13, 0, 255, 255, 0, 113, 255, 233, 4, 127, 6, 50, 6, 38, 0, 48, 0, 0, 0, 7, 1, 98, 0, 34, 0, 158, 255, 255, 0, 113, 255, 233, 4, 127, 6, 12, 6, 38, 0, 48, 0, 0, 0, 7, 1, 93, 0, 139, 0, 7, 255, 255, 0, 112, 0, 0, 4, 210, 5, 200, 6, 38, 0, 50, 0, 0, 0, 6, 1, 91, 113, 2, 255, 255, 0, 112, 0, 0, 4, 210, 5, 242, 6, 38, 0, 50, 0, 0, 0, 6, 1, 92, 102, 6, 255, 255, 0, 112, 0, 0, 4, 210, 5, 217, 6, 38, 0, 50, 0, 0, 0, 6, 1, 97, 227, 6, 255, 255, 0, 112, 0, 0, 4, 210, 5, 203, 6, 38, 0, 50, 0, 0, 0, 7, 1, 90, 255, 96, 0, 5, 255, 255, 0, 0, 254, 72, 5, 3, 5, 200, 6, 38, 0, 52, 0, 0, 0, 7, 1, 91, 0, 154, 0, 2, 255, 255, 0, 0, 254, 72, 5, 3, 5, 242, 6, 38, 0, 52, 0, 0, 0, 7, 1, 92, 0, 143, 0, 6, 255, 255, 0, 0, 254, 72, 5, 3, 5, 217, 6, 38, 0, 52, 0, 0, 0, 6, 1, 97, 11, 6, 255, 255, 0, 0, 254, 72, 5, 3, 5, 203, 6, 38, 0, 52, 0, 0, 0, 6, 1, 90, 137, 5, 255, 255, 0, 20, 0, 0, 4, 129, 5, 200, 6, 38, 0, 53, 0, 0, 0, 7, 1, 91, 0, 154, 0, 2, 255, 255, 0, 20, 0, 0, 4, 131, 5, 245, 6, 38, 0, 53, 0, 0, 0, 6, 1, 100, 13, 6, 255, 255, 0, 20, 0, 0, 4, 129, 5, 248, 6, 38, 0, 53, 0, 0, 0, 6, 1, 96, 25, 22, 0, 1, 2, 32, 4, 175, 3, 187, 5, 198, 0, 3, 0, 0, 65, 3, 33, 19, 3, 187, 129, 254, 230, 213, 4, 175, 1, 23, 254, 233, 0, 1, 1, 200, 4, 175, 3, 228, 5, 198, 0, 3, 0, 0, 65, 3, 51, 1, 2, 170, 226, 227, 1, 57, 5, 198, 254, 233, 1, 23, 0, 1, 0, 239, 4, 220, 3, 198, 5, 236, 0, 8, 0, 0, 65, 37, 35, 5, 7, 55, 55, 23, 23, 3, 198, 254, 255, 155, 254, 199, 2, 219, 171, 126, 209, 4, 250, 242, 240, 32, 2, 125, 126, 1, 0, 1, 0, 234, 4, 233, 3, 197, 6, 5, 0, 37, 0, 0, 65, 39, 6, 6, 7, 6, 6, 35, 6, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 51, 54, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 3, 197, 129, 6, 20, 14, 13, 32, 21, 37, 65, 32, 32, 67, 37, 50, 81, 28, 29, 34, 4, 134, 6, 18, 13, 13, 33, 22, 37, 65, 32, 32, 66, 38, 51, 80, 28, 28, 32, 5, 234, 27, 21, 37, 14, 11, 14, 1, 28, 17, 17, 29, 43, 35, 36, 89, 45, 29, 20, 37, 13, 12, 16, 1, 28, 17, 17, 29, 43, 36, 35, 89, 0, 1, 1, 116, 5, 12, 4, 84, 5, 176, 0, 3, 0, 0, 65, 55, 33, 7, 4, 58, 26, 253, 58, 26, 5, 12, 164, 164, 0, 1, 1, 157, 4, 124, 4, 48, 5, 163, 0, 25, 0, 0, 65, 7, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 4, 48, 196, 6, 25, 20, 19, 50, 32, 34, 46, 14, 13, 11, 1, 193, 1, 46, 41, 41, 113, 67, 69, 123, 48, 47, 59, 5, 163, 2, 31, 50, 18, 17, 17, 1, 21, 19, 17, 48, 28, 1, 69, 108, 37, 38, 41, 1, 1, 38, 38, 37, 111, 0, 0, 1, 2, 78, 4, 197, 3, 114, 5, 226, 0, 11, 0, 0, 65, 20, 22, 55, 50, 54, 53, 52, 38, 7, 34, 6, 2, 78, 85, 61, 61, 85, 86, 60, 66, 80, 5, 78, 61, 76, 2, 80, 65, 62, 76, 2, 84, 0, 0, 2, 1, 120, 4, 214, 4, 83, 5, 211, 0, 11, 0, 23, 0, 0, 65, 20, 22, 51, 54, 54, 53, 52, 38, 35, 6, 6, 5, 20, 22, 51, 54, 54, 53, 52, 38, 7, 6, 6, 1, 120, 79, 55, 53, 78, 81, 52, 54, 78, 1, 210, 80, 53, 53, 79, 84, 50, 55, 76, 5, 81, 53, 68, 2, 70, 57, 54, 68, 2, 72, 56, 54, 69, 2, 72, 57, 55, 67, 1, 1, 73, 0, 2, 1, 243, 4, 14, 3, 143, 5, 148, 0, 23, 0, 47, 0, 0, 65, 6, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 1, 244, 1, 30, 27, 26, 71, 40, 43, 77, 30, 29, 36, 2, 1, 29, 25, 26, 69, 40, 43, 79, 30, 31, 38, 111, 2, 19, 15, 15, 38, 21, 20, 31, 10, 9, 8, 2, 2, 18, 14, 14, 37, 21, 18, 29, 10, 13, 12, 4, 199, 41, 68, 24, 25, 27, 29, 27, 27, 74, 44, 40, 69, 26, 25, 29, 30, 27, 28, 76, 41, 21, 38, 15, 14, 17, 16, 13, 13, 35, 18, 20, 38, 14, 14, 17, 12, 11, 12, 37, 0, 2, 1, 51, 4, 229, 4, 168, 5, 238, 0, 3, 0, 7, 0, 0, 65, 1, 51, 1, 33, 3, 51, 1, 3, 138, 254, 228, 227, 1, 87, 253, 127, 244, 220, 1, 41, 5, 238, 254, 247, 1, 9, 254, 247, 1, 9, 0, 0, 1, 1, 140, 4, 221, 4, 118, 5, 239, 0, 8, 0, 0, 65, 39, 39, 7, 23, 51, 37, 53, 7, 2, 227, 118, 224, 1, 255, 171, 1, 64, 238, 5, 112, 125, 2, 24, 250, 251, 23, 3, 0, 1, 252, 149, 254, 147, 253, 208, 255, 174, 0, 11, 0, 0, 69, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 252, 149, 95, 62, 62, 96, 94, 63, 66, 92, 229, 65, 71, 79, 67, 64, 73, 83, 0, 1, 1, 28, 254, 50, 2, 137, 0, 5, 0, 30, 0, 0, 101, 7, 7, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 2, 35, 203, 44, 17, 47, 20, 20, 24, 4, 5, 26, 18, 19, 44, 22, 6, 39, 84, 41, 40, 72, 28, 27, 32, 1, 1, 19, 19, 15, 43, 27, 5, 1, 140, 2, 3, 6, 7, 28, 26, 26, 33, 10, 10, 10, 1, 164, 1, 11, 11, 11, 36, 27, 26, 74, 48, 35, 59, 22, 17, 24, 6, 0, 1, 0, 243, 254, 88, 2, 121, 0, 61, 0, 28, 0, 0, 69, 39, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 2, 121, 153, 42, 84, 33, 33, 43, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 3, 64, 21, 55, 35, 36, 87, 51, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 33, 0, 0, 1, 0, 149, 255, 87, 1, 204, 0, 250, 0, 9, 0, 0, 101, 55, 35, 7, 6, 6, 7, 23, 54, 54, 1, 197, 7, 186, 10, 12, 60, 43, 113, 79, 101, 182, 68, 72, 75, 130, 62, 80, 66, 182, 255, 255, 0, 161, 0, 93, 4, 34, 3, 124, 4, 39, 0, 122, 255, 51, 255, 221, 0, 7, 0, 122, 0, 163, 255, 221, 0, 1, 255, 246, 254, 96, 4, 150, 4, 58, 0, 33, 0, 0, 65, 33, 1, 33, 19, 22, 22, 51, 50, 54, 55, 54, 54, 55, 7, 51, 19, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 2, 9, 254, 241, 254, 252, 1, 15, 85, 39, 87, 47, 32, 58, 26, 32, 58, 28, 9, 242, 188, 254, 240, 135, 21, 49, 27, 28, 63, 35, 34, 48, 14, 19, 14, 2, 1, 4, 3, 4, 58, 250, 38, 1, 189, 25, 25, 10, 10, 12, 37, 24, 72, 4, 58, 252, 254, 27, 41, 13, 13, 13, 1, 1, 21, 17, 21, 57, 31, 26, 54, 26, 255, 255, 0, 131, 0, 127, 4, 0, 3, 158, 4, 39, 0, 123, 255, 103, 0, 0, 0, 7, 0, 123, 0, 212, 0, 0, 0, 1, 0, 88, 0, 0, 3, 249, 4, 58, 0, 9, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 1, 20, 40, 1, 59, 109, 254, 198, 40, 3, 121, 40, 254, 211, 149, 4, 58, 227, 253, 139, 226, 226, 3, 88, 0, 2, 0, 17, 255, 235, 4, 195, 5, 176, 0, 3, 0, 31, 0, 0, 115, 19, 35, 3, 1, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 213, 253, 196, 253, 3, 238, 193, 5, 22, 20, 20, 59, 42, 38, 42, 10, 10, 3, 2, 196, 3, 32, 35, 35, 111, 76, 82, 130, 48, 47, 57, 11, 193, 5, 176, 250, 80, 5, 176, 251, 145, 36, 67, 25, 25, 29, 2, 1, 35, 26, 26, 63, 29, 1, 72, 123, 45, 46, 54, 1, 2, 47, 45, 45, 127, 79, 4, 110, 0, 4, 255, 224, 254, 76, 4, 186, 5, 195, 0, 23, 0, 33, 0, 45, 0, 57, 0, 0, 65, 7, 51, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 33, 7, 51, 3, 35, 7, 33, 55, 35, 19, 1, 20, 22, 55, 54, 54, 53, 52, 38, 7, 6, 6, 5, 20, 22, 55, 54, 54, 53, 52, 38, 7, 6, 6, 2, 239, 30, 210, 157, 9, 46, 36, 36, 98, 62, 45, 88, 43, 27, 54, 104, 54, 102, 163, 60, 60, 75, 14, 186, 252, 30, 30, 222, 128, 228, 30, 2, 130, 30, 219, 159, 1, 149, 66, 48, 49, 62, 67, 47, 50, 61, 253, 203, 66, 48, 48, 63, 68, 47, 49, 61, 4, 58, 170, 252, 106, 60, 97, 33, 34, 36, 1, 1, 6, 8, 169, 8, 9, 61, 56, 56, 159, 98, 4, 64, 170, 253, 26, 170, 170, 3, 144, 1, 20, 48, 61, 2, 2, 62, 49, 51, 60, 2, 2, 64, 50, 48, 61, 2, 2, 62, 49, 51, 60, 2, 2, 64, 0, 0, 1, 1, 39, 0, 0, 4, 167, 6, 47, 0, 21, 0, 0, 97, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 1, 39, 1, 14, 189, 10, 50, 39, 38, 101, 60, 24, 45, 23, 47, 40, 79, 41, 114, 188, 70, 70, 90, 16, 4, 77, 58, 97, 34, 34, 36, 1, 1, 7, 5, 214, 8, 13, 1, 1, 66, 63, 63, 180, 111, 0, 0, 1, 0, 51, 254, 73, 3, 155, 4, 58, 0, 23, 0, 0, 65, 7, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 23, 50, 54, 55, 54, 54, 55, 19, 1, 128, 40, 1, 10, 149, 8, 40, 30, 28, 75, 45, 37, 75, 36, 36, 45, 90, 45, 104, 173, 65, 65, 83, 14, 188, 4, 58, 227, 252, 144, 47, 72, 23, 22, 22, 1, 1, 7, 8, 228, 8, 8, 1, 50, 52, 51, 156, 105, 4, 83, 0, 0, 2, 1, 29, 254, 141, 2, 96, 255, 188, 0, 23, 0, 44, 0, 0, 69, 6, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 1, 30, 1, 25, 22, 21, 57, 31, 33, 59, 23, 23, 27, 1, 1, 24, 20, 21, 56, 31, 33, 62, 23, 23, 29, 107, 4, 12, 8, 7, 21, 14, 11, 16, 5, 6, 3, 2, 2, 13, 9, 8, 20, 10, 25, 19, 228, 33, 53, 18, 19, 20, 24, 21, 20, 56, 34, 32, 55, 20, 19, 22, 24, 21, 22, 59, 31, 11, 22, 9, 9, 10, 9, 7, 8, 21, 10, 12, 22, 8, 7, 9, 29, 0, 1, 253, 96, 4, 186, 254, 144, 6, 24, 0, 3, 0, 0, 65, 3, 35, 19, 254, 144, 98, 206, 151, 4, 186, 1, 94, 254, 162, 0, 0, 1, 253, 231, 4, 185, 255, 154, 6, 25, 0, 3, 0, 0, 65, 3, 51, 1, 254, 178, 203, 175, 1, 4, 6, 25, 254, 160, 1, 96, 255, 255, 252, 248, 4, 233, 255, 211, 6, 5, 4, 7, 1, 93, 252, 14, 0, 0, 0, 1, 253, 194, 4, 238, 255, 66, 6, 132, 0, 27, 0, 0, 65, 23, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 253, 194, 211, 9, 31, 58, 23, 22, 27, 1, 2, 74, 48, 55, 115, 44, 17, 15, 47, 21, 20, 27, 4, 4, 35, 22, 23, 49, 18, 4, 239, 1, 67, 6, 22, 18, 18, 52, 35, 62, 75, 17, 19, 13, 2, 133, 2, 5, 6, 25, 25, 24, 27, 7, 7, 5, 2, 0, 0, 2, 252, 171, 4, 228, 255, 205, 5, 238, 0, 3, 0, 7, 0, 0, 65, 3, 33, 19, 33, 3, 33, 19, 254, 142, 192, 254, 221, 239, 2, 51, 145, 254, 231, 191, 4, 228, 1, 10, 254, 246, 1, 10, 254, 246, 0, 1, 2, 163, 4, 242, 4, 79, 6, 129, 0, 3, 0, 0, 65, 3, 51, 1, 3, 55, 148, 147, 1, 25, 6, 129, 254, 113, 1, 143, 0, 3, 1, 126, 4, 197, 4, 166, 7, 9, 0, 3, 0, 15, 0, 27, 0, 0, 65, 3, 51, 19, 1, 20, 22, 55, 54, 54, 53, 52, 38, 7, 6, 6, 5, 20, 22, 55, 54, 54, 53, 52, 38, 7, 6, 6, 3, 65, 99, 153, 219, 253, 44, 85, 53, 55, 82, 83, 55, 56, 81, 2, 20, 83, 56, 56, 81, 83, 55, 56, 82, 7, 9, 254, 188, 1, 68, 254, 60, 59, 69, 2, 2, 73, 59, 57, 73, 2, 2, 76, 56, 58, 72, 2, 2, 76, 58, 57, 72, 2, 2, 75, 255, 255, 2, 46, 2, 37, 3, 97, 3, 86, 4, 6, 0, 100, 61, 0, 0, 1, 0, 32, 0, 0, 4, 176, 5, 176, 0, 5, 0, 0, 65, 55, 33, 3, 33, 19, 4, 136, 40, 252, 109, 253, 1, 18, 213, 4, 204, 228, 250, 80, 4, 204, 0, 2, 255, 181, 0, 0, 4, 110, 5, 176, 0, 3, 0, 8, 0, 0, 65, 1, 33, 3, 1, 1, 55, 23, 19, 2, 139, 253, 42, 4, 185, 206, 253, 167, 1, 87, 59, 15, 86, 5, 176, 250, 80, 5, 176, 251, 50, 2, 212, 124, 124, 253, 44, 0, 0, 3, 0, 84, 255, 234, 4, 149, 5, 198, 0, 3, 0, 41, 0, 79, 0, 0, 65, 55, 33, 7, 37, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 3, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 3, 29, 39, 254, 134, 39, 2, 199, 33, 10, 8, 18, 19, 68, 51, 52, 137, 88, 91, 154, 63, 63, 100, 36, 37, 49, 12, 33, 10, 6, 17, 17, 64, 50, 49, 135, 87, 92, 156, 65, 65, 103, 39, 38, 50, 232, 33, 7, 22, 17, 18, 50, 33, 34, 86, 54, 51, 65, 19, 19, 16, 1, 7, 5, 33, 6, 20, 16, 15, 46, 32, 31, 84, 55, 51, 68, 21, 21, 20, 3, 2, 6, 2, 102, 223, 223, 8, 211, 76, 154, 71, 70, 123, 47, 46, 54, 2, 2, 49, 44, 45, 124, 72, 72, 159, 80, 212, 75, 152, 70, 71, 123, 46, 47, 55, 2, 2, 48, 44, 44, 123, 72, 72, 160, 1, 39, 215, 43, 96, 46, 47, 84, 31, 31, 35, 2, 2, 43, 34, 34, 86, 45, 45, 86, 35, 215, 43, 95, 46, 46, 83, 32, 31, 35, 2, 2, 42, 33, 33, 84, 44, 45, 88, 0, 0, 1, 255, 169, 0, 0, 4, 37, 5, 176, 0, 6, 0, 0, 65, 19, 33, 3, 33, 1, 33, 2, 169, 101, 1, 23, 183, 254, 235, 253, 80, 1, 38, 4, 52, 251, 204, 5, 176, 250, 80, 0, 0, 3, 0, 13, 0, 0, 4, 154, 5, 176, 0, 3, 0, 7, 0, 11, 0, 0, 119, 7, 33, 55, 1, 7, 33, 55, 1, 7, 33, 55, 52, 39, 3, 179, 40, 253, 33, 39, 2, 223, 39, 253, 52, 40, 3, 126, 40, 226, 226, 226, 2, 111, 219, 219, 2, 95, 228, 228, 0, 1, 0, 13, 0, 0, 4, 188, 5, 176, 0, 7, 0, 0, 97, 19, 33, 3, 33, 19, 33, 3, 3, 191, 253, 252, 77, 252, 1, 18, 213, 1, 142, 213, 5, 176, 250, 80, 4, 204, 251, 52, 0, 1, 0, 3, 0, 1, 4, 207, 5, 176, 0, 12, 0, 0, 65, 55, 1, 33, 55, 33, 7, 1, 1, 7, 33, 55, 33, 3, 86, 1, 254, 236, 2, 100, 40, 252, 49, 25, 1, 80, 253, 232, 28, 3, 236, 39, 253, 140, 2, 213, 18, 1, 229, 228, 140, 253, 197, 253, 186, 162, 224, 0, 0, 3, 0, 75, 0, 0, 4, 230, 5, 176, 0, 29, 0, 42, 0, 55, 0, 0, 65, 55, 33, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 7, 33, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 1, 54, 54, 55, 54, 54, 55, 3, 38, 38, 39, 38, 38, 37, 6, 6, 7, 6, 6, 7, 19, 22, 22, 23, 22, 22, 3, 121, 41, 254, 238, 40, 112, 186, 69, 69, 85, 11, 9, 36, 45, 45, 144, 98, 39, 1, 17, 39, 110, 185, 69, 69, 85, 11, 9, 34, 44, 45, 143, 253, 133, 7, 34, 29, 28, 82, 54, 114, 45, 52, 13, 13, 2, 2, 115, 7, 34, 28, 29, 80, 52, 114, 45, 51, 12, 12, 1, 4, 234, 198, 196, 12, 91, 72, 72, 191, 111, 94, 175, 70, 70, 96, 15, 191, 189, 12, 88, 71, 70, 187, 110, 94, 177, 72, 72, 99, 253, 236, 54, 98, 41, 40, 60, 16, 253, 183, 16, 58, 38, 37, 85, 61, 52, 94, 39, 39, 57, 15, 2, 72, 17, 62, 39, 40, 88, 0, 0, 1, 0, 108, 0, 0, 5, 75, 5, 176, 0, 35, 0, 0, 65, 19, 33, 3, 38, 38, 39, 38, 54, 55, 19, 33, 3, 6, 22, 23, 22, 22, 23, 3, 33, 19, 54, 54, 55, 54, 54, 55, 19, 33, 3, 6, 6, 7, 6, 6, 3, 5, 159, 254, 239, 159, 48, 49, 9, 10, 4, 6, 95, 254, 238, 95, 12, 27, 43, 42, 146, 107, 67, 1, 17, 67, 115, 177, 64, 63, 78, 16, 96, 254, 237, 96, 8, 27, 24, 24, 74, 2, 60, 3, 116, 252, 142, 19, 70, 44, 43, 95, 44, 2, 55, 253, 202, 99, 184, 73, 74, 99, 15, 254, 166, 1, 89, 14, 91, 71, 71, 187, 111, 2, 54, 253, 202, 52, 100, 42, 43, 64, 0, 1, 255, 248, 0, 0, 4, 147, 5, 198, 0, 74, 0, 0, 65, 3, 33, 55, 5, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 5, 7, 33, 19, 38, 38, 39, 38, 52, 55, 54, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 2, 84, 44, 1, 201, 41, 254, 244, 78, 127, 48, 47, 62, 12, 7, 8, 10, 19, 20, 69, 50, 51, 133, 84, 88, 152, 64, 64, 103, 38, 39, 50, 11, 6, 13, 31, 42, 22, 56, 34, 254, 253, 41, 1, 201, 44, 38, 43, 9, 10, 5, 4, 14, 4, 6, 5, 19, 15, 15, 44, 30, 30, 78, 50, 46, 60, 18, 18, 15, 2, 1, 6, 4, 7, 8, 24, 23, 28, 96, 1, 15, 254, 241, 228, 4, 48, 126, 75, 74, 168, 90, 51, 74, 148, 68, 68, 119, 45, 44, 52, 2, 2, 46, 42, 43, 119, 69, 70, 154, 79, 51, 107, 202, 91, 45, 88, 41, 3, 228, 1, 16, 20, 76, 49, 48, 109, 53, 52, 93, 32, 52, 38, 90, 44, 44, 82, 31, 30, 34, 2, 2, 42, 32, 33, 82, 42, 43, 81, 31, 54, 62, 143, 66, 85, 143, 0, 2, 0, 82, 255, 235, 4, 58, 4, 80, 0, 55, 0, 87, 0, 0, 65, 35, 7, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 37, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 4, 58, 193, 80, 18, 45, 26, 34, 79, 44, 77, 126, 50, 49, 76, 27, 26, 34, 8, 2, 6, 3, 11, 12, 46, 37, 37, 105, 70, 57, 97, 42, 26, 48, 22, 13, 46, 30, 29, 70, 37, 32, 58, 27, 2, 11, 20, 11, 20, 19, 3, 1, 1, 3, 1, 253, 176, 2, 4, 15, 13, 13, 37, 27, 26, 69, 45, 26, 47, 20, 17, 30, 12, 94, 16, 34, 18, 25, 57, 32, 38, 49, 15, 16, 13, 1, 2, 4, 4, 58, 118, 29, 47, 17, 21, 23, 1, 2, 47, 43, 42, 113, 65, 64, 136, 64, 22, 57, 122, 58, 58, 104, 40, 40, 48, 1, 1, 29, 28, 16, 43, 25, 37, 53, 16, 17, 16, 1, 12, 12, 212, 2, 4, 2, 1, 24, 16, 5, 12, 5, 12, 23, 10, 185, 21, 35, 81, 40, 39, 72, 27, 28, 33, 1, 1, 10, 11, 8, 26, 18, 253, 238, 15, 24, 9, 13, 12, 1, 1, 31, 24, 25, 63, 33, 33, 64, 0, 2, 255, 235, 254, 110, 4, 136, 5, 199, 0, 38, 0, 78, 0, 0, 65, 38, 6, 7, 6, 6, 7, 3, 33, 19, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 3, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 2, 241, 99, 180, 70, 71, 94, 14, 246, 1, 14, 88, 24, 49, 25, 40, 87, 45, 102, 173, 64, 64, 78, 8, 4, 17, 22, 23, 73, 51, 48, 83, 32, 32, 39, 5, 7, 58, 55, 55, 152, 189, 63, 30, 114, 48, 66, 19, 19, 12, 6, 7, 47, 35, 36, 90, 51, 30, 61, 28, 22, 42, 18, 133, 7, 40, 31, 30, 79, 48, 39, 58, 19, 18, 15, 4, 5, 30, 24, 29, 83, 5, 197, 2, 62, 58, 59, 163, 99, 250, 96, 1, 206, 15, 26, 9, 15, 16, 1, 2, 62, 59, 58, 166, 102, 55, 103, 45, 45, 72, 24, 26, 65, 40, 40, 95, 57, 93, 143, 49, 48, 52, 253, 150, 1, 205, 1, 2, 38, 31, 31, 80, 44, 51, 84, 29, 30, 32, 8, 10, 7, 23, 16, 3, 7, 44, 80, 30, 29, 33, 1, 1, 30, 24, 25, 66, 37, 45, 74, 27, 32, 35, 0, 0, 1, 0, 127, 254, 95, 4, 236, 4, 58, 0, 10, 0, 0, 65, 1, 7, 39, 3, 33, 19, 3, 33, 19, 1, 3, 199, 254, 114, 30, 1, 137, 254, 238, 244, 79, 1, 15, 73, 2, 112, 4, 58, 253, 1, 73, 67, 3, 5, 251, 235, 254, 58, 1, 166, 4, 53, 0, 0, 2, 0, 64, 255, 233, 4, 94, 6, 37, 0, 63, 0, 92, 0, 0, 65, 6, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 54, 22, 23, 55, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 19, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 1, 87, 2, 15, 15, 18, 56, 37, 11, 82, 136, 51, 52, 64, 10, 2, 10, 50, 57, 57, 175, 114, 121, 203, 77, 76, 97, 14, 2, 11, 46, 50, 51, 152, 94, 20, 49, 20, 11, 17, 5, 4, 2, 3, 7, 38, 27, 26, 59, 28, 60, 113, 56, 60, 36, 73, 37, 37, 77, 39, 78, 152, 60, 60, 78, 3, 2, 5, 23, 19, 18, 51, 32, 32, 78, 45, 54, 75, 23, 22, 16, 5, 3, 9, 43, 36, 37, 105, 70, 66, 80, 19, 20, 8, 4, 219, 38, 69, 31, 35, 59, 22, 21, 16, 80, 57, 58, 147, 82, 21, 110, 190, 71, 71, 83, 2, 3, 83, 74, 73, 201, 116, 21, 107, 175, 70, 70, 108, 40, 9, 23, 17, 9, 21, 12, 10, 22, 13, 31, 42, 13, 13, 12, 1, 34, 20, 183, 15, 28, 11, 11, 14, 1, 1, 37, 40, 41, 125, 252, 221, 20, 37, 81, 39, 38, 68, 25, 24, 24, 6, 7, 68, 47, 47, 107, 45, 19, 60, 122, 48, 49, 59, 2, 2, 62, 48, 47, 114, 0, 0, 1, 0, 75, 255, 235, 4, 138, 4, 79, 0, 88, 0, 0, 83, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 33, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 23, 55, 35, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 5, 52, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 78, 3, 41, 38, 37, 99, 55, 54, 110, 49, 79, 172, 75, 82, 118, 8, 254, 240, 9, 58, 38, 39, 84, 35, 29, 76, 33, 16, 27, 9, 10, 8, 3, 3, 19, 14, 13, 36, 20, 39, 89, 39, 211, 33, 238, 27, 70, 29, 18, 29, 7, 4, 3, 3, 7, 54, 36, 36, 81, 34, 30, 70, 30, 29, 40, 1, 1, 12, 81, 64, 64, 157, 77, 86, 203, 82, 76, 89, 3, 1, 23, 21, 21, 55, 32, 48, 90, 34, 35, 43, 1, 42, 63, 95, 35, 35, 48, 14, 14, 13, 1, 1, 29, 34, 38, 137, 103, 41, 52, 14, 15, 10, 1, 10, 14, 7, 19, 12, 13, 33, 21, 24, 37, 15, 14, 21, 8, 14, 8, 1, 188, 1, 6, 11, 7, 22, 16, 10, 25, 15, 41, 51, 15, 14, 9, 9, 12, 13, 47, 37, 1, 89, 124, 40, 39, 37, 2, 2, 32, 41, 38, 122, 92, 38, 64, 27, 27, 43, 16, 17, 44, 31, 32, 85, 0, 0, 1, 0, 62, 254, 122, 4, 162, 5, 176, 0, 56, 0, 0, 69, 54, 38, 39, 38, 38, 39, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 1, 55, 33, 7, 33, 5, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 3, 120, 3, 39, 35, 35, 91, 49, 173, 32, 46, 15, 21, 12, 6, 10, 68, 48, 48, 112, 55, 1, 210, 30, 252, 64, 40, 2, 73, 254, 244, 70, 146, 61, 62, 86, 9, 7, 37, 40, 39, 117, 72, 160, 19, 33, 11, 11, 11, 4, 5, 23, 16, 16, 36, 17, 137, 42, 88, 37, 36, 50, 46, 58, 82, 29, 28, 37, 12, 39, 8, 25, 18, 23, 68, 45, 77, 122, 52, 52, 92, 47, 1, 162, 170, 224, 247, 60, 128, 72, 72, 166, 100, 77, 121, 45, 46, 60, 16, 32, 4, 14, 10, 11, 30, 21, 26, 46, 22, 22, 39, 18, 117, 28, 74, 45, 44, 99, 0, 0, 1, 0, 20, 254, 97, 4, 63, 4, 79, 0, 31, 0, 0, 65, 7, 3, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 33, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 1, 203, 251, 188, 1, 16, 140, 24, 53, 27, 29, 63, 34, 44, 60, 17, 17, 11, 5, 187, 1, 17, 186, 9, 23, 36, 36, 124, 92, 68, 118, 50, 29, 53, 23, 4, 59, 1, 251, 198, 3, 24, 21, 31, 11, 11, 11, 1, 2, 29, 25, 26, 70, 41, 251, 182, 4, 73, 83, 151, 58, 57, 69, 2, 1, 39, 37, 20, 53, 30, 0, 3, 0, 152, 255, 232, 4, 102, 5, 199, 0, 37, 0, 58, 0, 79, 0, 0, 65, 19, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 63, 3, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 4, 28, 65, 9, 9, 19, 15, 53, 37, 44, 121, 79, 85, 140, 56, 57, 89, 29, 25, 35, 9, 64, 8, 6, 16, 15, 58, 44, 44, 119, 76, 120, 182, 64, 31, 51, 20, 19, 27, 245, 24, 3, 10, 6, 7, 19, 13, 26, 80, 60, 43, 53, 14, 13, 8, 2, 1, 5, 3, 24, 36, 18, 4, 11, 8, 10, 37, 25, 24, 64, 41, 27, 41, 15, 16, 19, 6, 11, 4, 5, 18, 2, 10, 1, 148, 72, 144, 65, 52, 92, 34, 41, 49, 2, 2, 44, 41, 43, 116, 67, 56, 123, 63, 254, 107, 67, 132, 59, 60, 102, 38, 38, 44, 2, 3, 88, 76, 38, 89, 48, 48, 105, 165, 160, 24, 49, 23, 25, 47, 20, 40, 47, 2, 2, 33, 26, 21, 51, 27, 28, 58, 27, 160, 215, 129, 27, 55, 27, 37, 66, 22, 21, 23, 1, 1, 16, 12, 13, 36, 20, 41, 96, 42, 129, 0, 1, 0, 217, 255, 234, 3, 199, 4, 58, 0, 23, 0, 0, 65, 7, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 7, 34, 38, 39, 38, 38, 55, 19, 1, 1, 40, 1, 19, 77, 18, 33, 39, 39, 127, 89, 68, 119, 56, 24, 36, 74, 42, 37, 46, 11, 12, 6, 9, 117, 4, 58, 227, 254, 44, 109, 147, 48, 49, 53, 2, 1, 35, 40, 203, 19, 25, 1, 20, 19, 19, 61, 52, 2, 188, 0, 0, 1, 255, 177, 255, 239, 4, 19, 6, 5, 0, 44, 0, 0, 65, 38, 6, 7, 7, 54, 54, 23, 22, 22, 23, 22, 22, 23, 23, 1, 33, 1, 55, 19, 22, 22, 23, 22, 22, 23, 50, 54, 55, 55, 6, 6, 39, 38, 38, 39, 38, 38, 39, 3, 38, 38, 39, 38, 38, 1, 153, 38, 76, 37, 16, 20, 40, 20, 34, 50, 18, 17, 22, 7, 15, 253, 204, 1, 47, 1, 14, 57, 80, 13, 51, 38, 38, 102, 64, 20, 38, 19, 29, 11, 24, 11, 29, 36, 12, 12, 13, 4, 187, 14, 51, 37, 38, 96, 6, 4, 1, 11, 10, 210, 2, 4, 2, 2, 37, 27, 27, 63, 28, 60, 251, 210, 2, 51, 150, 254, 71, 58, 104, 39, 40, 47, 1, 5, 5, 220, 1, 3, 2, 3, 38, 26, 26, 57, 22, 3, 115, 53, 98, 38, 37, 46, 0, 1, 0, 132, 254, 118, 4, 176, 5, 197, 0, 93, 0, 0, 65, 55, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 23, 55, 35, 34, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 50, 22, 4, 110, 66, 70, 145, 74, 63, 131, 62, 63, 112, 42, 43, 52, 4, 2, 27, 25, 25, 70, 41, 74, 132, 51, 52, 66, 6, 12, 120, 103, 50, 115, 60, 57, 16, 32, 12, 11, 12, 3, 4, 23, 15, 15, 36, 17, 127, 42, 90, 38, 37, 51, 3, 3, 39, 34, 35, 92, 50, 92, 46, 92, 35, 35, 38, 8, 10, 86, 61, 60, 145, 70, 126, 40, 159, 24, 59, 29, 30, 55, 19, 20, 19, 6, 5, 25, 19, 15, 39, 22, 46, 102, 42, 55, 104, 4, 186, 216, 25, 26, 16, 18, 19, 60, 43, 44, 115, 74, 47, 79, 31, 32, 49, 17, 23, 65, 47, 48, 126, 83, 145, 167, 48, 25, 38, 18, 17, 5, 14, 10, 10, 29, 20, 26, 47, 22, 22, 39, 18, 115, 27, 74, 44, 44, 101, 54, 60, 81, 28, 27, 35, 13, 23, 11, 32, 27, 26, 78, 57, 82, 104, 30, 29, 22, 1, 230, 4, 5, 5, 20, 17, 16, 49, 35, 28, 43, 16, 14, 21, 7, 16, 8, 23, 0, 0, 1, 0, 122, 255, 236, 4, 223, 4, 58, 0, 29, 0, 0, 65, 55, 33, 7, 51, 3, 33, 19, 51, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 54, 55, 19, 4, 185, 38, 251, 213, 37, 130, 151, 1, 16, 150, 245, 92, 6, 17, 28, 28, 99, 75, 57, 101, 49, 26, 23, 43, 24, 27, 27, 5, 6, 2, 2, 92, 3, 100, 214, 214, 252, 156, 3, 100, 253, 206, 70, 117, 43, 43, 50, 1, 2, 29, 29, 193, 9, 12, 18, 15, 15, 40, 22, 2, 36, 0, 2, 255, 208, 254, 96, 4, 57, 4, 81, 0, 33, 0, 62, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 33, 19, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 7, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 39, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 4, 47, 3, 7, 7, 16, 17, 59, 45, 46, 122, 79, 118, 195, 72, 73, 94, 16, 170, 1, 15, 100, 19, 43, 24, 40, 92, 50, 76, 126, 51, 50, 78, 28, 28, 35, 254, 252, 2, 7, 35, 31, 32, 95, 66, 30, 54, 23, 26, 42, 14, 45, 9, 38, 32, 31, 92, 65, 42, 56, 17, 17, 16, 2, 2, 4, 2, 5, 22, 68, 136, 62, 62, 107, 40, 39, 47, 2, 3, 80, 72, 72, 194, 111, 252, 32, 2, 14, 25, 40, 16, 25, 25, 1, 2, 42, 38, 38, 104, 61, 60, 132, 87, 21, 56, 114, 45, 46, 57, 2, 11, 11, 13, 42, 30, 250, 52, 115, 48, 47, 61, 2, 2, 35, 28, 28, 71, 37, 37, 73, 0, 0, 1, 0, 62, 254, 83, 4, 50, 4, 81, 0, 66, 0, 0, 65, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 2, 142, 121, 201, 75, 75, 93, 13, 4, 10, 46, 53, 53, 161, 105, 20, 52, 23, 22, 28, 5, 5, 37, 26, 26, 60, 28, 106, 60, 122, 50, 49, 65, 2, 2, 30, 27, 27, 72, 40, 41, 85, 39, 63, 80, 21, 22, 11, 7, 4, 8, 40, 35, 34, 101, 69, 41, 65, 23, 28, 26, 2, 255, 4, 58, 55, 55, 156, 4, 78, 3, 85, 75, 75, 202, 115, 31, 107, 174, 65, 66, 87, 19, 4, 9, 10, 10, 34, 29, 32, 56, 23, 23, 34, 11, 158, 25, 69, 46, 46, 116, 72, 50, 76, 28, 28, 38, 14, 13, 18, 7, 12, 54, 40, 39, 101, 60, 30, 59, 118, 47, 46, 57, 2, 1, 22, 20, 25, 78, 50, 1, 97, 155, 54, 54, 59, 0, 0, 2, 0, 54, 255, 232, 4, 184, 4, 59, 0, 28, 0, 54, 0, 0, 65, 55, 37, 34, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 1, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 4, 144, 40, 253, 197, 119, 197, 74, 74, 92, 14, 2, 11, 40, 51, 51, 167, 117, 113, 191, 72, 71, 89, 12, 2, 5, 19, 21, 13, 38, 22, 253, 183, 2, 7, 38, 33, 33, 96, 66, 60, 68, 15, 15, 2, 5, 2, 10, 54, 56, 28, 71, 45, 65, 71, 16, 16, 1, 3, 88, 226, 1, 81, 71, 71, 196, 115, 22, 107, 195, 75, 76, 92, 3, 3, 78, 70, 69, 189, 109, 22, 58, 107, 49, 33, 63, 31, 254, 182, 21, 56, 113, 45, 45, 55, 2, 2, 61, 45, 45, 105, 46, 21, 74, 158, 48, 25, 27, 1, 2, 64, 48, 48, 111, 0, 0, 1, 0, 106, 255, 234, 4, 64, 4, 58, 0, 25, 0, 0, 65, 55, 33, 7, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 35, 34, 38, 39, 38, 38, 55, 19, 4, 23, 41, 252, 82, 40, 1, 84, 77, 9, 24, 37, 37, 124, 92, 64, 117, 57, 10, 38, 76, 42, 41, 46, 11, 11, 1, 4, 77, 3, 83, 231, 231, 254, 44, 86, 145, 54, 54, 62, 2, 2, 25, 29, 211, 14, 22, 27, 24, 23, 62, 36, 1, 216, 0, 1, 0, 85, 255, 233, 4, 62, 4, 60, 0, 36, 0, 0, 65, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 2, 39, 39, 22, 18, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 1, 221, 254, 240, 100, 20, 47, 53, 52, 165, 110, 84, 140, 57, 56, 94, 32, 37, 47, 11, 16, 10, 40, 254, 31, 6, 18, 9, 38, 36, 32, 96, 67, 55, 64, 16, 16, 6, 7, 4, 58, 253, 169, 121, 188, 62, 62, 70, 2, 1, 39, 36, 37, 105, 62, 70, 160, 85, 127, 1, 6, 123, 1, 125, 254, 252, 128, 58, 137, 55, 52, 70, 1, 1, 47, 36, 36, 90, 45, 0, 2, 0, 59, 254, 34, 4, 168, 4, 72, 0, 55, 0, 77, 0, 0, 69, 3, 33, 19, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 38, 38, 39, 38, 38, 39, 38, 54, 55, 54, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 37, 19, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 1, 139, 88, 1, 16, 88, 114, 181, 66, 65, 79, 13, 7, 6, 13, 14, 52, 39, 40, 108, 71, 66, 112, 42, 43, 54, 8, 100, 22, 32, 11, 8, 12, 3, 7, 6, 7, 9, 35, 24, 25, 65, 37, 173, 63, 101, 37, 37, 47, 9, 11, 22, 38, 17, 48, 30, 36, 90, 1, 99, 105, 3, 11, 9, 7, 19, 12, 22, 25, 6, 6, 1, 1, 2, 6, 1, 6, 31, 26, 27, 75, 6, 254, 40, 1, 211, 18, 99, 75, 75, 194, 113, 58, 124, 59, 58, 105, 40, 39, 48, 1, 1, 43, 39, 40, 109, 63, 253, 197, 15, 37, 22, 17, 39, 20, 45, 94, 43, 53, 101, 46, 48, 88, 40, 156, 48, 119, 68, 68, 149, 79, 96, 184, 76, 35, 64, 26, 30, 46, 217, 2, 70, 14, 26, 9, 7, 9, 39, 30, 31, 75, 34, 34, 54, 11, 55, 101, 44, 44, 71, 0, 1, 0, 59, 254, 34, 4, 200, 4, 60, 0, 45, 0, 0, 65, 33, 3, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 33, 3, 6, 6, 23, 22, 22, 23, 22, 22, 23, 3, 33, 19, 54, 54, 55, 54, 54, 55, 54, 38, 39, 39, 22, 6, 7, 6, 6, 7, 6, 6, 7, 3, 77, 254, 241, 154, 31, 38, 10, 5, 7, 6, 5, 83, 254, 239, 83, 6, 2, 3, 4, 23, 20, 37, 137, 108, 88, 1, 15, 88, 122, 190, 68, 67, 83, 15, 17, 2, 30, 246, 17, 7, 19, 9, 37, 29, 30, 84, 58, 4, 58, 252, 171, 21, 63, 36, 27, 55, 29, 33, 65, 29, 1, 239, 254, 20, 47, 92, 44, 51, 95, 43, 81, 119, 25, 254, 41, 1, 211, 18, 105, 80, 79, 205, 119, 121, 248, 119, 1, 121, 247, 121, 60, 112, 48, 48, 78, 25, 0, 0, 1, 0, 23, 255, 233, 4, 143, 4, 60, 0, 88, 0, 0, 65, 33, 6, 2, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 39, 39, 22, 2, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 54, 54, 55, 19, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 1, 233, 254, 244, 71, 96, 17, 6, 8, 4, 3, 27, 30, 29, 96, 71, 46, 76, 31, 31, 52, 22, 10, 37, 27, 27, 69, 42, 74, 114, 42, 41, 58, 20, 19, 24, 7, 7, 8, 18, 22, 253, 28, 1, 16, 2, 5, 5, 5, 16, 12, 12, 34, 23, 21, 22, 4, 5, 1, 3, 2, 5, 2, 54, 254, 227, 54, 2, 5, 6, 6, 18, 13, 14, 37, 25, 16, 14, 1, 1, 5, 5, 4, 9, 1, 10, 37, 24, 24, 55, 4, 57, 121, 254, 253, 140, 50, 123, 64, 65, 122, 48, 49, 60, 1, 1, 30, 26, 26, 68, 37, 39, 67, 24, 25, 29, 1, 3, 55, 47, 46, 124, 67, 66, 133, 56, 55, 110, 55, 73, 147, 72, 1, 127, 254, 253, 128, 14, 66, 41, 41, 89, 36, 37, 47, 1, 1, 38, 29, 28, 69, 32, 32, 49, 10, 1, 90, 254, 166, 13, 55, 33, 34, 70, 27, 28, 33, 4, 2, 51, 37, 37, 88, 40, 39, 60, 10, 68, 132, 65, 64, 126, 0, 0, 2, 0, 110, 255, 233, 4, 193, 5, 199, 0, 58, 0, 81, 0, 0, 65, 55, 6, 6, 7, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 5, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 54, 1, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 22, 22, 23, 22, 6, 7, 3, 38, 38, 39, 38, 38, 4, 176, 17, 26, 52, 26, 41, 11, 5, 13, 7, 22, 13, 37, 123, 87, 89, 146, 54, 54, 66, 8, 2, 7, 44, 47, 47, 139, 89, 18, 8, 32, 27, 27, 78, 52, 51, 72, 21, 22, 15, 5, 42, 254, 252, 41, 11, 47, 53, 53, 158, 100, 109, 185, 70, 70, 91, 16, 16, 31, 60, 254, 36, 3, 3, 17, 15, 15, 42, 29, 13, 20, 7, 8, 10, 3, 5, 2, 2, 50, 41, 56, 16, 16, 11, 2, 69, 234, 6, 11, 5, 241, 64, 109, 45, 26, 47, 21, 57, 71, 2, 3, 60, 54, 54, 147, 84, 23, 92, 162, 65, 66, 94, 24, 100, 44, 88, 35, 35, 43, 2, 1, 42, 34, 33, 86, 47, 1, 2, 1, 255, 0, 98, 171, 64, 64, 76, 2, 3, 69, 63, 63, 177, 105, 99, 6, 14, 1, 240, 24, 24, 50, 20, 19, 25, 1, 8, 6, 7, 19, 11, 22, 48, 20, 254, 228, 19, 54, 34, 34, 79, 0, 0, 1, 0, 204, 0, 0, 5, 107, 5, 203, 0, 46, 0, 0, 65, 3, 7, 53, 3, 38, 38, 39, 38, 38, 39, 38, 6, 7, 7, 54, 54, 51, 22, 22, 23, 22, 22, 23, 19, 3, 33, 19, 1, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 3, 136, 210, 26, 80, 10, 46, 31, 32, 88, 59, 30, 59, 28, 1, 12, 24, 13, 14, 25, 10, 13, 19, 5, 161, 90, 1, 17, 82, 1, 118, 12, 12, 13, 19, 62, 38, 11, 23, 11, 47, 32, 64, 35, 66, 107, 43, 43, 67, 4, 175, 254, 109, 66, 66, 1, 152, 52, 97, 38, 38, 47, 2, 1, 10, 11, 223, 2, 3, 1, 7, 6, 8, 26, 18, 253, 107, 253, 255, 1, 218, 2, 125, 20, 20, 22, 32, 39, 3, 3, 218, 12, 13, 1, 1, 47, 39, 40, 104, 0, 2, 0, 5, 255, 234, 5, 46, 4, 58, 0, 40, 0, 86, 0, 0, 65, 55, 33, 7, 55, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 39, 1, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 55, 33, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 52, 55, 54, 54, 55, 54, 54, 55, 5, 22, 6, 5, 8, 38, 251, 36, 36, 111, 59, 73, 14, 6, 1, 9, 9, 39, 32, 32, 92, 63, 49, 79, 33, 33, 55, 23, 10, 40, 29, 28, 73, 44, 66, 104, 40, 40, 59, 20, 20, 25, 7, 14, 4, 2, 254, 233, 2, 4, 4, 5, 14, 10, 11, 30, 21, 24, 26, 6, 6, 1, 2, 2, 6, 1, 30, 254, 227, 30, 2, 7, 6, 6, 20, 14, 15, 41, 28, 16, 18, 4, 4, 2, 2, 6, 1, 14, 77, 53, 1, 218, 2, 1, 3, 113, 201, 200, 2, 108, 234, 121, 52, 104, 49, 49, 85, 32, 32, 38, 1, 1, 31, 27, 27, 71, 39, 41, 70, 25, 26, 30, 1, 2, 34, 32, 31, 87, 51, 50, 112, 56, 113, 224, 114, 254, 60, 14, 45, 25, 26, 51, 21, 21, 26, 36, 29, 28, 68, 32, 32, 51, 11, 207, 207, 16, 56, 33, 34, 67, 27, 27, 31, 3, 2, 29, 22, 21, 51, 24, 23, 39, 10, 120, 233, 109, 2, 113, 225, 0, 0, 1, 0, 138, 255, 238, 4, 189, 5, 176, 0, 48, 0, 0, 65, 55, 33, 7, 33, 3, 33, 19, 54, 54, 51, 54, 50, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 7, 34, 6, 7, 19, 4, 149, 40, 251, 245, 40, 1, 38, 213, 1, 18, 114, 7, 15, 7, 7, 15, 8, 28, 47, 18, 14, 23, 9, 20, 13, 5, 5, 30, 24, 27, 77, 51, 23, 102, 180, 69, 69, 86, 9, 8, 52, 54, 23, 55, 31, 44, 105, 58, 17, 30, 17, 74, 4, 204, 228, 228, 251, 52, 2, 108, 1, 1, 1, 1, 1, 12, 11, 8, 20, 13, 30, 79, 46, 46, 73, 25, 28, 32, 3, 213, 2, 55, 54, 54, 160, 108, 101, 162, 57, 24, 39, 14, 20, 21, 1, 3, 2, 1, 125, 0, 0, 1, 0, 83, 255, 234, 4, 169, 5, 199, 0, 67, 0, 0, 65, 5, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 5, 55, 5, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 33, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 4, 64, 254, 241, 11, 44, 34, 35, 94, 61, 50, 67, 20, 21, 20, 2, 2, 7, 6, 6, 1, 194, 40, 254, 46, 5, 8, 21, 16, 18, 52, 37, 30, 76, 48, 62, 82, 24, 24, 19, 1, 1, 17, 3, 60, 57, 57, 171, 114, 86, 148, 61, 61, 99, 36, 39, 52, 13, 44, 9, 5, 16, 16, 70, 50, 51, 139, 89, 111, 194, 75, 75, 99, 1, 201, 2, 56, 95, 33, 34, 36, 2, 2, 37, 30, 30, 78, 42, 41, 84, 37, 34, 1, 227, 1, 29, 39, 85, 41, 47, 88, 29, 24, 27, 1, 2, 40, 35, 35, 95, 57, 109, 179, 65, 64, 72, 2, 1, 43, 40, 40, 112, 64, 70, 159, 82, 254, 229, 69, 136, 62, 72, 124, 43, 45, 53, 2, 2, 66, 63, 62, 178, 0, 2, 255, 195, 255, 254, 4, 103, 5, 176, 0, 49, 0, 64, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 39, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 19, 51, 3, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 35, 7, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 6, 6, 7, 35, 3, 137, 253, 181, 149, 4, 9, 8, 4, 12, 8, 6, 14, 8, 20, 55, 38, 17, 27, 31, 79, 121, 45, 45, 64, 22, 7, 14, 6, 9, 16, 6, 111, 130, 213, 249, 62, 108, 45, 50, 81, 28, 27, 33, 5, 7, 23, 35, 36, 123, 92, 8, 26, 15, 39, 43, 9, 9, 1, 4, 5, 23, 22, 23, 68, 48, 16, 5, 176, 252, 146, 26, 73, 39, 22, 45, 21, 17, 30, 14, 31, 38, 1, 2, 225, 2, 49, 43, 43, 116, 65, 23, 49, 24, 43, 85, 40, 2, 138, 251, 52, 1, 31, 29, 33, 97, 57, 54, 121, 61, 78, 162, 67, 67, 87, 3, 224, 1, 5, 52, 36, 36, 78, 29, 40, 91, 38, 39, 53, 1, 0, 0, 2, 255, 240, 255, 254, 4, 82, 5, 176, 0, 24, 0, 39, 0, 0, 65, 19, 35, 3, 51, 19, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 7, 7, 19, 35, 3, 23, 23, 22, 22, 23, 22, 20, 7, 6, 6, 7, 6, 6, 7, 35, 1, 124, 107, 251, 252, 250, 107, 167, 107, 1, 0, 100, 158, 56, 56, 65, 8, 6, 23, 37, 34, 118, 85, 17, 97, 236, 107, 219, 9, 40, 43, 10, 10, 4, 5, 24, 23, 23, 69, 48, 8, 3, 72, 2, 104, 250, 80, 2, 102, 253, 154, 2, 80, 67, 67, 173, 92, 69, 166, 71, 69, 90, 5, 1, 2, 8, 253, 152, 128, 1, 5, 50, 34, 35, 77, 31, 40, 89, 37, 37, 50, 1, 0, 1, 0, 146, 0, 0, 4, 159, 5, 176, 0, 35, 0, 0, 65, 55, 33, 7, 33, 3, 33, 19, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 3, 33, 19, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 35, 19, 4, 119, 40, 252, 27, 40, 1, 32, 213, 1, 18, 120, 7, 12, 6, 4, 9, 4, 31, 44, 14, 16, 9, 6, 75, 1, 18, 75, 10, 50, 53, 42, 112, 67, 13, 28, 14, 7, 15, 7, 68, 4, 204, 228, 228, 251, 52, 2, 140, 1, 1, 1, 1, 2, 1, 7, 25, 19, 24, 70, 47, 254, 59, 1, 196, 99, 156, 54, 42, 53, 12, 2, 3, 1, 1, 1, 1, 96, 0, 1, 0, 1, 254, 152, 4, 176, 5, 176, 0, 11, 0, 0, 83, 3, 33, 3, 33, 19, 33, 19, 33, 3, 33, 19, 254, 253, 1, 89, 63, 1, 20, 63, 1, 69, 253, 254, 237, 214, 254, 114, 214, 5, 176, 250, 80, 254, 152, 1, 104, 5, 176, 251, 50, 4, 206, 0, 0, 2, 0, 22, 255, 255, 4, 167, 5, 176, 0, 18, 0, 33, 0, 0, 65, 55, 33, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 3, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 4, 127, 40, 252, 108, 253, 1, 192, 110, 204, 81, 81, 104, 10, 9, 66, 63, 64, 176, 100, 143, 53, 92, 172, 49, 78, 27, 26, 23, 7, 8, 53, 40, 41, 104, 58, 145, 4, 204, 228, 250, 80, 1, 60, 60, 59, 177, 117, 108, 164, 56, 56, 59, 2, 1, 1, 54, 253, 232, 1, 2, 30, 27, 28, 78, 51, 60, 93, 32, 32, 34, 2, 0, 2, 255, 177, 254, 154, 4, 146, 5, 176, 0, 20, 0, 30, 0, 0, 65, 19, 35, 19, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 39, 3, 51, 19, 33, 3, 3, 19, 51, 3, 5, 54, 54, 55, 54, 54, 3, 153, 141, 105, 213, 253, 68, 140, 12, 22, 15, 16, 41, 30, 31, 85, 57, 48, 52, 230, 63, 2, 20, 62, 78, 86, 165, 174, 254, 204, 53, 73, 26, 25, 37, 254, 154, 2, 72, 4, 206, 253, 172, 56, 122, 61, 61, 118, 51, 52, 86, 28, 1, 253, 184, 1, 102, 254, 154, 4, 194, 1, 112, 252, 22, 4, 68, 155, 82, 81, 169, 0, 1, 255, 139, 0, 0, 5, 34, 5, 176, 0, 21, 0, 0, 65, 19, 33, 3, 1, 33, 3, 35, 19, 35, 3, 35, 3, 33, 19, 1, 33, 19, 51, 3, 51, 19, 2, 253, 33, 1, 21, 99, 1, 82, 254, 218, 231, 41, 113, 241, 110, 44, 21, 254, 233, 97, 254, 132, 1, 41, 242, 54, 108, 240, 106, 2, 76, 253, 180, 2, 248, 2, 184, 253, 151, 2, 105, 253, 152, 2, 104, 253, 100, 252, 236, 2, 77, 253, 179, 2, 76, 0, 0, 1, 0, 35, 255, 235, 4, 181, 5, 198, 0, 79, 0, 0, 65, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 7, 23, 22, 22, 23, 22, 22, 3, 23, 26, 21, 7, 8, 59, 42, 43, 103, 51, 46, 79, 29, 29, 32, 1, 254, 239, 3, 73, 65, 64, 173, 97, 100, 200, 84, 86, 118, 8, 5, 32, 36, 22, 59, 37, 52, 95, 38, 37, 48, 5, 8, 72, 66, 66, 175, 94, 95, 190, 77, 77, 103, 8, 1, 18, 9, 49, 35, 35, 85, 45, 43, 80, 29, 28, 30, 6, 7, 48, 36, 37, 94, 52, 178, 38, 205, 27, 49, 21, 18, 31, 2, 66, 26, 79, 54, 56, 82, 26, 26, 25, 1, 1, 27, 25, 25, 73, 48, 1, 104, 158, 53, 53, 55, 2, 1, 44, 52, 53, 168, 120, 68, 119, 47, 28, 47, 17, 24, 62, 40, 40, 100, 61, 106, 153, 50, 49, 47, 2, 2, 50, 51, 52, 156, 104, 1, 46, 70, 24, 23, 23, 1, 1, 22, 23, 23, 70, 48, 56, 80, 26, 26, 25, 1, 220, 1, 1, 8, 8, 6, 18, 0, 0, 1, 0, 3, 0, 0, 4, 180, 5, 176, 0, 9, 0, 0, 65, 1, 19, 33, 3, 33, 1, 3, 33, 19, 3, 155, 253, 216, 159, 254, 238, 253, 1, 24, 2, 40, 159, 1, 19, 253, 5, 176, 252, 111, 3, 145, 250, 80, 3, 144, 252, 112, 5, 176, 0, 1, 255, 196, 0, 0, 4, 196, 5, 176, 0, 30, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 39, 7, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 19, 33, 3, 33, 4, 196, 252, 185, 134, 5, 11, 9, 10, 31, 25, 12, 29, 17, 20, 48, 28, 35, 27, 74, 93, 140, 52, 52, 73, 25, 25, 33, 12, 96, 1, 34, 213, 1, 19, 5, 176, 253, 6, 38, 98, 51, 52, 100, 39, 19, 31, 12, 13, 16, 1, 1, 225, 61, 53, 52, 140, 77, 77, 160, 74, 2, 22, 251, 52, 0, 1, 255, 251, 255, 232, 5, 75, 5, 176, 0, 26, 0, 0, 65, 3, 3, 33, 1, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 1, 33, 2, 106, 42, 136, 254, 228, 1, 50, 42, 18, 43, 25, 32, 77, 47, 36, 71, 34, 42, 53, 105, 55, 79, 131, 54, 54, 88, 36, 2, 193, 254, 203, 2, 177, 1, 0, 1, 255, 251, 231, 64, 30, 49, 18, 22, 23, 1, 1, 16, 12, 220, 13, 20, 1, 1, 45, 40, 39, 110, 65, 4, 157, 0, 0, 1, 0, 1, 254, 161, 4, 162, 5, 176, 0, 11, 0, 0, 83, 3, 33, 3, 51, 19, 35, 19, 33, 3, 33, 19, 254, 253, 3, 74, 61, 255, 118, 183, 214, 254, 236, 213, 254, 128, 214, 5, 176, 250, 80, 254, 161, 2, 64, 4, 207, 251, 50, 4, 206, 0, 0, 1, 0, 213, 0, 0, 4, 211, 5, 176, 0, 25, 0, 0, 65, 33, 3, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 33, 3, 6, 22, 23, 22, 22, 51, 22, 54, 55, 3, 33, 4, 211, 254, 237, 123, 51, 102, 52, 54, 59, 12, 13, 1, 5, 74, 254, 238, 75, 12, 38, 49, 48, 157, 108, 51, 99, 48, 104, 1, 19, 5, 176, 253, 92, 11, 15, 2, 2, 44, 34, 34, 87, 45, 1, 198, 254, 59, 103, 174, 63, 64, 72, 1, 16, 14, 253, 212, 0, 0, 1, 255, 230, 0, 0, 5, 6, 5, 176, 0, 11, 0, 0, 65, 33, 3, 33, 19, 33, 3, 35, 19, 33, 3, 35, 1, 238, 254, 245, 253, 4, 35, 253, 254, 245, 214, 132, 214, 254, 253, 214, 134, 5, 176, 250, 80, 5, 176, 251, 50, 4, 206, 251, 50, 0, 0, 1, 255, 230, 254, 162, 5, 6, 5, 176, 0, 15, 0, 0, 65, 33, 3, 33, 3, 51, 19, 35, 19, 33, 3, 35, 19, 33, 3, 35, 1, 238, 254, 245, 253, 3, 146, 61, 251, 119, 126, 215, 254, 245, 214, 132, 214, 254, 253, 214, 134, 5, 176, 250, 80, 254, 162, 2, 61, 4, 209, 251, 50, 4, 206, 251, 50, 0, 0, 2, 0, 159, 255, 255, 4, 81, 5, 176, 0, 18, 0, 33, 0, 0, 83, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 3, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 198, 39, 244, 215, 1, 119, 103, 187, 72, 72, 91, 9, 8, 55, 55, 56, 159, 96, 70, 101, 140, 99, 45, 62, 18, 18, 12, 5, 7, 36, 29, 32, 90, 56, 73, 5, 176, 217, 251, 41, 1, 57, 57, 56, 167, 108, 99, 157, 55, 54, 59, 3, 1, 2, 72, 252, 215, 1, 2, 31, 26, 27, 71, 42, 49, 80, 28, 32, 35, 1, 2, 0, 0, 3, 255, 223, 255, 254, 4, 243, 5, 176, 0, 16, 0, 31, 0, 35, 0, 0, 65, 19, 33, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 6, 6, 7, 35, 5, 19, 33, 3, 1, 128, 103, 254, 245, 253, 1, 61, 99, 162, 59, 59, 71, 8, 6, 27, 36, 37, 122, 88, 79, 45, 33, 30, 5, 4, 4, 3, 4, 18, 17, 18, 56, 42, 38, 2, 226, 253, 254, 238, 253, 3, 94, 2, 82, 250, 80, 2, 67, 60, 59, 164, 96, 79, 149, 58, 58, 71, 3, 214, 2, 3, 47, 31, 31, 66, 22, 34, 80, 34, 35, 48, 2, 213, 5, 176, 250, 80, 0, 2, 0, 22, 255, 255, 4, 45, 5, 176, 0, 16, 0, 31, 0, 0, 65, 19, 33, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 1, 201, 93, 254, 237, 253, 1, 192, 110, 204, 81, 81, 104, 10, 9, 66, 63, 64, 176, 100, 182, 172, 49, 78, 27, 26, 23, 7, 8, 53, 40, 41, 104, 58, 145, 3, 150, 2, 26, 250, 80, 1, 60, 60, 59, 177, 117, 108, 164, 56, 56, 59, 2, 225, 1, 2, 30, 27, 28, 78, 51, 60, 93, 32, 32, 34, 2, 0, 0, 1, 0, 1, 255, 233, 4, 85, 5, 200, 0, 67, 0, 0, 65, 33, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 37, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 33, 7, 33, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 1, 28, 254, 238, 9, 49, 55, 54, 167, 111, 133, 212, 78, 37, 62, 23, 26, 35, 9, 48, 9, 10, 19, 20, 69, 50, 51, 133, 83, 112, 199, 77, 77, 97, 9, 1, 15, 4, 39, 36, 35, 100, 66, 47, 66, 21, 20, 20, 3, 3, 6, 5, 7, 254, 148, 40, 1, 125, 8, 7, 21, 14, 11, 27, 16, 38, 114, 81, 58, 73, 19, 20, 8, 1, 228, 106, 182, 67, 68, 78, 3, 3, 93, 82, 40, 93, 51, 55, 121, 64, 1, 47, 74, 146, 66, 66, 113, 42, 41, 49, 2, 2, 76, 69, 69, 190, 111, 1, 61, 106, 39, 38, 43, 2, 2, 36, 29, 30, 75, 40, 41, 82, 35, 41, 227, 40, 38, 79, 36, 28, 51, 23, 53, 65, 4, 3, 51, 40, 39, 98, 0, 2, 255, 233, 255, 233, 4, 142, 5, 199, 0, 45, 0, 83, 0, 0, 65, 19, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 35, 19, 35, 3, 51, 19, 51, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 3, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 52, 55, 54, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 4, 62, 71, 7, 2, 8, 8, 37, 34, 34, 100, 70, 72, 111, 43, 43, 61, 21, 22, 27, 8, 20, 85, 111, 244, 252, 243, 106, 84, 14, 7, 4, 6, 6, 34, 32, 31, 95, 69, 74, 116, 45, 44, 65, 23, 23, 29, 168, 76, 3, 5, 6, 6, 19, 15, 16, 46, 32, 25, 28, 5, 6, 3, 3, 8, 1, 76, 2, 6, 5, 5, 17, 15, 14, 42, 30, 28, 32, 8, 7, 1, 2, 3, 8, 1, 252, 1, 185, 55, 121, 58, 58, 105, 40, 40, 49, 2, 2, 45, 39, 40, 106, 59, 60, 124, 57, 128, 2, 123, 250, 80, 2, 92, 97, 52, 118, 58, 58, 107, 41, 41, 51, 2, 2, 43, 39, 38, 105, 60, 59, 127, 2, 24, 254, 1, 22, 58, 31, 31, 60, 23, 23, 27, 2, 2, 34, 26, 25, 63, 30, 29, 50, 14, 1, 255, 19, 56, 31, 30, 60, 24, 24, 28, 1, 2, 32, 24, 25, 60, 29, 30, 52, 0, 2, 255, 107, 0, 0, 4, 137, 5, 177, 0, 19, 0, 34, 0, 0, 97, 33, 19, 37, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 1, 33, 1, 51, 1, 54, 54, 55, 54, 54, 51, 23, 3, 39, 38, 38, 39, 38, 38, 2, 121, 1, 20, 252, 254, 41, 106, 200, 79, 80, 103, 9, 6, 28, 33, 20, 57, 36, 254, 82, 1, 50, 1, 110, 210, 254, 162, 7, 53, 40, 39, 100, 56, 169, 77, 195, 58, 84, 24, 18, 14, 5, 176, 1, 49, 53, 53, 165, 117, 69, 124, 52, 32, 57, 24, 253, 106, 2, 61, 1, 175, 59, 85, 28, 27, 27, 2, 254, 72, 1, 2, 34, 33, 26, 73, 0, 0, 2, 0, 91, 255, 233, 4, 126, 6, 21, 0, 52, 0, 78, 0, 0, 65, 38, 6, 7, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 35, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 7, 23, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 7, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 2, 193, 98, 165, 71, 28, 70, 45, 44, 111, 71, 81, 144, 55, 55, 69, 6, 221, 8, 48, 32, 33, 73, 34, 99, 157, 62, 62, 92, 32, 33, 43, 12, 5, 1, 3, 11, 41, 53, 52, 170, 117, 116, 194, 72, 72, 90, 12, 2, 9, 37, 46, 47, 151, 177, 59, 74, 20, 19, 10, 4, 2, 6, 37, 32, 32, 94, 64, 62, 74, 18, 19, 8, 5, 2, 6, 38, 33, 32, 92, 3, 254, 2, 75, 65, 64, 106, 41, 40, 55, 14, 16, 45, 40, 39, 121, 92, 39, 47, 14, 14, 14, 7, 20, 88, 62, 62, 153, 85, 85, 182, 90, 38, 2, 21, 108, 198, 76, 77, 94, 2, 2, 78, 70, 70, 192, 112, 21, 96, 179, 70, 69, 86, 222, 2, 50, 39, 40, 98, 49, 21, 56, 108, 42, 43, 51, 2, 2, 55, 42, 42, 103, 50, 21, 55, 103, 40, 39, 46, 0, 3, 0, 29, 255, 255, 4, 23, 4, 58, 0, 32, 0, 47, 0, 65, 0, 0, 115, 33, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 37, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 19, 55, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 29, 2, 7, 79, 162, 67, 33, 57, 20, 20, 24, 1, 1, 28, 26, 26, 72, 42, 41, 79, 32, 31, 40, 3, 3, 32, 29, 30, 81, 46, 46, 99, 46, 254, 91, 162, 247, 26, 49, 18, 17, 17, 5, 6, 37, 26, 27, 63, 31, 219, 72, 39, 179, 27, 54, 21, 6, 12, 5, 9, 8, 4, 6, 39, 26, 27, 61, 29, 1, 29, 36, 18, 49, 32, 31, 77, 46, 46, 75, 30, 29, 40, 11, 16, 42, 29, 29, 75, 49, 57, 88, 33, 32, 43, 14, 13, 12, 1, 1, 253, 137, 1, 1, 11, 12, 12, 41, 31, 35, 47, 13, 14, 12, 1, 1, 1, 163, 219, 1, 1, 8, 11, 4, 10, 5, 12, 34, 23, 33, 43, 12, 12, 10, 1, 0, 1, 0, 34, 0, 0, 4, 103, 4, 58, 0, 5, 0, 0, 65, 55, 33, 3, 33, 19, 4, 63, 40, 252, 119, 188, 1, 14, 149, 3, 88, 226, 251, 198, 3, 88, 0, 2, 255, 148, 254, 188, 4, 123, 4, 58, 0, 20, 0, 30, 0, 0, 119, 39, 3, 33, 19, 33, 3, 51, 19, 35, 19, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 1, 55, 51, 3, 5, 54, 54, 55, 54, 54, 66, 99, 75, 1, 0, 57, 2, 120, 57, 252, 115, 150, 149, 253, 4, 69, 7, 14, 10, 11, 32, 25, 25, 73, 1, 213, 24, 225, 108, 254, 201, 36, 53, 20, 20, 29, 221, 3, 253, 220, 1, 68, 254, 188, 2, 35, 3, 91, 254, 146, 37, 98, 53, 53, 105, 42, 43, 58, 1, 233, 133, 253, 142, 3, 55, 121, 63, 63, 130, 0, 1, 255, 179, 0, 0, 4, 207, 4, 58, 0, 21, 0, 0, 65, 19, 33, 3, 1, 33, 3, 35, 19, 35, 3, 35, 3, 33, 19, 1, 33, 19, 51, 3, 51, 19, 2, 219, 54, 1, 3, 117, 1, 48, 254, 228, 194, 38, 76, 235, 76, 40, 47, 254, 248, 120, 254, 186, 1, 23, 194, 49, 78, 236, 76, 1, 154, 254, 102, 2, 55, 2, 3, 254, 101, 1, 155, 254, 102, 1, 154, 254, 19, 253, 179, 1, 155, 254, 101, 1, 154, 0, 0, 1, 0, 59, 255, 235, 4, 77, 4, 78, 0, 88, 0, 0, 65, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 33, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 37, 54, 54, 55, 54, 54, 51, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 7, 2, 80, 17, 37, 18, 14, 28, 12, 27, 30, 7, 7, 52, 35, 36, 80, 34, 32, 70, 29, 30, 38, 254, 246, 77, 63, 63, 157, 80, 53, 119, 59, 58, 107, 42, 41, 52, 3, 3, 36, 34, 19, 47, 27, 40, 78, 32, 31, 41, 3, 3, 36, 33, 33, 90, 50, 50, 104, 47, 74, 158, 66, 83, 110, 6, 1, 17, 9, 47, 32, 31, 72, 33, 27, 62, 26, 9, 17, 7, 11, 10, 4, 6, 48, 33, 33, 74, 33, 185, 33, 1, 203, 1, 2, 4, 2, 8, 6, 14, 50, 41, 41, 54, 16, 17, 13, 12, 15, 15, 50, 39, 91, 128, 41, 41, 39, 1, 1, 12, 16, 15, 51, 38, 37, 101, 65, 55, 90, 33, 18, 30, 11, 17, 45, 29, 29, 75, 48, 60, 91, 34, 34, 46, 14, 14, 13, 1, 1, 29, 32, 41, 131, 98, 1, 36, 47, 14, 13, 10, 1, 11, 13, 6, 12, 8, 13, 34, 22, 39, 50, 14, 14, 10, 1, 1, 185, 0, 0, 1, 0, 13, 0, 0, 4, 112, 4, 58, 0, 9, 0, 0, 65, 1, 19, 33, 3, 33, 1, 3, 33, 19, 3, 90, 254, 8, 118, 254, 241, 188, 1, 22, 1, 248, 118, 1, 15, 188, 4, 58, 253, 94, 2, 162, 251, 198, 2, 162, 253, 94, 4, 58, 0, 1, 0, 24, 0, 0, 4, 229, 4, 58, 0, 12, 0, 0, 65, 19, 33, 1, 1, 37, 1, 35, 19, 33, 3, 33, 19, 2, 19, 207, 1, 86, 254, 199, 1, 230, 254, 155, 254, 157, 130, 73, 254, 240, 188, 1, 16, 70, 1, 149, 254, 107, 2, 37, 2, 20, 1, 254, 98, 1, 158, 251, 198, 1, 149, 0, 0, 1, 255, 195, 255, 254, 4, 111, 4, 58, 0, 27, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 39, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 33, 3, 33, 4, 111, 252, 196, 77, 6, 11, 9, 9, 31, 24, 25, 73, 51, 29, 23, 54, 91, 141, 53, 52, 74, 26, 26, 34, 11, 39, 1, 28, 149, 1, 16, 4, 58, 254, 51, 38, 89, 44, 44, 81, 31, 31, 37, 1, 1, 228, 2, 48, 44, 44, 119, 70, 70, 152, 76, 235, 252, 168, 0, 0, 1, 0, 5, 0, 0, 4, 137, 4, 58, 0, 12, 0, 0, 65, 3, 33, 3, 51, 19, 19, 51, 19, 3, 51, 19, 33, 2, 30, 15, 254, 178, 188, 240, 104, 50, 182, 253, 102, 241, 188, 254, 170, 1, 79, 2, 235, 251, 198, 2, 84, 253, 172, 2, 70, 253, 186, 4, 58, 0, 0, 1, 0, 13, 0, 0, 4, 111, 4, 58, 0, 11, 0, 0, 97, 19, 33, 3, 33, 19, 33, 3, 33, 19, 33, 3, 3, 179, 188, 254, 240, 76, 254, 122, 76, 254, 240, 188, 1, 16, 73, 1, 134, 73, 4, 58, 254, 74, 1, 182, 251, 198, 1, 164, 254, 92, 0, 1, 0, 13, 0, 0, 4, 112, 4, 58, 0, 7, 0, 0, 97, 19, 33, 3, 33, 19, 33, 3, 3, 180, 188, 252, 89, 188, 1, 16, 149, 1, 135, 149, 4, 58, 251, 198, 3, 88, 252, 168, 0, 1, 0, 134, 0, 0, 4, 227, 4, 58, 0, 7, 0, 0, 65, 55, 33, 7, 33, 3, 33, 19, 4, 188, 39, 251, 203, 40, 1, 145, 149, 1, 16, 150, 3, 91, 223, 223, 252, 165, 3, 91, 0, 3, 0, 33, 254, 96, 4, 114, 6, 0, 0, 31, 0, 45, 0, 59, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 3, 33, 19, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 19, 33, 3, 6, 6, 7, 6, 6, 1, 19, 22, 22, 23, 22, 20, 7, 7, 6, 6, 7, 6, 6, 3, 3, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 44, 2, 9, 29, 39, 39, 128, 91, 78, 1, 18, 77, 105, 171, 63, 63, 80, 13, 2, 9, 28, 39, 40, 130, 91, 84, 254, 238, 84, 105, 170, 62, 63, 79, 2, 91, 121, 37, 42, 9, 9, 6, 3, 9, 36, 28, 25, 68, 196, 120, 36, 40, 8, 9, 1, 5, 3, 8, 34, 26, 25, 68, 2, 33, 21, 89, 168, 70, 71, 104, 25, 254, 99, 1, 153, 19, 95, 70, 70, 180, 105, 22, 90, 169, 72, 71, 105, 25, 1, 194, 254, 64, 20, 96, 70, 71, 181, 254, 90, 2, 107, 24, 68, 39, 39, 84, 40, 20, 53, 94, 40, 36, 59, 2, 86, 253, 152, 24, 67, 38, 38, 83, 40, 21, 52, 93, 39, 37, 61, 0, 0, 1, 0, 13, 254, 191, 4, 88, 4, 58, 0, 11, 0, 0, 83, 3, 33, 3, 51, 19, 35, 19, 33, 3, 33, 19, 201, 188, 3, 22, 56, 251, 114, 154, 149, 254, 240, 149, 254, 150, 149, 4, 58, 251, 198, 254, 191, 2, 31, 3, 92, 252, 165, 3, 91, 0, 0, 1, 0, 137, 0, 0, 4, 148, 4, 58, 0, 25, 0, 0, 97, 19, 33, 3, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 3, 6, 22, 23, 22, 22, 51, 22, 54, 55, 3, 3, 216, 188, 254, 240, 94, 53, 104, 54, 49, 71, 22, 23, 17, 6, 55, 254, 241, 55, 11, 58, 60, 59, 167, 98, 51, 100, 50, 68, 4, 58, 254, 3, 9, 12, 2, 1, 21, 22, 22, 70, 51, 1, 85, 254, 172, 106, 155, 51, 51, 50, 1, 11, 11, 254, 162, 0, 1, 255, 232, 0, 0, 4, 177, 4, 58, 0, 11, 0, 0, 65, 33, 3, 33, 19, 33, 3, 35, 19, 35, 3, 35, 1, 171, 254, 249, 188, 4, 13, 188, 254, 249, 150, 127, 149, 255, 150, 127, 4, 58, 251, 198, 4, 58, 252, 165, 3, 91, 252, 165, 0, 1, 255, 228, 254, 191, 4, 173, 4, 58, 0, 15, 0, 0, 65, 33, 3, 33, 3, 51, 19, 35, 19, 33, 3, 35, 19, 35, 3, 35, 1, 167, 254, 249, 188, 3, 139, 56, 221, 113, 110, 150, 254, 249, 150, 127, 149, 255, 150, 127, 4, 58, 251, 198, 254, 191, 2, 31, 3, 92, 252, 165, 3, 91, 252, 165, 0, 2, 0, 99, 255, 255, 4, 79, 4, 58, 0, 18, 0, 33, 0, 0, 83, 7, 33, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 3, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 138, 39, 1, 0, 150, 1, 167, 84, 165, 66, 66, 85, 5, 4, 62, 54, 55, 141, 74, 119, 69, 106, 148, 26, 46, 17, 16, 15, 4, 6, 35, 26, 26, 62, 33, 121, 4, 58, 217, 252, 159, 1, 43, 45, 45, 138, 94, 84, 121, 39, 39, 39, 2, 1, 1, 137, 253, 158, 1, 2, 14, 14, 14, 42, 29, 35, 52, 17, 18, 18, 1, 1, 0, 3, 255, 247, 255, 255, 4, 174, 4, 58, 0, 16, 0, 20, 0, 35, 0, 0, 65, 19, 35, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 1, 19, 33, 3, 1, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 35, 1, 108, 67, 251, 189, 1, 57, 84, 148, 56, 56, 68, 6, 5, 44, 43, 44, 123, 75, 2, 101, 187, 254, 238, 188, 254, 120, 41, 34, 41, 10, 10, 3, 4, 4, 19, 14, 20, 63, 42, 33, 2, 183, 1, 131, 251, 198, 1, 48, 47, 46, 137, 87, 77, 122, 42, 42, 45, 2, 253, 74, 4, 58, 251, 198, 1, 249, 1, 3, 24, 20, 20, 52, 30, 28, 45, 17, 24, 25, 2, 0, 2, 0, 29, 255, 255, 4, 54, 4, 58, 0, 16, 0, 31, 0, 0, 65, 19, 33, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 5, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 1, 169, 63, 254, 241, 188, 2, 38, 86, 171, 70, 70, 91, 6, 5, 63, 56, 56, 149, 80, 254, 225, 1, 21, 31, 56, 20, 19, 18, 6, 6, 42, 29, 30, 70, 35, 251, 2, 206, 1, 108, 251, 198, 1, 41, 45, 44, 138, 97, 90, 131, 43, 43, 44, 2, 222, 1, 1, 15, 15, 16, 49, 35, 39, 54, 16, 17, 15, 1, 1, 0, 1, 0, 66, 255, 233, 4, 51, 4, 79, 0, 56, 0, 0, 65, 22, 22, 23, 22, 22, 7, 33, 7, 37, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 39, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 54, 54, 55, 54, 54, 2, 109, 55, 73, 21, 20, 14, 4, 254, 206, 31, 1, 65, 17, 46, 34, 34, 91, 61, 45, 69, 23, 21, 22, 1, 253, 3, 57, 55, 55, 155, 94, 123, 202, 75, 74, 93, 14, 3, 9, 18, 25, 21, 65, 41, 51, 133, 83, 80, 159, 65, 82, 111, 8, 254, 9, 44, 32, 31, 77, 3, 110, 2, 40, 33, 34, 88, 49, 174, 1, 52, 95, 35, 36, 41, 2, 2, 30, 26, 26, 70, 42, 1, 96, 153, 54, 54, 60, 2, 3, 83, 74, 74, 202, 117, 31, 80, 147, 63, 51, 87, 32, 39, 44, 1, 1, 43, 38, 51, 157, 104, 2, 42, 62, 21, 21, 21, 0, 2, 255, 204, 255, 232, 4, 132, 4, 80, 0, 43, 0, 81, 0, 0, 65, 19, 33, 3, 33, 19, 55, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 23, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 1, 77, 78, 254, 237, 188, 1, 26, 74, 88, 6, 2, 4, 4, 26, 21, 37, 128, 93, 105, 154, 53, 27, 43, 15, 15, 19, 6, 16, 6, 2, 11, 11, 45, 35, 36, 102, 67, 68, 111, 44, 44, 69, 25, 26, 37, 12, 243, 14, 2, 7, 7, 7, 21, 16, 16, 46, 31, 27, 32, 8, 8, 4, 1, 2, 6, 1, 14, 3, 7, 7, 7, 21, 16, 16, 45, 31, 27, 32, 8, 8, 4, 2, 1, 6, 2, 115, 1, 199, 251, 198, 1, 172, 1, 36, 71, 34, 44, 83, 36, 64, 80, 2, 3, 89, 73, 37, 88, 46, 42, 87, 43, 118, 55, 117, 56, 55, 98, 38, 37, 45, 2, 2, 37, 33, 34, 93, 53, 53, 116, 57, 148, 119, 21, 59, 33, 32, 64, 26, 25, 29, 1, 1, 35, 26, 27, 65, 31, 32, 54, 16, 119, 21, 59, 32, 33, 64, 25, 26, 30, 2, 1, 35, 27, 26, 65, 32, 31, 54, 0, 0, 2, 255, 219, 0, 0, 4, 133, 4, 59, 0, 19, 0, 34, 0, 0, 65, 37, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 1, 33, 1, 51, 3, 33, 1, 54, 54, 55, 54, 54, 55, 23, 3, 37, 38, 38, 39, 38, 38, 4, 133, 253, 234, 86, 170, 69, 69, 90, 6, 3, 31, 32, 17, 44, 26, 254, 195, 1, 35, 1, 18, 236, 67, 1, 16, 253, 200, 6, 41, 30, 29, 70, 35, 235, 50, 254, 243, 29, 50, 18, 18, 17, 4, 58, 1, 43, 45, 45, 139, 96, 58, 106, 43, 22, 39, 16, 254, 81, 1, 123, 254, 133, 2, 195, 38, 57, 19, 18, 20, 1, 1, 254, 228, 1, 1, 18, 17, 16, 47, 0, 0, 1, 0, 22, 254, 71, 4, 58, 6, 0, 0, 61, 0, 0, 65, 55, 35, 55, 33, 7, 35, 7, 51, 3, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 51, 7, 6, 6, 7, 6, 6, 35, 6, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 35, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 2, 213, 32, 229, 32, 254, 241, 29, 176, 32, 177, 207, 1, 15, 138, 25, 54, 30, 25, 55, 30, 49, 64, 18, 18, 9, 5, 111, 4, 7, 5, 22, 18, 18, 54, 37, 25, 49, 24, 38, 36, 71, 38, 93, 145, 52, 52, 64, 12, 85, 5, 31, 9, 23, 36, 37, 129, 96, 51, 92, 40, 38, 66, 29, 49, 4, 166, 180, 166, 166, 180, 251, 90, 3, 14, 24, 38, 12, 10, 10, 1, 2, 34, 29, 30, 77, 45, 253, 110, 42, 32, 63, 25, 25, 30, 1, 9, 7, 218, 9, 10, 1, 1, 59, 53, 53, 147, 88, 1, 254, 186, 85, 160, 63, 62, 76, 1, 1, 27, 23, 23, 62, 37, 1, 3, 0, 0, 1, 0, 86, 255, 233, 4, 39, 4, 81, 0, 59, 0, 0, 101, 38, 38, 39, 38, 38, 39, 38, 38, 55, 33, 55, 33, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 2, 9, 52, 65, 18, 9, 11, 3, 4, 3, 1, 1, 45, 31, 254, 200, 11, 40, 32, 31, 89, 59, 43, 64, 21, 21, 18, 3, 255, 5, 53, 52, 53, 150, 93, 120, 197, 73, 73, 90, 14, 3, 6, 7, 13, 10, 34, 23, 51, 167, 117, 87, 169, 69, 68, 88, 5, 254, 6, 41, 29, 30, 73, 201, 1, 44, 34, 16, 37, 19, 22, 45, 23, 176, 50, 95, 37, 36, 44, 2, 2, 31, 26, 26, 71, 40, 1, 93, 153, 56, 55, 62, 2, 3, 86, 75, 76, 202, 113, 31, 60, 115, 52, 41, 75, 33, 75, 90, 2, 2, 53, 51, 51, 147, 92, 2, 40, 64, 21, 22, 22, 0, 0, 2, 255, 181, 255, 254, 4, 142, 4, 58, 0, 40, 0, 55, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 39, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 3, 118, 253, 140, 77, 4, 11, 9, 10, 29, 22, 22, 61, 42, 19, 27, 44, 86, 130, 49, 48, 68, 24, 23, 29, 11, 40, 105, 148, 1, 15, 87, 160, 62, 62, 79, 6, 5, 48, 46, 39, 104, 61, 50, 27, 6, 32, 44, 10, 8, 4, 4, 4, 17, 13, 20, 49, 38, 9, 4, 58, 254, 51, 29, 79, 43, 43, 83, 33, 33, 40, 1, 1, 240, 2, 53, 46, 46, 123, 70, 69, 147, 69, 235, 252, 168, 1, 47, 48, 47, 141, 92, 81, 128, 45, 38, 51, 6, 5, 219, 1, 5, 26, 21, 15, 39, 24, 25, 43, 17, 28, 36, 8, 2, 0, 2, 255, 240, 255, 255, 4, 88, 4, 58, 0, 24, 0, 39, 0, 0, 65, 19, 33, 3, 33, 19, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 35, 19, 33, 3, 23, 51, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 35, 1, 115, 73, 254, 239, 187, 1, 16, 77, 118, 77, 1, 41, 86, 153, 59, 59, 73, 6, 5, 45, 44, 45, 129, 78, 5, 68, 254, 239, 73, 252, 13, 28, 35, 10, 10, 4, 3, 4, 24, 19, 19, 53, 33, 5, 2, 153, 1, 161, 251, 198, 1, 186, 254, 70, 1, 49, 48, 48, 140, 90, 79, 130, 46, 46, 52, 2, 1, 97, 254, 95, 157, 3, 22, 18, 18, 46, 25, 31, 56, 21, 22, 26, 1, 0, 1, 0, 32, 0, 0, 4, 68, 6, 0, 0, 39, 0, 0, 65, 55, 33, 55, 33, 7, 35, 7, 51, 3, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 33, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 19, 3, 1, 32, 254, 251, 30, 254, 241, 27, 144, 32, 145, 209, 1, 15, 138, 26, 56, 31, 24, 53, 29, 49, 64, 18, 18, 9, 5, 111, 1, 16, 109, 9, 23, 36, 37, 129, 96, 54, 97, 42, 34, 62, 27, 51, 4, 177, 180, 155, 155, 180, 251, 79, 3, 14, 25, 39, 12, 9, 9, 1, 2, 34, 29, 30, 77, 45, 253, 110, 2, 143, 85, 160, 63, 62, 76, 1, 1, 30, 26, 22, 59, 35, 1, 14, 0, 0, 1, 0, 13, 254, 154, 4, 112, 4, 58, 0, 11, 0, 0, 65, 33, 3, 33, 3, 33, 19, 33, 19, 33, 3, 33, 1, 217, 254, 240, 188, 1, 77, 63, 1, 16, 62, 1, 75, 188, 254, 240, 149, 254, 121, 4, 58, 251, 198, 254, 154, 1, 102, 4, 58, 252, 165, 0, 0, 1, 0, 29, 255, 233, 5, 25, 5, 176, 0, 74, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 54, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 5, 25, 254, 183, 1, 4, 2, 3, 7, 5, 11, 36, 28, 30, 29, 5, 3, 2, 1, 1, 2, 181, 253, 183, 1, 4, 2, 3, 9, 6, 12, 38, 30, 29, 26, 4, 2, 2, 2, 2, 183, 253, 181, 7, 3, 8, 6, 24, 17, 35, 115, 83, 46, 77, 32, 18, 34, 15, 10, 25, 15, 29, 78, 45, 86, 131, 47, 30, 45, 14, 8, 12, 3, 5, 176, 251, 192, 10, 24, 14, 13, 29, 13, 26, 36, 1, 1, 36, 26, 12, 26, 13, 14, 26, 10, 4, 64, 251, 192, 10, 23, 12, 15, 31, 13, 26, 35, 1, 1, 38, 26, 11, 24, 12, 15, 27, 11, 4, 63, 251, 212, 43, 92, 36, 31, 59, 25, 55, 67, 1, 1, 30, 26, 15, 35, 20, 20, 35, 13, 27, 29, 1, 2, 64, 55, 35, 87, 47, 26, 53, 27, 0, 1, 0, 27, 255, 233, 4, 191, 4, 58, 0, 74, 0, 0, 65, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 38, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 4, 191, 247, 114, 3, 7, 10, 5, 15, 9, 9, 23, 14, 15, 22, 7, 9, 9, 2, 4, 4, 3, 113, 253, 113, 3, 11, 12, 5, 12, 8, 11, 31, 20, 19, 22, 6, 4, 4, 4, 3, 113, 247, 115, 8, 19, 31, 15, 43, 28, 28, 70, 43, 38, 65, 28, 27, 48, 21, 13, 37, 25, 25, 64, 36, 48, 81, 33, 30, 50, 21, 44, 50, 11, 4, 58, 253, 78, 20, 65, 31, 16, 29, 11, 9, 10, 11, 9, 11, 29, 17, 30, 64, 20, 2, 178, 253, 78, 23, 67, 30, 13, 22, 9, 13, 15, 1, 1, 23, 18, 12, 30, 16, 27, 50, 14, 2, 178, 253, 79, 72, 146, 59, 29, 50, 18, 19, 20, 1, 1, 21, 18, 18, 50, 29, 31, 49, 17, 18, 19, 1, 2, 20, 20, 16, 47, 28, 59, 150, 77, 0, 0, 2, 0, 86, 255, 255, 4, 51, 6, 26, 0, 24, 0, 39, 0, 0, 65, 55, 33, 19, 33, 3, 35, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 19, 3, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 3, 34, 32, 254, 254, 54, 254, 239, 53, 157, 31, 157, 187, 1, 237, 85, 171, 70, 69, 90, 6, 5, 64, 56, 57, 148, 78, 191, 64, 102, 219, 28, 55, 20, 20, 21, 5, 6, 42, 29, 30, 70, 34, 193, 4, 52, 180, 1, 50, 254, 206, 180, 251, 204, 1, 40, 44, 44, 137, 97, 88, 128, 42, 42, 41, 2, 1, 1, 115, 253, 174, 1, 1, 13, 14, 14, 45, 34, 39, 53, 16, 16, 14, 1, 1, 0, 0, 1, 255, 206, 255, 234, 4, 205, 5, 199, 0, 84, 0, 0, 65, 19, 35, 3, 51, 19, 55, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 54, 54, 55, 55, 23, 55, 7, 55, 54, 54, 55, 54, 54, 55, 54, 54, 51, 22, 22, 23, 22, 22, 23, 22, 6, 7, 51, 54, 52, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 1, 98, 103, 255, 252, 254, 107, 106, 4, 13, 10, 7, 6, 39, 37, 36, 111, 78, 105, 152, 51, 50, 55, 8, 242, 4, 7, 6, 7, 20, 15, 15, 43, 30, 35, 38, 8, 8, 1, 5, 5, 13, 4, 4, 198, 43, 215, 5, 4, 8, 6, 8, 24, 19, 18, 54, 38, 24, 33, 11, 10, 11, 3, 6, 7, 2, 244, 7, 10, 11, 43, 36, 36, 102, 70, 82, 127, 48, 48, 70, 25, 22, 32, 13, 10, 3, 93, 2, 83, 250, 80, 2, 108, 2, 18, 59, 137, 68, 69, 127, 49, 50, 61, 3, 3, 84, 70, 70, 179, 91, 1, 21, 53, 27, 27, 51, 20, 20, 23, 1, 1, 46, 35, 35, 86, 41, 41, 69, 20, 18, 2, 241, 1, 31, 23, 57, 30, 40, 81, 33, 32, 39, 1, 17, 15, 13, 33, 18, 40, 86, 29, 57, 119, 55, 55, 98, 37, 36, 44, 2, 2, 55, 47, 48, 126, 69, 58, 120, 55, 41, 0, 0, 1, 255, 226, 255, 234, 4, 150, 4, 84, 0, 75, 0, 0, 65, 55, 35, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 21, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 35, 19, 33, 3, 33, 19, 55, 7, 6, 20, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 55, 3, 80, 32, 186, 5, 3, 8, 5, 4, 10, 6, 16, 51, 41, 32, 33, 7, 7, 1, 248, 3, 27, 34, 35, 118, 87, 103, 151, 53, 32, 50, 19, 11, 19, 8, 7, 79, 78, 254, 251, 188, 1, 5, 78, 97, 2, 3, 3, 5, 26, 22, 38, 132, 96, 82, 131, 48, 48, 60, 9, 248, 5, 17, 13, 13, 39, 27, 25, 30, 8, 8, 4, 1, 1, 3, 2, 3, 1, 197, 185, 23, 15, 34, 17, 14, 28, 13, 36, 49, 1, 1, 32, 23, 24, 55, 23, 78, 143, 54, 54, 66, 2, 3, 81, 66, 40, 93, 49, 28, 58, 29, 26, 1, 189, 251, 197, 1, 197, 1, 17, 32, 63, 31, 47, 89, 39, 68, 85, 3, 2, 57, 50, 50, 136, 76, 1, 22, 46, 18, 19, 23, 1, 1, 27, 21, 20, 52, 26, 18, 33, 13, 23, 0, 2, 255, 159, 0, 0, 4, 114, 5, 176, 0, 11, 0, 16, 0, 0, 65, 19, 33, 3, 33, 1, 33, 19, 51, 3, 51, 19, 39, 19, 55, 23, 19, 3, 41, 57, 1, 16, 225, 254, 234, 253, 36, 1, 39, 204, 74, 73, 234, 72, 212, 163, 58, 16, 44, 1, 166, 254, 90, 5, 176, 250, 80, 1, 166, 254, 90, 1, 166, 201, 1, 80, 120, 120, 254, 176, 0, 2, 255, 221, 0, 0, 4, 37, 4, 58, 0, 11, 0, 16, 0, 0, 65, 19, 33, 3, 33, 1, 33, 19, 51, 3, 51, 19, 39, 55, 55, 23, 19, 2, 239, 48, 1, 6, 224, 254, 238, 253, 170, 1, 31, 140, 76, 48, 188, 46, 168, 125, 52, 6, 45, 1, 15, 254, 241, 4, 58, 251, 198, 1, 15, 254, 241, 1, 15, 184, 242, 118, 95, 254, 247, 0, 0, 2, 255, 231, 0, 0, 4, 47, 5, 176, 0, 19, 0, 24, 0, 0, 65, 19, 51, 3, 35, 1, 35, 19, 35, 3, 51, 19, 51, 3, 51, 19, 51, 3, 51, 19, 39, 19, 55, 21, 3, 3, 88, 3, 212, 48, 215, 254, 184, 175, 142, 219, 253, 220, 77, 131, 176, 228, 165, 41, 82, 156, 80, 126, 130, 36, 1, 1, 185, 254, 71, 5, 176, 252, 203, 3, 53, 250, 80, 1, 184, 254, 72, 1, 186, 254, 70, 1, 186, 193, 1, 97, 99, 99, 254, 159, 0, 2, 255, 231, 0, 0, 4, 46, 4, 58, 0, 19, 0, 24, 0, 0, 65, 19, 51, 3, 35, 1, 35, 19, 35, 3, 51, 19, 51, 3, 51, 19, 51, 3, 51, 19, 39, 55, 55, 23, 23, 3, 70, 22, 210, 112, 216, 254, 212, 169, 110, 220, 188, 220, 46, 109, 125, 231, 121, 51, 51, 165, 50, 131, 101, 37, 6, 15, 1, 5, 254, 251, 4, 58, 253, 141, 2, 115, 251, 198, 1, 4, 254, 252, 1, 6, 254, 250, 1, 5, 194, 221, 81, 81, 221, 0, 0, 2, 255, 196, 0, 0, 5, 2, 5, 176, 0, 39, 0, 44, 0, 0, 65, 1, 33, 19, 7, 6, 6, 7, 6, 6, 7, 3, 33, 19, 54, 54, 55, 54, 54, 51, 51, 3, 33, 19, 23, 22, 22, 23, 22, 22, 7, 3, 33, 19, 54, 38, 39, 38, 38, 39, 3, 3, 7, 39, 3, 3, 99, 1, 159, 251, 237, 192, 15, 72, 121, 47, 70, 85, 15, 66, 1, 18, 67, 8, 30, 25, 19, 50, 32, 37, 101, 1, 17, 103, 22, 34, 39, 9, 8, 1, 4, 67, 1, 19, 65, 7, 23, 33, 32, 107, 76, 28, 138, 44, 19, 62, 3, 9, 2, 167, 253, 96, 1, 6, 36, 31, 46, 153, 109, 254, 110, 1, 146, 42, 64, 20, 14, 16, 253, 210, 2, 43, 1, 3, 25, 20, 20, 53, 30, 254, 109, 1, 146, 75, 130, 50, 48, 62, 9, 1, 194, 254, 253, 82, 82, 1, 3, 0, 0, 2, 255, 215, 0, 0, 4, 168, 4, 58, 0, 39, 0, 43, 0, 0, 99, 33, 55, 54, 54, 55, 54, 54, 51, 51, 3, 33, 19, 23, 22, 22, 23, 22, 6, 7, 7, 33, 55, 54, 38, 39, 38, 38, 39, 39, 1, 33, 19, 7, 6, 6, 7, 6, 6, 7, 1, 3, 35, 3, 41, 1, 15, 38, 5, 16, 15, 14, 47, 35, 22, 74, 1, 15, 75, 18, 29, 26, 4, 3, 5, 3, 37, 1, 16, 37, 6, 13, 24, 22, 78, 58, 20, 1, 107, 252, 4, 175, 16, 76, 114, 41, 43, 52, 10, 2, 255, 172, 2, 79, 238, 30, 59, 23, 22, 29, 254, 111, 1, 142, 1, 3, 34, 23, 23, 53, 21, 240, 238, 62, 118, 49, 45, 68, 15, 5, 1, 226, 254, 39, 2, 12, 57, 45, 47, 128, 81, 2, 145, 254, 244, 1, 12, 0, 0, 2, 255, 204, 0, 0, 5, 31, 5, 176, 0, 48, 0, 51, 0, 0, 65, 39, 1, 33, 19, 33, 19, 35, 3, 51, 19, 55, 6, 6, 7, 6, 6, 7, 3, 51, 19, 54, 54, 55, 54, 54, 55, 51, 3, 51, 19, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 3, 51, 19, 54, 38, 39, 38, 38, 11, 2, 3, 210, 11, 1, 88, 253, 0, 105, 254, 168, 114, 218, 252, 218, 102, 104, 4, 6, 3, 15, 20, 7, 67, 205, 76, 5, 16, 14, 13, 43, 32, 19, 106, 206, 107, 15, 15, 20, 6, 4, 5, 1, 2, 6, 3, 64, 209, 76, 6, 11, 22, 21, 75, 71, 131, 36, 3, 18, 2, 2, 156, 253, 108, 2, 148, 250, 80, 2, 83, 2, 7, 14, 7, 32, 68, 35, 254, 78, 1, 179, 27, 54, 23, 22, 29, 2, 253, 176, 2, 77, 1, 2, 14, 10, 8, 17, 10, 23, 49, 19, 254, 76, 1, 179, 57, 116, 49, 47, 68, 1, 221, 254, 235, 1, 21, 0, 2, 255, 209, 0, 0, 4, 221, 4, 58, 0, 41, 0, 44, 0, 0, 65, 19, 35, 3, 51, 19, 55, 6, 6, 7, 3, 51, 19, 54, 54, 55, 54, 54, 55, 51, 3, 51, 19, 51, 50, 22, 23, 22, 6, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 1, 33, 19, 1, 7, 39, 1, 21, 83, 219, 188, 219, 72, 119, 20, 27, 7, 39, 208, 50, 4, 15, 13, 12, 41, 30, 5, 76, 208, 72, 2, 16, 36, 4, 2, 5, 3, 35, 208, 47, 8, 11, 19, 19, 70, 56, 1, 32, 253, 22, 109, 1, 47, 118, 38, 2, 92, 1, 222, 251, 198, 1, 159, 2, 38, 77, 42, 254, 252, 1, 5, 25, 53, 22, 22, 29, 1, 254, 99, 1, 155, 32, 29, 21, 46, 21, 254, 250, 1, 6, 45, 112, 45, 45, 68, 15, 1, 234, 254, 34, 1, 51, 223, 223, 0, 0, 2, 0, 18, 254, 65, 4, 89, 7, 118, 0, 86, 0, 95, 0, 0, 65, 39, 7, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 23, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 19, 39, 39, 7, 23, 51, 37, 53, 7, 2, 28, 134, 41, 154, 39, 71, 28, 18, 29, 10, 17, 13, 6, 8, 52, 37, 38, 93, 48, 60, 73, 134, 52, 53, 65, 4, 3, 34, 34, 34, 100, 63, 93, 24, 44, 16, 17, 17, 5, 4, 28, 20, 19, 49, 25, 56, 62, 121, 54, 35, 66, 29, 74, 94, 8, 4, 28, 30, 26, 75, 48, 58, 99, 37, 37, 45, 5, 7, 73, 63, 64, 168, 88, 244, 40, 1, 17, 40, 72, 26, 26, 25, 6, 7, 49, 36, 37, 91, 122, 118, 224, 1, 255, 171, 1, 64, 238, 3, 93, 1, 232, 1, 2, 15, 16, 8, 26, 16, 25, 67, 42, 52, 76, 25, 25, 24, 1, 1, 34, 36, 36, 115, 80, 66, 114, 46, 46, 67, 19, 170, 11, 28, 18, 18, 46, 30, 28, 39, 13, 12, 12, 1, 1, 20, 20, 13, 35, 21, 54, 165, 110, 61, 105, 43, 37, 59, 20, 24, 63, 42, 42, 105, 66, 102, 140, 44, 44, 40, 2, 1, 230, 1, 1, 18, 19, 20, 63, 45, 53, 74, 24, 24, 23, 3, 154, 125, 2, 24, 250, 251, 23, 3, 0, 0, 2, 0, 54, 254, 79, 4, 74, 5, 248, 0, 92, 0, 101, 0, 0, 65, 39, 7, 23, 50, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 55, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 23, 50, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 39, 7, 5, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 19, 39, 39, 7, 23, 51, 37, 53, 7, 2, 17, 147, 32, 168, 30, 74, 31, 15, 26, 8, 8, 5, 3, 8, 54, 36, 36, 82, 34, 53, 66, 125, 49, 49, 61, 3, 2, 34, 33, 32, 90, 53, 91, 23, 41, 14, 15, 14, 5, 5, 31, 23, 22, 52, 26, 49, 53, 111, 54, 53, 95, 36, 36, 45, 2, 1, 25, 23, 23, 64, 37, 42, 76, 30, 29, 36, 3, 4, 39, 32, 33, 88, 49, 50, 102, 46, 244, 36, 1, 17, 26, 64, 26, 17, 26, 6, 3, 2, 2, 6, 44, 31, 31, 73, 131, 118, 224, 1, 255, 171, 1, 64, 238, 2, 113, 1, 177, 1, 9, 13, 7, 20, 14, 12, 33, 20, 42, 53, 15, 15, 12, 1, 30, 32, 33, 104, 74, 60, 106, 44, 44, 68, 22, 156, 12, 28, 19, 18, 46, 29, 29, 39, 12, 12, 11, 1, 1, 14, 17, 16, 51, 38, 37, 98, 63, 42, 69, 28, 28, 42, 14, 19, 47, 31, 31, 78, 50, 60, 87, 32, 32, 42, 13, 12, 11, 1, 1, 204, 1, 1, 8, 11, 8, 22, 16, 9, 22, 13, 41, 53, 16, 17, 14, 3, 7, 125, 2, 24, 250, 251, 23, 3, 0, 0, 3, 0, 71, 255, 234, 4, 136, 5, 198, 0, 37, 0, 58, 0, 79, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 38, 54, 55, 55, 1, 22, 22, 23, 22, 6, 7, 7, 33, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 4, 93, 33, 10, 8, 18, 19, 68, 51, 52, 137, 88, 91, 154, 63, 63, 100, 36, 37, 49, 12, 33, 10, 6, 17, 17, 64, 50, 49, 135, 87, 92, 156, 65, 65, 103, 39, 38, 50, 254, 251, 4, 7, 22, 17, 18, 50, 33, 34, 86, 54, 51, 65, 19, 19, 16, 1, 7, 5, 4, 1, 218, 21, 20, 3, 2, 6, 5, 2, 254, 33, 1, 6, 20, 16, 15, 46, 32, 31, 85, 54, 51, 68, 2, 110, 211, 76, 154, 71, 70, 123, 47, 46, 54, 2, 2, 49, 44, 45, 124, 72, 72, 159, 80, 212, 75, 152, 70, 71, 123, 46, 47, 55, 2, 2, 48, 44, 44, 123, 72, 72, 160, 106, 26, 43, 96, 46, 47, 84, 31, 31, 35, 2, 2, 43, 34, 34, 86, 45, 45, 86, 35, 27, 2, 8, 33, 84, 44, 45, 88, 37, 9, 8, 43, 95, 46, 46, 83, 32, 31, 35, 2, 2, 42, 0, 3, 0, 72, 255, 232, 4, 63, 4, 80, 0, 28, 0, 41, 0, 54, 0, 0, 83, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 37, 22, 22, 23, 22, 22, 7, 33, 54, 54, 55, 54, 54, 3, 38, 38, 39, 38, 38, 53, 33, 6, 6, 7, 6, 6, 85, 2, 11, 41, 53, 52, 168, 116, 121, 199, 73, 73, 91, 14, 3, 11, 40, 52, 53, 168, 117, 90, 157, 64, 47, 83, 32, 39, 50, 2, 30, 53, 67, 19, 19, 13, 1, 254, 77, 13, 43, 33, 32, 87, 58, 53, 67, 19, 20, 14, 1, 179, 13, 44, 32, 32, 86, 2, 32, 21, 107, 195, 74, 75, 91, 2, 3, 87, 76, 76, 203, 114, 22, 107, 196, 76, 75, 92, 2, 2, 48, 44, 34, 89, 52, 64, 150, 255, 2, 46, 35, 36, 89, 44, 49, 93, 35, 35, 42, 253, 88, 2, 44, 35, 35, 86, 44, 48, 90, 34, 35, 41, 0, 0, 1, 0, 164, 0, 0, 5, 110, 5, 197, 0, 22, 0, 0, 65, 3, 5, 19, 33, 1, 54, 54, 55, 54, 54, 55, 51, 55, 39, 38, 6, 7, 6, 6, 7, 1, 7, 2, 58, 123, 254, 229, 222, 1, 31, 2, 6, 11, 27, 18, 18, 44, 27, 23, 31, 47, 81, 125, 49, 49, 73, 29, 254, 187, 39, 1, 139, 4, 38, 1, 250, 80, 4, 87, 22, 43, 17, 16, 21, 1, 244, 1, 1, 57, 48, 49, 126, 68, 253, 40, 98, 0, 0, 1, 0, 140, 0, 0, 4, 162, 4, 81, 0, 26, 0, 0, 65, 3, 33, 19, 51, 1, 54, 54, 55, 54, 54, 55, 54, 22, 23, 55, 38, 38, 35, 34, 6, 7, 6, 6, 7, 3, 7, 1, 237, 78, 254, 237, 184, 254, 1, 129, 10, 25, 16, 15, 39, 24, 11, 24, 11, 48, 26, 54, 29, 75, 115, 44, 44, 67, 26, 172, 41, 1, 133, 2, 181, 251, 198, 2, 253, 19, 37, 15, 14, 18, 1, 1, 4, 2, 218, 11, 12, 55, 46, 46, 118, 61, 254, 146, 113, 0, 0, 3, 0, 37, 254, 77, 4, 242, 5, 200, 0, 37, 0, 64, 0, 102, 0, 0, 65, 19, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 19, 35, 3, 7, 6, 6, 7, 6, 6, 7, 6, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 1, 35, 3, 1, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 2, 111, 82, 5, 4, 6, 6, 30, 27, 28, 86, 61, 62, 94, 35, 36, 51, 17, 17, 22, 6, 82, 5, 6, 4, 3, 25, 25, 25, 80, 59, 64, 99, 39, 38, 55, 19, 19, 25, 1, 39, 28, 169, 40, 40, 10, 23, 16, 17, 45, 33, 17, 35, 17, 14, 25, 51, 26, 55, 84, 32, 31, 44, 15, 1, 184, 177, 191, 254, 129, 92, 3, 7, 6, 6, 21, 16, 16, 44, 31, 26, 28, 6, 7, 1, 3, 2, 7, 2, 92, 2, 7, 6, 6, 19, 15, 15, 44, 30, 26, 30, 7, 7, 2, 2, 2, 7, 1, 222, 1, 245, 45, 107, 55, 55, 103, 41, 40, 51, 2, 2, 47, 40, 40, 105, 56, 56, 111, 46, 254, 10, 41, 105, 54, 55, 105, 42, 42, 52, 2, 2, 44, 39, 39, 103, 57, 56, 114, 239, 1, 158, 251, 206, 97, 25, 62, 28, 28, 39, 1, 1, 6, 2, 154, 6, 10, 49, 39, 38, 95, 45, 4, 227, 253, 198, 1, 255, 253, 181, 20, 59, 33, 33, 66, 26, 26, 31, 2, 1, 37, 28, 28, 67, 32, 32, 53, 14, 2, 74, 19, 59, 33, 33, 65, 26, 26, 31, 2, 2, 36, 27, 27, 66, 31, 32, 54, 0, 0, 3, 0, 29, 254, 77, 4, 242, 4, 80, 0, 37, 0, 75, 0, 102, 0, 0, 83, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 54, 54, 37, 55, 19, 35, 3, 7, 6, 6, 7, 6, 6, 7, 6, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 1, 35, 42, 3, 6, 4, 5, 5, 30, 30, 29, 93, 68, 70, 110, 42, 41, 60, 21, 20, 25, 7, 3, 5, 5, 5, 5, 31, 29, 30, 94, 68, 71, 109, 41, 42, 59, 20, 21, 24, 186, 2, 3, 8, 8, 7, 24, 20, 20, 57, 40, 34, 37, 9, 8, 1, 3, 4, 11, 2, 3, 3, 7, 7, 8, 25, 20, 20, 57, 40, 34, 37, 8, 8, 1, 4, 3, 11, 2, 153, 13, 28, 169, 40, 40, 10, 23, 16, 17, 45, 33, 17, 35, 17, 14, 25, 51, 26, 55, 84, 32, 31, 44, 15, 1, 184, 177, 2, 34, 22, 49, 117, 60, 60, 113, 44, 45, 55, 2, 2, 49, 44, 43, 114, 62, 62, 126, 54, 22, 49, 119, 61, 60, 114, 45, 44, 55, 2, 2, 50, 43, 44, 115, 62, 63, 127, 74, 21, 25, 80, 45, 45, 90, 36, 35, 43, 2, 2, 49, 37, 37, 90, 43, 43, 72, 19, 20, 26, 79, 45, 45, 89, 35, 35, 43, 2, 2, 48, 37, 37, 90, 43, 42, 71, 2, 158, 1, 159, 251, 206, 97, 25, 62, 28, 28, 39, 1, 1, 7, 2, 155, 6, 10, 48, 39, 38, 95, 46, 4, 227, 0, 0, 4, 0, 73, 255, 120, 4, 138, 6, 41, 0, 3, 0, 7, 0, 45, 0, 83, 0, 0, 65, 19, 35, 3, 3, 19, 35, 3, 1, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 3, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 38, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 3, 12, 79, 191, 79, 25, 81, 192, 81, 2, 235, 33, 10, 8, 18, 19, 68, 51, 52, 137, 88, 91, 154, 63, 63, 100, 36, 37, 49, 12, 33, 10, 6, 17, 17, 64, 50, 49, 135, 87, 92, 156, 65, 65, 103, 39, 38, 50, 232, 33, 7, 22, 17, 18, 50, 33, 34, 86, 54, 51, 65, 19, 19, 16, 1, 7, 5, 33, 6, 20, 16, 15, 46, 32, 31, 84, 55, 51, 68, 21, 21, 20, 3, 2, 6, 4, 100, 1, 197, 254, 59, 251, 20, 1, 208, 254, 48, 2, 246, 211, 76, 154, 71, 70, 123, 47, 46, 54, 2, 2, 49, 44, 45, 124, 72, 72, 159, 80, 212, 75, 152, 70, 71, 123, 46, 47, 55, 2, 2, 48, 44, 44, 123, 72, 72, 160, 1, 39, 215, 43, 96, 46, 47, 84, 31, 31, 35, 2, 2, 43, 34, 34, 86, 45, 45, 86, 35, 215, 43, 95, 46, 46, 83, 32, 31, 35, 2, 2, 42, 33, 33, 84, 44, 45, 88, 0, 0, 4, 0, 79, 255, 109, 4, 70, 4, 199, 0, 3, 0, 7, 0, 33, 0, 62, 0, 0, 65, 19, 35, 3, 19, 19, 35, 3, 1, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 2, 194, 80, 166, 80, 5, 83, 168, 83, 254, 227, 2, 11, 41, 53, 52, 168, 116, 121, 199, 73, 73, 91, 14, 3, 11, 40, 52, 53, 168, 117, 122, 199, 73, 73, 91, 255, 2, 7, 39, 34, 33, 99, 69, 43, 60, 20, 19, 21, 5, 4, 3, 3, 2, 8, 37, 33, 34, 99, 68, 65, 73, 16, 17, 2, 2, 252, 1, 203, 254, 53, 252, 113, 1, 221, 254, 35, 2, 179, 21, 107, 195, 74, 75, 91, 2, 3, 87, 76, 76, 203, 114, 22, 107, 196, 76, 75, 92, 2, 3, 88, 77, 77, 205, 135, 21, 58, 120, 49, 49, 60, 2, 2, 31, 25, 25, 65, 35, 36, 73, 33, 21, 57, 119, 48, 49, 61, 2, 2, 65, 48, 47, 111, 0, 3, 0, 4, 255, 233, 5, 41, 7, 45, 0, 106, 0, 142, 0, 155, 0, 0, 65, 33, 3, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 54, 38, 39, 38, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 23, 22, 6, 7, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 52, 54, 55, 55, 19, 22, 22, 23, 22, 22, 23, 51, 55, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 23, 55, 54, 54, 55, 54, 54, 51, 50, 22, 1, 23, 54, 54, 55, 54, 54, 55, 55, 39, 7, 6, 6, 3, 46, 254, 250, 67, 5, 1, 5, 3, 3, 10, 6, 12, 39, 31, 33, 37, 8, 4, 5, 1, 1, 1, 1, 107, 7, 29, 24, 24, 66, 45, 27, 101, 170, 64, 64, 83, 14, 108, 4, 4, 8, 9, 34, 24, 43, 132, 84, 54, 87, 38, 13, 25, 12, 8, 20, 11, 31, 82, 47, 90, 151, 57, 31, 49, 18, 16, 21, 5, 108, 5, 6, 10, 10, 34, 23, 47, 142, 91, 23, 41, 48, 11, 4, 6, 1, 2, 2, 2, 109, 2, 7, 5, 5, 12, 8, 16, 48, 34, 19, 24, 6, 7, 5, 1, 3, 1, 5, 230, 26, 53, 27, 23, 47, 25, 20, 9, 27, 24, 45, 21, 29, 57, 28, 49, 99, 54, 64, 100, 31, 21, 25, 3, 3, 130, 2, 4, 17, 13, 16, 44, 28, 51, 96, 254, 240, 85, 28, 52, 21, 21, 28, 5, 14, 146, 18, 10, 51, 3, 48, 254, 97, 33, 11, 26, 13, 14, 29, 13, 25, 34, 1, 30, 24, 11, 23, 12, 14, 30, 14, 2, 156, 41, 72, 27, 27, 31, 2, 227, 2, 57, 54, 54, 158, 102, 253, 101, 37, 70, 31, 39, 69, 28, 51, 59, 1, 1, 35, 30, 11, 24, 13, 14, 25, 11, 29, 31, 1, 2, 54, 51, 27, 69, 39, 33, 73, 40, 2, 155, 46, 85, 38, 37, 66, 28, 56, 66, 5, 231, 4, 34, 26, 11, 24, 13, 19, 41, 22, 253, 98, 14, 30, 14, 13, 26, 11, 24, 29, 2, 1, 18, 15, 14, 35, 18, 18, 34, 12, 31, 4, 220, 13, 23, 10, 7, 10, 1, 136, 8, 6, 9, 25, 13, 22, 37, 1, 1, 41, 40, 26, 70, 42, 38, 1, 19, 22, 36, 13, 16, 18, 37, 254, 191, 63, 16, 43, 26, 25, 60, 33, 101, 1, 94, 45, 70, 0, 0, 3, 0, 26, 255, 232, 4, 141, 5, 225, 0, 92, 0, 128, 0, 141, 0, 0, 65, 7, 22, 22, 23, 22, 6, 7, 3, 6, 6, 7, 6, 6, 35, 6, 38, 39, 38, 38, 53, 38, 54, 55, 55, 35, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 54, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 54, 38, 39, 38, 38, 19, 35, 34, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 23, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 23, 22, 22, 51, 51, 5, 23, 54, 54, 55, 54, 54, 55, 55, 39, 7, 6, 6, 3, 85, 14, 39, 34, 5, 4, 8, 4, 53, 3, 9, 10, 11, 35, 30, 32, 34, 7, 3, 3, 1, 2, 1, 37, 229, 36, 2, 5, 4, 3, 9, 6, 13, 41, 32, 27, 25, 3, 1, 1, 3, 1, 53, 6, 17, 17, 17, 55, 44, 21, 90, 148, 54, 55, 70, 12, 57, 3, 5, 7, 8, 25, 18, 36, 110, 74, 40, 67, 29, 28, 47, 21, 9, 29, 19, 26, 69, 41, 79, 127, 47, 47, 58, 10, 56, 7, 32, 39, 39, 121, 176, 48, 20, 38, 19, 32, 61, 30, 47, 96, 53, 62, 98, 32, 24, 29, 4, 3, 133, 2, 4, 17, 13, 16, 46, 28, 49, 94, 47, 29, 60, 31, 18, 38, 20, 42, 253, 241, 85, 28, 52, 21, 21, 28, 5, 14, 146, 18, 10, 51, 4, 79, 196, 3, 39, 28, 28, 66, 30, 254, 152, 23, 55, 24, 25, 33, 1, 25, 20, 8, 19, 10, 14, 30, 14, 245, 245, 14, 27, 13, 11, 22, 10, 20, 24, 2, 2, 36, 25, 8, 17, 9, 17, 32, 13, 1, 104, 37, 71, 28, 27, 35, 1, 193, 2, 57, 50, 51, 143, 89, 254, 129, 35, 67, 31, 30, 55, 24, 49, 59, 1, 23, 21, 21, 55, 32, 29, 50, 18, 25, 28, 1, 3, 54, 48, 48, 130, 73, 1, 127, 77, 138, 53, 53, 65, 1, 29, 6, 5, 9, 27, 14, 22, 37, 1, 1, 36, 36, 27, 74, 46, 38, 1, 19, 22, 36, 13, 17, 17, 38, 22, 14, 28, 9, 6, 7, 241, 63, 16, 43, 26, 25, 60, 33, 101, 1, 94, 45, 70, 0, 2, 0, 35, 255, 233, 5, 31, 7, 7, 0, 7, 0, 82, 0, 0, 65, 7, 33, 7, 51, 55, 33, 55, 1, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 50, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 1, 207, 20, 1, 9, 23, 178, 22, 1, 25, 20, 254, 76, 86, 131, 47, 23, 38, 13, 14, 19, 5, 185, 254, 183, 2, 4, 4, 2, 6, 4, 11, 36, 28, 30, 29, 5, 2, 3, 3, 1, 181, 253, 183, 2, 5, 3, 3, 7, 5, 12, 38, 30, 29, 26, 4, 2, 2, 3, 1, 183, 253, 184, 4, 2, 6, 6, 25, 19, 35, 115, 83, 36, 62, 27, 27, 48, 22, 11, 31, 19, 29, 71, 7, 7, 112, 127, 127, 112, 248, 228, 2, 64, 55, 27, 65, 35, 35, 75, 38, 4, 61, 251, 192, 12, 33, 17, 10, 21, 10, 26, 36, 1, 1, 36, 26, 10, 23, 11, 15, 30, 12, 4, 64, 251, 192, 12, 31, 15, 12, 23, 11, 26, 35, 1, 1, 38, 26, 10, 22, 10, 16, 30, 11, 4, 64, 251, 193, 35, 70, 32, 36, 66, 28, 55, 67, 1, 17, 17, 16, 47, 28, 24, 39, 15, 22, 24, 0, 2, 0, 30, 255, 232, 4, 191, 5, 177, 0, 7, 0, 82, 0, 0, 65, 7, 33, 7, 51, 55, 33, 55, 1, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 19, 35, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 35, 3, 6, 6, 7, 6, 6, 39, 38, 38, 1, 143, 20, 1, 10, 23, 177, 23, 1, 25, 20, 254, 99, 6, 8, 1, 1, 1, 4, 1, 113, 253, 113, 3, 11, 12, 5, 13, 8, 11, 30, 20, 19, 22, 6, 6, 2, 1, 1, 4, 1, 113, 247, 115, 5, 2, 7, 6, 18, 14, 31, 111, 85, 38, 65, 28, 27, 48, 21, 11, 32, 20, 28, 69, 40, 89, 129, 45, 24, 37, 13, 11, 15, 5, 116, 247, 114, 2, 8, 10, 10, 35, 30, 17, 24, 5, 177, 112, 127, 127, 112, 251, 51, 10, 26, 14, 9, 20, 10, 21, 40, 14, 2, 178, 253, 78, 23, 67, 30, 13, 23, 9, 13, 14, 1, 1, 23, 18, 17, 43, 21, 21, 36, 11, 2, 178, 253, 79, 41, 83, 39, 30, 58, 26, 59, 77, 1, 1, 21, 18, 18, 50, 29, 28, 44, 16, 22, 24, 1, 3, 72, 60, 33, 76, 40, 33, 69, 35, 2, 176, 253, 78, 20, 65, 31, 31, 45, 1, 1, 14, 0, 0, 1, 0, 114, 254, 147, 4, 127, 5, 199, 0, 54, 0, 0, 65, 19, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 33, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 20, 23, 22, 22, 23, 22, 22, 23, 3, 2, 162, 99, 189, 72, 83, 19, 8, 10, 3, 3, 3, 5, 45, 6, 19, 16, 15, 43, 29, 29, 76, 47, 58, 65, 15, 14, 2, 3, 1, 19, 6, 39, 49, 49, 159, 114, 85, 145, 60, 60, 95, 36, 36, 47, 11, 46, 6, 6, 6, 29, 22, 42, 144, 104, 68, 254, 147, 2, 58, 2, 4, 75, 56, 23, 49, 25, 36, 73, 33, 1, 37, 37, 85, 43, 42, 78, 30, 29, 33, 1, 2, 52, 40, 40, 97, 46, 105, 182, 68, 67, 80, 2, 2, 47, 42, 42, 116, 68, 68, 149, 75, 254, 222, 47, 94, 46, 49, 94, 42, 81, 117, 23, 254, 158, 0, 1, 0, 151, 254, 145, 4, 79, 4, 81, 0, 42, 0, 0, 65, 19, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 3, 2, 147, 99, 185, 61, 64, 13, 13, 3, 5, 3, 7, 36, 32, 31, 94, 67, 42, 56, 17, 17, 13, 1, 255, 4, 48, 48, 49, 144, 93, 119, 194, 71, 72, 89, 13, 3, 9, 22, 35, 34, 122, 92, 69, 254, 145, 2, 57, 2, 3, 67, 48, 47, 108, 46, 30, 55, 117, 48, 48, 60, 3, 2, 34, 27, 27, 69, 37, 1, 90, 152, 56, 56, 65, 2, 3, 87, 76, 76, 202, 111, 31, 86, 170, 72, 73, 108, 22, 254, 154, 0, 0, 1, 0, 54, 0, 0, 4, 184, 5, 62, 0, 19, 0, 0, 65, 1, 23, 55, 37, 1, 35, 3, 39, 7, 23, 1, 39, 7, 23, 1, 51, 19, 23, 55, 2, 46, 1, 13, 249, 89, 255, 0, 1, 43, 183, 237, 253, 86, 253, 254, 245, 254, 84, 251, 254, 218, 186, 232, 253, 84, 1, 184, 1, 114, 169, 116, 171, 1, 158, 254, 184, 171, 119, 171, 254, 141, 171, 117, 171, 254, 105, 1, 65, 170, 117, 0, 0, 1, 253, 162, 4, 162, 0, 157, 5, 253, 0, 7, 0, 0, 65, 33, 55, 39, 7, 33, 7, 23, 254, 102, 2, 16, 39, 173, 18, 253, 238, 42, 174, 5, 32, 220, 1, 108, 238, 1, 0, 1, 253, 148, 5, 22, 0, 121, 6, 20, 0, 35, 0, 0, 65, 35, 7, 51, 50, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 23, 55, 54, 38, 39, 38, 38, 35, 38, 6, 7, 6, 6, 7, 6, 6, 253, 198, 41, 9, 51, 22, 42, 21, 39, 78, 38, 59, 117, 59, 23, 32, 10, 9, 8, 2, 2, 130, 4, 3, 27, 27, 28, 82, 51, 62, 117, 58, 35, 70, 36, 24, 49, 5, 157, 135, 6, 5, 9, 29, 15, 22, 36, 3, 1, 14, 12, 12, 36, 23, 20, 1, 40, 53, 80, 27, 26, 27, 1, 36, 22, 14, 25, 9, 6, 7, 0, 1, 254, 164, 5, 18, 255, 124, 6, 91, 0, 5, 0, 0, 65, 23, 55, 39, 55, 39, 254, 164, 132, 84, 37, 26, 185, 5, 237, 219, 75, 113, 135, 6, 0, 1, 254, 109, 5, 19, 255, 136, 6, 91, 0, 5, 0, 0, 65, 55, 55, 15, 2, 254, 182, 187, 23, 186, 18, 79, 5, 19, 195, 133, 5, 109, 116, 0, 0, 8, 254, 170, 254, 195, 6, 9, 5, 176, 0, 25, 0, 51, 0, 77, 0, 103, 0, 129, 0, 155, 0, 181, 0, 207, 0, 0, 65, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 19, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 51, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 1, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 19, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 7, 51, 52, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 2, 6, 111, 5, 17, 12, 13, 37, 25, 24, 32, 9, 8, 6, 1, 109, 1, 23, 23, 24, 73, 46, 45, 75, 28, 29, 36, 2, 7, 111, 5, 17, 12, 13, 36, 25, 24, 32, 9, 8, 6, 1, 110, 1, 22, 22, 24, 75, 47, 45, 74, 28, 29, 36, 90, 109, 5, 14, 10, 13, 40, 27, 24, 31, 9, 9, 5, 1, 110, 1, 19, 19, 24, 77, 50, 45, 74, 28, 29, 35, 254, 226, 108, 5, 13, 10, 13, 40, 28, 24, 31, 9, 9, 5, 1, 110, 1, 23, 22, 24, 74, 46, 45, 74, 28, 28, 36, 253, 153, 111, 4, 12, 9, 13, 42, 29, 24, 31, 9, 8, 6, 1, 110, 1, 19, 18, 25, 78, 50, 45, 75, 28, 28, 36, 254, 171, 112, 5, 17, 11, 14, 37, 25, 24, 32, 9, 8, 6, 1, 109, 1, 23, 22, 25, 73, 46, 49, 82, 29, 24, 31, 254, 251, 109, 6, 18, 13, 13, 35, 24, 24, 32, 9, 8, 6, 1, 109, 1, 17, 16, 23, 80, 52, 45, 75, 28, 29, 35, 65, 110, 5, 14, 9, 14, 39, 28, 24, 31, 9, 8, 6, 1, 111, 19, 18, 25, 77, 50, 45, 75, 28, 29, 35, 4, 244, 20, 35, 13, 15, 17, 16, 14, 14, 37, 21, 42, 68, 24, 26, 28, 1, 1, 26, 24, 25, 70, 254, 192, 20, 35, 13, 15, 17, 16, 14, 14, 37, 21, 41, 67, 24, 27, 29, 1, 1, 26, 24, 25, 70, 253, 221, 1, 17, 32, 12, 18, 21, 16, 14, 14, 37, 21, 38, 63, 24, 30, 33, 1, 1, 26, 24, 25, 71, 253, 206, 1, 17, 31, 12, 18, 22, 16, 14, 14, 37, 21, 41, 67, 24, 27, 29, 1, 1, 26, 24, 25, 71, 254, 186, 15, 29, 12, 20, 24, 16, 14, 14, 37, 21, 37, 63, 23, 31, 34, 1, 1, 26, 24, 25, 70, 4, 239, 19, 35, 13, 15, 18, 16, 14, 14, 37, 21, 41, 68, 24, 26, 29, 1, 1, 31, 30, 23, 65, 253, 225, 1, 21, 36, 14, 13, 16, 16, 14, 14, 37, 21, 35, 60, 23, 33, 37, 1, 1, 26, 24, 25, 71, 253, 206, 1, 17, 32, 13, 17, 21, 16, 14, 14, 37, 21, 37, 63, 23, 31, 34, 1, 1, 26, 24, 25, 71, 0, 0, 8, 254, 204, 254, 99, 5, 208, 5, 198, 0, 4, 0, 9, 0, 14, 0, 19, 0, 24, 0, 29, 0, 34, 0, 39, 0, 0, 69, 7, 3, 51, 19, 19, 55, 19, 35, 3, 1, 7, 5, 55, 37, 5, 55, 37, 7, 5, 1, 23, 37, 39, 5, 1, 39, 5, 23, 37, 19, 55, 3, 7, 19, 1, 7, 19, 55, 3, 2, 65, 133, 126, 102, 170, 17, 132, 126, 102, 170, 2, 61, 13, 1, 62, 17, 254, 200, 251, 119, 13, 254, 193, 17, 1, 57, 3, 229, 92, 1, 48, 63, 254, 181, 252, 192, 92, 254, 207, 64, 1, 74, 21, 103, 150, 65, 95, 3, 40, 102, 149, 66, 94, 58, 3, 254, 160, 1, 82, 4, 175, 3, 1, 95, 254, 175, 254, 3, 140, 68, 90, 128, 210, 140, 68, 90, 128, 2, 68, 98, 190, 78, 152, 252, 25, 98, 190, 79, 152, 3, 90, 96, 1, 47, 59, 254, 173, 253, 68, 97, 254, 209, 61, 1, 81, 0, 3, 0, 40, 0, 0, 4, 184, 5, 176, 0, 3, 0, 20, 0, 35, 0, 0, 65, 1, 7, 1, 37, 23, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 33, 19, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 4, 22, 254, 190, 122, 1, 66, 253, 251, 224, 105, 197, 78, 78, 101, 9, 9, 59, 59, 60, 168, 101, 254, 43, 252, 1, 18, 132, 81, 223, 50, 72, 22, 21, 14, 6, 7, 49, 37, 37, 94, 53, 1, 140, 2, 73, 53, 253, 184, 190, 1, 61, 59, 58, 171, 112, 104, 168, 60, 60, 66, 3, 1, 250, 80, 2, 250, 1, 210, 1, 2, 39, 31, 32, 83, 47, 54, 86, 30, 30, 33, 1, 0, 3, 255, 220, 254, 96, 4, 53, 4, 79, 0, 3, 0, 39, 0, 71, 0, 0, 69, 1, 7, 1, 19, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 55, 7, 1, 33, 19, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 37, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 20, 3, 182, 254, 180, 107, 1, 74, 228, 2, 6, 3, 12, 13, 49, 39, 40, 110, 74, 47, 85, 37, 31, 56, 26, 17, 248, 254, 252, 1, 15, 97, 20, 46, 26, 35, 80, 43, 77, 127, 52, 51, 79, 29, 28, 36, 254, 250, 2, 4, 14, 12, 8, 21, 14, 32, 96, 68, 29, 49, 21, 22, 34, 12, 80, 22, 51, 29, 23, 52, 29, 34, 50, 18, 14, 20, 7, 14, 18, 1, 206, 72, 254, 50, 2, 115, 22, 61, 127, 60, 59, 106, 41, 40, 47, 2, 1, 20, 19, 16, 45, 28, 108, 1, 250, 38, 2, 0, 24, 39, 14, 19, 20, 1, 2, 45, 40, 40, 108, 63, 63, 135, 88, 21, 32, 69, 33, 24, 47, 21, 50, 62, 2, 1, 13, 12, 13, 43, 30, 1, 198, 29, 45, 13, 11, 11, 1, 1, 22, 18, 14, 38, 21, 48, 109, 0, 1, 0, 43, 0, 0, 5, 26, 7, 31, 0, 7, 0, 0, 65, 19, 33, 3, 33, 3, 33, 19, 4, 179, 103, 254, 240, 64, 253, 94, 253, 1, 18, 213, 4, 204, 2, 83, 254, 145, 250, 80, 4, 204, 0, 1, 0, 40, 0, 0, 4, 201, 5, 117, 0, 7, 0, 0, 65, 19, 33, 3, 33, 3, 33, 19, 4, 108, 93, 254, 241, 55, 253, 97, 188, 1, 14, 149, 3, 88, 2, 29, 254, 197, 251, 198, 3, 88, 0, 1, 0, 32, 254, 176, 4, 176, 5, 176, 0, 33, 0, 0, 65, 55, 33, 3, 33, 19, 51, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 35, 19, 4, 136, 40, 252, 109, 253, 1, 18, 105, 181, 80, 100, 26, 26, 12, 9, 9, 42, 38, 38, 111, 78, 24, 133, 215, 79, 78, 96, 14, 14, 55, 64, 65, 199, 130, 152, 68, 4, 204, 228, 250, 80, 2, 95, 3, 62, 50, 50, 129, 70, 69, 130, 50, 51, 63, 3, 213, 3, 88, 78, 78, 215, 130, 129, 211, 76, 75, 85, 3, 1, 137, 0, 0, 1, 0, 40, 254, 224, 4, 109, 4, 58, 0, 39, 0, 0, 65, 55, 33, 3, 33, 19, 51, 22, 22, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 35, 55, 4, 69, 40, 252, 119, 188, 1, 14, 76, 179, 35, 61, 24, 17, 29, 11, 22, 17, 7, 7, 44, 32, 33, 84, 48, 91, 79, 149, 59, 59, 77, 8, 10, 64, 64, 31, 75, 43, 46, 104, 56, 150, 34, 3, 88, 226, 251, 198, 1, 179, 1, 15, 13, 10, 25, 15, 32, 85, 53, 53, 87, 34, 35, 53, 19, 193, 26, 87, 60, 60, 150, 89, 114, 177, 61, 29, 45, 16, 17, 18, 1, 194, 0, 1, 0, 25, 0, 0, 5, 101, 5, 176, 0, 20, 0, 0, 65, 33, 1, 35, 19, 35, 3, 35, 19, 33, 3, 33, 19, 51, 7, 51, 55, 23, 19, 33, 3, 5, 101, 254, 164, 254, 176, 13, 51, 164, 46, 76, 104, 254, 237, 253, 1, 19, 106, 77, 41, 164, 44, 29, 140, 1, 80, 200, 5, 176, 253, 167, 1, 3, 254, 255, 2, 87, 250, 80, 2, 91, 229, 230, 1, 253, 165, 3, 20, 0, 0, 1, 0, 23, 0, 0, 4, 227, 4, 58, 0, 20, 0, 0, 65, 33, 3, 35, 55, 35, 7, 35, 19, 33, 3, 33, 19, 51, 7, 51, 55, 23, 19, 33, 3, 4, 227, 254, 159, 236, 42, 40, 151, 38, 65, 77, 254, 240, 188, 1, 16, 74, 66, 35, 151, 34, 50, 99, 1, 79, 206, 4, 58, 254, 96, 194, 194, 1, 160, 251, 198, 1, 151, 174, 173, 1, 254, 107, 2, 42, 0, 1, 0, 120, 0, 0, 5, 34, 5, 176, 0, 14, 0, 0, 65, 19, 33, 3, 1, 33, 1, 35, 19, 33, 7, 33, 3, 33, 19, 2, 138, 137, 1, 42, 192, 1, 165, 254, 185, 254, 204, 48, 106, 253, 194, 43, 1, 46, 210, 1, 17, 107, 2, 79, 253, 177, 2, 233, 2, 199, 253, 187, 2, 69, 241, 251, 65, 2, 80, 0, 0, 1, 0, 67, 0, 0, 4, 228, 4, 58, 0, 14, 0, 0, 65, 19, 33, 3, 1, 33, 3, 35, 19, 33, 7, 33, 3, 33, 19, 2, 126, 95, 1, 90, 193, 1, 110, 254, 155, 221, 65, 76, 253, 192, 42, 1, 42, 146, 1, 22, 74, 1, 137, 254, 119, 2, 45, 2, 13, 254, 108, 1, 148, 242, 252, 184, 1, 138, 0, 1, 255, 212, 0, 0, 5, 30, 5, 176, 0, 13, 0, 0, 65, 19, 33, 3, 33, 19, 51, 3, 33, 19, 33, 55, 33, 3, 1, 112, 104, 254, 249, 253, 1, 7, 107, 253, 107, 1, 7, 211, 1, 65, 43, 253, 183, 103, 3, 94, 2, 82, 250, 80, 2, 102, 253, 154, 4, 191, 241, 253, 174, 0, 0, 1, 255, 235, 0, 0, 4, 217, 4, 58, 0, 13, 0, 0, 65, 19, 33, 3, 33, 19, 33, 3, 33, 19, 33, 55, 33, 3, 1, 115, 75, 254, 233, 188, 1, 23, 72, 1, 0, 72, 1, 23, 146, 1, 4, 42, 253, 229, 75, 2, 139, 1, 175, 251, 198, 1, 156, 254, 100, 3, 73, 241, 254, 81, 0, 1, 255, 200, 254, 162, 4, 83, 5, 176, 0, 47, 0, 0, 65, 19, 33, 3, 33, 19, 51, 3, 33, 19, 23, 22, 22, 23, 22, 20, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 52, 39, 38, 38, 39, 38, 38, 39, 2, 251, 108, 253, 93, 252, 1, 5, 210, 158, 209, 1, 5, 108, 20, 30, 35, 8, 7, 3, 4, 10, 2, 5, 10, 8, 9, 27, 21, 21, 60, 42, 25, 126, 181, 62, 30, 48, 18, 18, 24, 7, 7, 10, 11, 46, 38, 39, 111, 75, 3, 64, 2, 112, 250, 80, 4, 183, 251, 73, 2, 80, 1, 5, 45, 33, 33, 79, 38, 39, 65, 20, 33, 76, 38, 38, 73, 28, 29, 37, 4, 228, 4, 105, 84, 41, 96, 52, 52, 111, 56, 60, 131, 64, 63, 116, 45, 44, 55, 3, 0, 1, 255, 233, 254, 232, 4, 74, 4, 58, 0, 35, 0, 0, 65, 19, 33, 3, 33, 19, 51, 3, 33, 19, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 2, 234, 78, 253, 109, 188, 1, 4, 147, 137, 147, 1, 6, 81, 5, 38, 39, 7, 7, 5, 5, 6, 26, 21, 22, 63, 43, 93, 79, 131, 49, 48, 59, 8, 9, 34, 42, 42, 135, 92, 2, 160, 1, 154, 251, 198, 3, 73, 252, 183, 1, 177, 1, 11, 50, 33, 34, 76, 34, 44, 83, 36, 36, 57, 18, 200, 21, 93, 64, 63, 153, 80, 88, 166, 66, 65, 84, 8, 0, 2, 0, 78, 255, 234, 4, 192, 5, 199, 0, 83, 0, 115, 0, 0, 69, 55, 38, 38, 39, 54, 54, 55, 54, 54, 55, 19, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 34, 34, 35, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 22, 22, 3, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 6, 7, 6, 6, 7, 3, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 54, 4, 43, 21, 29, 56, 29, 30, 50, 20, 32, 43, 12, 48, 6, 1, 8, 8, 38, 32, 32, 93, 65, 62, 101, 40, 40, 60, 21, 22, 27, 7, 51, 9, 2, 10, 9, 33, 22, 7, 6, 7, 48, 67, 21, 22, 22, 4, 4, 3, 5, 51, 3, 9, 8, 7, 21, 16, 16, 44, 29, 30, 74, 122, 49, 50, 75, 27, 28, 36, 10, 51, 10, 12, 22, 22, 76, 54, 53, 139, 84, 66, 121, 57, 68, 141, 225, 49, 1, 3, 4, 3, 12, 10, 9, 28, 20, 18, 19, 4, 3, 2, 3, 3, 6, 1, 50, 8, 20, 14, 12, 30, 18, 11, 13, 2, 2, 5, 19, 221, 1, 4, 7, 36, 77, 39, 64, 139, 74, 1, 47, 49, 115, 59, 58, 109, 43, 42, 53, 2, 2, 44, 37, 38, 101, 55, 55, 112, 49, 254, 192, 63, 123, 59, 52, 104, 50, 2, 39, 31, 31, 79, 42, 42, 84, 36, 1, 69, 21, 62, 34, 34, 69, 28, 28, 36, 3, 237, 2, 48, 40, 40, 106, 61, 61, 131, 65, 254, 190, 76, 151, 69, 69, 118, 44, 44, 51, 1, 2, 35, 29, 30, 28, 2, 168, 1, 69, 11, 46, 29, 29, 60, 25, 25, 30, 1, 1, 36, 26, 27, 64, 29, 30, 45, 9, 254, 179, 39, 74, 36, 30, 61, 29, 32, 66, 33, 39, 80, 0, 0, 2, 0, 43, 255, 230, 4, 162, 4, 80, 0, 74, 0, 103, 0, 0, 69, 55, 38, 38, 39, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 34, 38, 35, 38, 38, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 55, 55, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 22, 22, 1, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 7, 6, 6, 7, 38, 38, 39, 38, 38, 4, 78, 13, 37, 73, 37, 79, 98, 16, 20, 5, 4, 12, 12, 43, 33, 34, 91, 59, 50, 86, 37, 27, 48, 20, 48, 57, 10, 20, 6, 1, 8, 6, 21, 15, 5, 11, 5, 34, 54, 20, 14, 22, 8, 23, 12, 8, 13, 6, 23, 20, 20, 59, 43, 28, 104, 167, 62, 62, 77, 13, 12, 12, 54, 60, 26, 63, 36, 49, 118, 67, 69, 132, 64, 78, 161, 254, 193, 19, 1, 5, 4, 4, 11, 7, 14, 46, 33, 31, 30, 5, 2, 1, 1, 1, 2, 1, 18, 10, 62, 56, 20, 27, 8, 8, 3, 26, 167, 1, 4, 6, 71, 170, 106, 143, 49, 105, 51, 50, 91, 35, 35, 42, 2, 1, 24, 22, 16, 44, 26, 60, 151, 76, 148, 48, 92, 45, 34, 69, 34, 2, 5, 23, 18, 12, 29, 16, 44, 111, 59, 96, 38, 79, 35, 34, 49, 8, 232, 3, 75, 64, 64, 172, 99, 93, 112, 200, 75, 32, 55, 20, 28, 31, 1, 1, 26, 23, 28, 24, 2, 35, 154, 12, 28, 16, 16, 35, 16, 31, 42, 1, 1, 53, 35, 18, 36, 17, 16, 28, 9, 146, 72, 118, 46, 28, 58, 30, 30, 66, 0, 0, 1, 0, 107, 254, 161, 4, 204, 5, 176, 0, 15, 0, 0, 65, 3, 33, 3, 33, 19, 35, 19, 33, 3, 33, 19, 51, 55, 33, 7, 1, 76, 211, 2, 218, 61, 1, 1, 119, 148, 210, 254, 240, 210, 254, 202, 167, 214, 43, 253, 57, 42, 4, 191, 251, 65, 254, 161, 2, 85, 4, 186, 251, 72, 3, 199, 241, 241, 0, 1, 0, 73, 254, 191, 4, 96, 4, 58, 0, 15, 0, 0, 65, 3, 33, 3, 33, 19, 35, 19, 33, 3, 33, 19, 51, 55, 33, 7, 1, 0, 146, 2, 174, 56, 1, 6, 115, 144, 147, 254, 232, 147, 254, 249, 105, 166, 43, 253, 139, 42, 3, 73, 252, 183, 254, 191, 2, 47, 3, 76, 252, 182, 2, 89, 241, 241, 0, 2, 0, 190, 0, 0, 4, 188, 5, 176, 0, 3, 0, 29, 0, 0, 65, 19, 35, 3, 1, 33, 3, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 33, 3, 6, 22, 23, 22, 22, 51, 22, 54, 55, 3, 33, 2, 82, 131, 162, 131, 3, 12, 254, 237, 123, 51, 102, 52, 54, 59, 12, 13, 1, 5, 74, 254, 238, 75, 12, 38, 49, 48, 157, 108, 51, 99, 48, 104, 1, 19, 1, 31, 2, 244, 253, 12, 4, 145, 253, 92, 11, 15, 2, 2, 44, 34, 34, 87, 45, 1, 198, 254, 59, 103, 174, 63, 64, 72, 1, 16, 14, 253, 212, 0, 2, 0, 129, 0, 0, 4, 140, 4, 58, 0, 3, 0, 29, 0, 0, 101, 19, 35, 3, 5, 19, 33, 3, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 3, 6, 22, 23, 22, 22, 51, 22, 54, 55, 3, 2, 90, 111, 162, 111, 2, 24, 188, 254, 240, 94, 53, 104, 54, 49, 71, 22, 23, 17, 6, 55, 254, 241, 55, 11, 58, 60, 59, 167, 98, 51, 100, 50, 68, 165, 2, 128, 253, 128, 165, 4, 58, 254, 3, 9, 12, 2, 1, 21, 22, 22, 70, 51, 1, 85, 254, 172, 106, 155, 51, 51, 50, 1, 11, 11, 254, 162, 0, 0, 1, 0, 11, 0, 0, 4, 44, 5, 176, 0, 25, 0, 0, 115, 33, 19, 54, 54, 23, 22, 22, 23, 22, 22, 7, 3, 33, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 19, 33, 11, 1, 28, 119, 52, 104, 53, 52, 60, 14, 13, 2, 5, 68, 1, 29, 80, 12, 47, 53, 54, 163, 106, 51, 99, 50, 102, 254, 228, 2, 147, 10, 15, 2, 2, 41, 32, 33, 83, 43, 254, 64, 1, 193, 103, 176, 65, 64, 74, 1, 1, 14, 11, 2, 36, 0, 0, 2, 0, 38, 255, 233, 4, 157, 5, 197, 0, 66, 0, 87, 0, 0, 69, 22, 54, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 5, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 38, 38, 55, 52, 54, 55, 39, 6, 22, 23, 22, 22, 23, 7, 6, 6, 23, 22, 22, 23, 22, 22, 19, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 20, 6, 7, 7, 2, 120, 50, 104, 49, 38, 72, 34, 22, 34, 72, 36, 28, 56, 29, 71, 87, 21, 10, 11, 2, 2, 4, 5, 6, 2, 107, 35, 10, 4, 10, 11, 50, 43, 43, 126, 87, 80, 136, 56, 57, 91, 35, 24, 39, 15, 24, 13, 9, 1, 8, 3, 197, 9, 2, 19, 18, 80, 68, 12, 8, 3, 6, 7, 36, 29, 51, 176, 35, 11, 6, 13, 8, 13, 36, 24, 24, 62, 39, 36, 47, 14, 14, 13, 1, 6, 4, 9, 22, 1, 10, 11, 9, 26, 18, 251, 14, 23, 7, 6, 4, 1, 3, 65, 50, 23, 52, 27, 31, 65, 32, 27, 1, 197, 69, 149, 72, 72, 130, 50, 50, 61, 2, 2, 47, 42, 42, 115, 65, 44, 94, 47, 87, 21, 46, 25, 24, 48, 23, 1, 63, 130, 57, 58, 91, 24, 60, 49, 99, 48, 60, 113, 49, 89, 111, 3, 122, 47, 21, 48, 24, 37, 71, 28, 27, 32, 1, 1, 29, 23, 23, 60, 31, 31, 62, 25, 48, 0, 0, 2, 0, 61, 255, 235, 4, 118, 4, 81, 0, 65, 0, 79, 0, 0, 101, 54, 54, 55, 39, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 38, 53, 52, 52, 53, 53, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 38, 38, 39, 38, 54, 55, 39, 6, 22, 23, 22, 22, 23, 7, 6, 6, 21, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 3, 22, 22, 23, 22, 22, 7, 7, 37, 54, 54, 55, 54, 54, 3, 119, 42, 75, 31, 104, 28, 58, 31, 28, 61, 34, 28, 44, 16, 11, 16, 7, 15, 13, 2, 55, 21, 13, 31, 51, 42, 137, 99, 98, 158, 61, 62, 90, 30, 18, 17, 3, 4, 1, 2, 179, 4, 12, 22, 21, 78, 62, 1, 1, 1, 2, 45, 41, 20, 50, 29, 42, 101, 58, 66, 125, 78, 37, 45, 11, 11, 3, 4, 6, 254, 226, 11, 30, 22, 22, 62, 36, 22, 60, 38, 157, 22, 37, 12, 11, 11, 1, 1, 16, 15, 9, 22, 13, 29, 69, 35, 3, 7, 3, 3, 134, 97, 196, 78, 63, 85, 3, 3, 71, 60, 61, 157, 84, 19, 47, 25, 25, 51, 25, 1, 60, 121, 53, 53, 84, 23, 7, 14, 29, 14, 75, 140, 56, 28, 49, 19, 27, 31, 2, 1, 28, 3, 88, 1, 37, 28, 28, 66, 29, 29, 1, 32, 77, 33, 33, 43, 0, 0, 1, 0, 54, 254, 172, 5, 17, 5, 176, 0, 35, 0, 0, 65, 33, 3, 33, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 7, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 1, 33, 1, 35, 2, 70, 254, 237, 253, 1, 20, 105, 217, 74, 84, 20, 20, 4, 7, 9, 42, 37, 38, 112, 78, 24, 132, 214, 79, 79, 97, 15, 10, 19, 35, 31, 102, 78, 49, 1, 222, 254, 162, 254, 148, 104, 5, 176, 250, 80, 2, 92, 2, 3, 69, 52, 52, 125, 60, 70, 130, 50, 51, 63, 2, 215, 3, 88, 78, 78, 215, 129, 91, 179, 77, 66, 108, 26, 16, 2, 130, 253, 175, 0, 0, 1, 0, 43, 254, 214, 4, 180, 4, 58, 0, 34, 0, 0, 65, 1, 33, 1, 35, 19, 33, 3, 33, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 3, 17, 1, 163, 254, 155, 254, 199, 104, 72, 254, 241, 188, 1, 15, 71, 186, 51, 75, 24, 23, 16, 7, 7, 39, 30, 30, 77, 44, 90, 77, 142, 56, 55, 73, 8, 7, 23, 30, 30, 97, 2, 85, 1, 229, 254, 98, 1, 158, 251, 198, 1, 149, 1, 3, 38, 31, 32, 84, 49, 50, 83, 33, 34, 52, 20, 193, 26, 87, 59, 59, 146, 86, 71, 133, 57, 56, 88, 0, 0, 1, 0, 32, 254, 74, 4, 173, 5, 176, 0, 29, 0, 0, 65, 33, 3, 33, 19, 33, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 33, 3, 33, 2, 47, 254, 238, 253, 1, 18, 105, 1, 107, 108, 6, 22, 18, 19, 54, 37, 25, 48, 24, 38, 36, 71, 37, 93, 146, 54, 53, 65, 12, 255, 254, 237, 109, 254, 149, 5, 176, 250, 80, 2, 92, 253, 125, 32, 62, 24, 25, 31, 8, 6, 221, 8, 10, 58, 53, 53, 147, 88, 5, 215, 253, 142, 0, 0, 1, 0, 34, 254, 74, 4, 102, 4, 58, 0, 29, 0, 0, 65, 33, 3, 33, 19, 33, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 55, 19, 33, 3, 33, 1, 237, 254, 241, 188, 1, 15, 74, 1, 105, 78, 5, 22, 18, 19, 54, 37, 25, 48, 23, 39, 35, 72, 37, 93, 145, 53, 52, 64, 12, 191, 254, 240, 76, 254, 151, 4, 58, 251, 198, 1, 164, 254, 52, 32, 63, 25, 25, 31, 9, 7, 220, 8, 10, 58, 53, 53, 146, 88, 4, 98, 254, 74, 0, 0, 2, 0, 67, 255, 233, 4, 135, 5, 197, 0, 52, 0, 72, 0, 0, 65, 38, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 6, 7, 7, 37, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 54, 54, 39, 38, 38, 39, 38, 38, 1, 38, 38, 39, 38, 38, 39, 38, 38, 55, 55, 37, 6, 6, 7, 6, 6, 7, 6, 6, 2, 170, 43, 97, 48, 49, 90, 37, 28, 41, 84, 43, 37, 76, 38, 76, 93, 23, 10, 12, 2, 3, 4, 6, 14, 253, 18, 33, 10, 5, 17, 17, 64, 50, 49, 135, 88, 87, 152, 65, 64, 105, 40, 39, 52, 12, 44, 6, 1, 5, 8, 45, 37, 60, 192, 254, 215, 42, 62, 22, 19, 27, 6, 6, 1, 4, 13, 1, 236, 10, 27, 19, 19, 51, 33, 33, 82, 5, 196, 1, 6, 9, 9, 32, 25, 228, 17, 26, 8, 7, 6, 1, 2, 65, 50, 23, 52, 27, 33, 70, 34, 72, 1, 204, 77, 150, 68, 69, 117, 43, 44, 51, 2, 2, 47, 43, 42, 118, 69, 69, 154, 78, 1, 20, 46, 89, 42, 69, 125, 51, 82, 97, 251, 25, 1, 25, 21, 19, 51, 30, 30, 67, 34, 92, 1, 41, 87, 41, 42, 75, 27, 28, 31, 0, 1, 0, 80, 255, 233, 4, 213, 5, 176, 0, 45, 0, 0, 65, 1, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 1, 55, 33, 7, 3, 105, 254, 125, 34, 148, 75, 99, 24, 16, 9, 7, 7, 51, 38, 38, 94, 49, 45, 70, 23, 24, 24, 2, 254, 240, 3, 62, 59, 58, 162, 96, 102, 198, 79, 79, 105, 9, 7, 33, 39, 36, 108, 72, 33, 1, 173, 33, 252, 114, 41, 4, 202, 254, 162, 194, 1, 3, 51, 47, 31, 82, 49, 52, 80, 27, 28, 28, 2, 1, 30, 26, 26, 72, 44, 1, 99, 157, 54, 55, 59, 2, 2, 53, 54, 54, 165, 111, 84, 147, 59, 52, 77, 19, 7, 1, 146, 195, 228, 0, 0, 1, 0, 5, 254, 115, 4, 135, 4, 58, 0, 45, 0, 0, 65, 1, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 1, 55, 33, 7, 3, 24, 254, 130, 33, 149, 71, 97, 25, 19, 12, 7, 7, 52, 38, 38, 95, 49, 45, 70, 23, 24, 24, 2, 254, 240, 3, 63, 59, 58, 162, 96, 102, 197, 79, 79, 103, 9, 7, 32, 38, 36, 110, 73, 26, 1, 167, 32, 252, 111, 40, 3, 88, 254, 157, 191, 1, 2, 47, 43, 32, 88, 54, 51, 81, 27, 28, 28, 2, 1, 30, 26, 26, 72, 44, 1, 99, 157, 54, 54, 59, 2, 2, 52, 55, 54, 165, 111, 82, 147, 59, 53, 79, 19, 6, 1, 147, 194, 226, 0, 255, 255, 0, 50, 254, 71, 5, 4, 5, 176, 4, 38, 1, 123, 84, 0, 0, 39, 2, 106, 255, 7, 0, 23, 0, 6, 2, 111, 191, 0, 255, 255, 0, 14, 254, 66, 4, 176, 4, 58, 4, 38, 1, 181, 73, 0, 0, 39, 2, 106, 255, 1, 255, 59, 0, 6, 2, 111, 129, 251, 0, 2, 0, 43, 0, 0, 4, 195, 5, 176, 0, 16, 0, 31, 0, 0, 65, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 5, 19, 33, 3, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 23, 3, 87, 211, 110, 204, 81, 81, 105, 10, 10, 64, 62, 62, 176, 102, 1, 201, 253, 254, 237, 213, 211, 52, 78, 24, 25, 20, 7, 8, 54, 41, 40, 104, 57, 185, 3, 176, 1, 62, 60, 61, 178, 116, 109, 170, 59, 60, 65, 4, 1, 5, 176, 251, 50, 1, 2, 39, 32, 32, 87, 50, 59, 93, 33, 32, 35, 2, 0, 0, 2, 0, 60, 255, 255, 4, 213, 5, 176, 0, 39, 0, 57, 0, 0, 97, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 39, 37, 22, 6, 7, 6, 6, 7, 6, 6, 7, 35, 19, 33, 3, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 3, 54, 54, 55, 54, 54, 55, 54, 54, 23, 23, 3, 39, 38, 38, 39, 38, 54, 2, 220, 79, 128, 51, 50, 76, 28, 27, 36, 11, 17, 2, 18, 254, 254, 21, 16, 19, 7, 22, 22, 22, 72, 55, 25, 218, 254, 238, 96, 7, 105, 174, 64, 65, 78, 9, 8, 37, 45, 45, 143, 97, 85, 3, 14, 12, 11, 33, 22, 21, 53, 33, 3, 100, 5, 41, 44, 10, 10, 1, 1, 43, 40, 39, 107, 62, 62, 136, 68, 111, 227, 111, 1, 110, 232, 109, 42, 112, 51, 52, 73, 2, 4, 209, 253, 255, 1, 4, 74, 65, 65, 177, 99, 93, 164, 63, 63, 77, 6, 1, 210, 25, 59, 30, 29, 54, 20, 20, 21, 3, 1, 254, 16, 1, 7, 52, 35, 35, 79, 0, 2, 0, 58, 255, 234, 4, 127, 6, 24, 0, 73, 0, 108, 0, 0, 83, 7, 6, 6, 23, 22, 22, 23, 22, 22, 23, 50, 54, 55, 54, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 37, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 54, 55, 19, 33, 3, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 37, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 52, 55, 54, 54, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 50, 22, 23, 22, 22, 84, 19, 5, 2, 7, 6, 30, 27, 27, 82, 58, 33, 56, 24, 12, 21, 10, 11, 20, 9, 17, 52, 32, 32, 72, 38, 70, 110, 42, 42, 62, 22, 21, 27, 7, 14, 5, 14, 254, 254, 17, 7, 14, 2, 5, 4, 5, 14, 11, 11, 32, 23, 15, 13, 1, 1, 4, 2, 207, 254, 239, 97, 10, 22, 12, 18, 41, 23, 64, 100, 38, 39, 56, 19, 19, 24, 1, 202, 89, 4, 3, 1, 8, 17, 8, 9, 20, 11, 21, 23, 5, 5, 2, 2, 7, 1, 18, 2, 7, 7, 6, 20, 15, 15, 43, 29, 7, 13, 6, 6, 12, 2, 79, 140, 42, 102, 52, 53, 98, 38, 39, 48, 1, 21, 18, 8, 20, 11, 11, 25, 13, 36, 48, 14, 15, 13, 1, 51, 44, 43, 114, 62, 62, 125, 55, 100, 199, 100, 1, 100, 201, 101, 17, 58, 35, 35, 74, 31, 31, 43, 5, 7, 31, 19, 18, 38, 14, 4, 206, 253, 253, 10, 18, 6, 11, 12, 1, 2, 46, 40, 41, 107, 58, 58, 115, 216, 253, 243, 24, 47, 24, 6, 11, 5, 4, 5, 1, 1, 31, 23, 23, 57, 27, 26, 45, 11, 142, 18, 58, 33, 32, 65, 26, 26, 31, 2, 4, 3, 3, 8, 0, 0, 1, 0, 130, 255, 234, 4, 125, 5, 176, 0, 80, 0, 0, 65, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 37, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 55, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 7, 23, 22, 22, 23, 22, 6, 1, 137, 12, 4, 33, 36, 35, 106, 69, 76, 126, 50, 50, 77, 28, 27, 36, 9, 14, 6, 14, 254, 252, 18, 6, 15, 4, 10, 8, 9, 25, 18, 18, 50, 33, 12, 15, 4, 4, 2, 1, 12, 4, 11, 19, 19, 66, 51, 57, 99, 38, 37, 47, 5, 7, 50, 52, 53, 152, 93, 186, 40, 214, 39, 54, 15, 17, 10, 5, 6, 26, 21, 31, 96, 64, 99, 40, 180, 36, 37, 7, 7, 1, 1, 129, 109, 69, 110, 38, 38, 41, 1, 1, 45, 40, 40, 109, 62, 62, 134, 65, 100, 198, 100, 1, 100, 201, 100, 25, 66, 35, 36, 69, 28, 29, 37, 3, 5, 11, 8, 8, 23, 14, 110, 51, 96, 42, 41, 66, 20, 25, 66, 43, 42, 105, 66, 97, 150, 52, 51, 55, 3, 1, 230, 1, 2, 26, 22, 23, 64, 38, 42, 69, 27, 40, 44, 1, 2, 228, 3, 3, 48, 33, 33, 70, 0, 1, 0, 121, 255, 227, 4, 102, 4, 58, 0, 77, 0, 0, 101, 38, 38, 55, 55, 54, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 7, 23, 22, 22, 23, 22, 22, 7, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 37, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 2, 191, 7, 2, 1, 5, 5, 74, 78, 40, 70, 27, 27, 34, 3, 5, 66, 56, 56, 145, 73, 207, 33, 229, 30, 50, 18, 17, 15, 5, 6, 38, 27, 27, 65, 32, 126, 35, 218, 26, 36, 11, 10, 7, 2, 9, 3, 56, 47, 47, 119, 60, 61, 99, 39, 39, 59, 21, 21, 27, 6, 10, 17, 16, 255, 0, 20, 5, 11, 3, 9, 10, 5, 16, 10, 9, 24, 14, 19, 24, 189, 11, 32, 20, 49, 82, 116, 26, 19, 45, 29, 28, 74, 47, 86, 119, 37, 36, 34, 2, 1, 226, 1, 1, 15, 14, 15, 46, 33, 36, 48, 14, 14, 12, 1, 1, 212, 2, 2, 15, 14, 13, 35, 23, 76, 73, 94, 27, 27, 22, 1, 39, 33, 33, 89, 51, 50, 108, 51, 80, 156, 78, 1, 78, 158, 81, 24, 84, 41, 22, 42, 16, 14, 19, 4, 5, 16, 0, 0, 2, 0, 225, 254, 110, 4, 100, 5, 176, 0, 57, 0, 70, 0, 0, 83, 5, 22, 22, 23, 22, 22, 7, 7, 6, 6, 23, 22, 22, 23, 37, 55, 38, 38, 39, 38, 54, 55, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 7, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 1, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 225, 1, 10, 51, 69, 20, 20, 13, 6, 15, 4, 6, 2, 2, 18, 20, 1, 16, 2, 20, 20, 2, 3, 5, 4, 16, 6, 11, 20, 20, 71, 54, 57, 99, 38, 37, 48, 5, 8, 66, 62, 62, 171, 97, 254, 230, 34, 1, 49, 48, 76, 25, 24, 20, 6, 8, 53, 39, 40, 99, 55, 212, 3, 56, 37, 255, 40, 17, 77, 50, 142, 49, 86, 34, 34, 46, 2, 71, 1, 2, 37, 30, 30, 82, 47, 105, 30, 67, 33, 33, 62, 25, 1, 24, 22, 54, 30, 29, 59, 28, 109, 54, 104, 45, 45, 71, 21, 25, 63, 41, 41, 103, 66, 106, 156, 52, 52, 53, 2, 1, 224, 1, 2, 29, 26, 27, 77, 49, 59, 82, 25, 26, 23, 1, 252, 244, 220, 234, 95, 161, 81, 78, 40, 96, 55, 54, 120, 0, 2, 0, 204, 254, 96, 4, 51, 4, 58, 0, 54, 0, 67, 0, 0, 83, 5, 22, 22, 23, 22, 22, 7, 7, 6, 6, 23, 20, 22, 23, 37, 55, 38, 38, 55, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 7, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 1, 55, 35, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 204, 1, 8, 35, 54, 17, 20, 16, 4, 11, 3, 4, 1, 9, 10, 1, 18, 1, 21, 5, 5, 11, 4, 8, 14, 15, 50, 38, 40, 70, 27, 27, 34, 3, 6, 68, 58, 59, 151, 76, 254, 235, 33, 1, 44, 31, 56, 20, 20, 20, 6, 6, 43, 30, 30, 72, 34, 226, 3, 33, 37, 255, 40, 17, 77, 50, 142, 49, 86, 34, 34, 46, 1, 135, 2, 1, 19, 16, 19, 59, 39, 77, 20, 41, 20, 21, 40, 18, 1, 16, 32, 72, 37, 78, 40, 76, 33, 33, 54, 18, 21, 50, 31, 30, 76, 48, 89, 126, 40, 40, 39, 2, 1, 222, 1, 1, 16, 16, 17, 50, 35, 39, 52, 16, 16, 14, 1, 1, 253, 194, 220, 234, 95, 161, 81, 78, 40, 96, 55, 54, 120, 0, 0, 1, 255, 173, 255, 234, 4, 150, 5, 176, 0, 69, 0, 0, 65, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 39, 35, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 52, 53, 52, 54, 55, 19, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 39, 39, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 55, 19, 2, 138, 157, 2, 3, 6, 7, 23, 17, 32, 103, 71, 69, 109, 42, 42, 61, 22, 21, 26, 8, 14, 7, 6, 231, 8, 16, 14, 3, 6, 5, 6, 16, 13, 13, 36, 25, 13, 12, 1, 1, 1, 1, 196, 253, 124, 117, 4, 11, 10, 10, 32, 25, 26, 72, 51, 17, 27, 39, 99, 147, 54, 53, 73, 25, 24, 31, 12, 78, 4, 202, 252, 91, 32, 61, 27, 30, 52, 21, 42, 48, 1, 1, 51, 44, 44, 114, 63, 62, 124, 54, 99, 200, 100, 100, 201, 100, 18, 60, 35, 35, 72, 30, 31, 42, 4, 7, 18, 12, 4, 7, 4, 8, 17, 9, 4, 141, 253, 80, 32, 105, 60, 61, 124, 49, 50, 62, 1, 1, 227, 2, 71, 60, 60, 158, 86, 86, 174, 75, 1, 202, 0, 0, 1, 255, 197, 255, 234, 4, 132, 4, 58, 0, 69, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 7, 6, 6, 7, 39, 7, 51, 22, 54, 55, 54, 54, 55, 54, 54, 63, 2, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 37, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 52, 52, 53, 52, 54, 55, 3, 101, 253, 133, 75, 3, 7, 6, 7, 21, 17, 18, 51, 36, 19, 33, 56, 82, 123, 45, 45, 60, 21, 20, 26, 10, 36, 99, 95, 2, 4, 6, 7, 23, 17, 33, 106, 74, 68, 108, 43, 43, 63, 23, 22, 28, 8, 13, 9, 14, 254, 254, 18, 3, 13, 2, 6, 4, 5, 16, 11, 12, 34, 23, 14, 11, 1, 3, 1, 4, 58, 254, 52, 24, 74, 42, 43, 86, 34, 35, 44, 1, 1, 240, 1, 55, 48, 48, 126, 70, 69, 143, 64, 231, 1, 253, 225, 35, 66, 29, 30, 54, 22, 44, 51, 1, 1, 44, 39, 39, 104, 58, 57, 120, 55, 94, 188, 94, 1, 94, 190, 95, 18, 54, 30, 31, 62, 26, 27, 37, 5, 7, 26, 16, 2, 4, 3, 13, 26, 11, 0, 0, 1, 255, 221, 255, 233, 4, 138, 5, 176, 0, 53, 0, 0, 65, 33, 3, 35, 19, 33, 3, 33, 19, 51, 3, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 37, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 53, 52, 54, 55, 3, 174, 254, 237, 109, 174, 109, 254, 237, 253, 1, 19, 105, 174, 42, 3, 3, 5, 6, 19, 15, 30, 102, 76, 71, 112, 44, 44, 65, 23, 23, 28, 8, 14, 6, 13, 254, 251, 17, 6, 14, 3, 6, 5, 5, 17, 12, 13, 36, 24, 4, 7, 1, 2, 2, 2, 1, 5, 176, 253, 142, 2, 114, 250, 80, 2, 92, 254, 241, 35, 68, 31, 30, 56, 24, 49, 59, 2, 2, 50, 43, 43, 114, 62, 62, 127, 56, 100, 199, 100, 1, 100, 202, 100, 18, 59, 35, 35, 73, 30, 30, 42, 4, 4, 9, 6, 5, 12, 6, 8, 17, 8, 0, 1, 255, 217, 255, 234, 4, 99, 4, 58, 0, 53, 0, 0, 65, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 39, 33, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 53, 52, 54, 55, 19, 33, 3, 35, 19, 33, 3, 33, 19, 1, 192, 16, 3, 4, 7, 8, 28, 19, 37, 113, 75, 66, 104, 41, 40, 60, 21, 20, 27, 7, 13, 4, 8, 254, 255, 8, 13, 12, 2, 4, 4, 4, 12, 10, 10, 29, 20, 18, 18, 4, 2, 2, 1, 1, 128, 254, 240, 74, 139, 74, 254, 240, 188, 1, 17, 75, 1, 173, 118, 35, 66, 28, 32, 55, 23, 44, 48, 1, 1, 46, 40, 39, 105, 58, 57, 117, 53, 94, 188, 95, 95, 190, 94, 16, 52, 30, 30, 63, 26, 27, 38, 6, 6, 22, 15, 8, 16, 9, 7, 15, 8, 3, 5, 254, 85, 1, 171, 251, 198, 1, 173, 0, 1, 0, 90, 255, 232, 4, 112, 5, 199, 0, 63, 0, 0, 69, 22, 54, 55, 54, 54, 55, 54, 38, 39, 37, 22, 22, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 54, 55, 19, 54, 54, 55, 54, 54, 55, 54, 54, 51, 22, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 22, 23, 22, 22, 23, 22, 22, 2, 38, 110, 196, 77, 76, 101, 15, 11, 9, 8, 254, 248, 14, 1, 15, 10, 49, 37, 37, 96, 56, 49, 70, 23, 24, 27, 5, 6, 2, 5, 41, 11, 52, 43, 21, 51, 29, 30, 70, 40, 73, 141, 63, 85, 80, 174, 93, 72, 130, 57, 49, 87, 38, 82, 104, 19, 40, 8, 4, 11, 10, 40, 28, 57, 184, 21, 3, 61, 60, 60, 176, 111, 86, 171, 86, 1, 85, 175, 86, 54, 88, 31, 31, 33, 2, 1, 39, 31, 31, 79, 43, 42, 86, 37, 1, 9, 67, 139, 56, 28, 46, 17, 17, 19, 1, 35, 35, 207, 49, 41, 2, 1, 30, 28, 23, 65, 40, 86, 225, 123, 254, 250, 58, 114, 53, 53, 99, 43, 87, 108, 0, 0, 1, 0, 107, 255, 233, 4, 68, 4, 80, 0, 51, 0, 0, 101, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 37, 22, 6, 7, 6, 6, 7, 6, 6, 2, 109, 68, 95, 28, 29, 21, 7, 5, 9, 55, 43, 42, 113, 68, 68, 135, 59, 69, 72, 161, 82, 120, 212, 82, 82, 106, 13, 5, 11, 60, 64, 63, 187, 117, 89, 168, 67, 67, 89, 9, 5, 7, 6, 254, 255, 8, 1, 8, 7, 36, 26, 27, 67, 204, 1, 53, 44, 43, 113, 60, 42, 64, 115, 44, 43, 51, 28, 33, 218, 40, 28, 1, 1, 80, 72, 72, 200, 120, 43, 116, 195, 71, 72, 82, 2, 2, 44, 47, 46, 141, 96, 47, 93, 47, 1, 48, 94, 48, 39, 56, 17, 18, 15, 0, 1, 0, 174, 255, 234, 4, 132, 5, 176, 0, 43, 0, 0, 65, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 37, 22, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 54, 55, 19, 33, 55, 33, 7, 1, 227, 144, 7, 32, 40, 40, 128, 88, 76, 126, 51, 50, 78, 28, 28, 36, 9, 14, 6, 14, 254, 252, 17, 6, 15, 3, 11, 9, 9, 27, 19, 20, 53, 34, 30, 32, 7, 7, 1, 2, 143, 1, 66, 41, 252, 118, 40, 4, 202, 252, 171, 85, 143, 52, 53, 60, 1, 1, 45, 40, 40, 108, 63, 62, 133, 65, 100, 199, 100, 1, 100, 201, 100, 23, 67, 37, 37, 74, 28, 29, 34, 2, 2, 36, 25, 25, 56, 22, 3, 86, 230, 230, 0, 0, 1, 0, 108, 255, 233, 4, 79, 4, 58, 0, 43, 0, 0, 65, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 39, 22, 22, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 55, 33, 7, 1, 126, 79, 7, 36, 42, 42, 131, 89, 99, 160, 58, 33, 52, 18, 14, 19, 5, 9, 22, 17, 254, 22, 10, 12, 2, 8, 6, 5, 16, 9, 20, 60, 42, 32, 38, 9, 9, 3, 3, 80, 1, 79, 40, 252, 142, 39, 3, 88, 254, 27, 87, 143, 51, 52, 58, 1, 2, 72, 62, 35, 85, 47, 36, 78, 40, 72, 143, 71, 1, 71, 145, 73, 16, 37, 19, 19, 39, 17, 35, 46, 1, 1, 34, 25, 25, 57, 25, 1, 230, 226, 226, 0, 1, 0, 23, 255, 233, 4, 136, 5, 199, 0, 76, 0, 0, 83, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 5, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 23, 55, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 31, 8, 77, 69, 68, 181, 95, 100, 187, 74, 74, 96, 9, 254, 238, 8, 44, 33, 33, 83, 46, 45, 87, 32, 32, 35, 6, 7, 52, 40, 40, 102, 58, 178, 39, 206, 46, 73, 24, 24, 20, 6, 7, 54, 39, 39, 96, 48, 41, 63, 21, 21, 20, 1, 1, 18, 2, 62, 56, 57, 156, 91, 102, 199, 79, 80, 103, 7, 4, 30, 30, 20, 55, 32, 63, 105, 39, 40, 48, 1, 144, 107, 157, 52, 52, 51, 2, 2, 53, 54, 54, 161, 106, 2, 46, 74, 26, 27, 28, 1, 25, 25, 24, 75, 51, 61, 88, 28, 27, 26, 1, 220, 1, 1, 26, 24, 24, 72, 48, 52, 77, 25, 24, 23, 1, 1, 28, 24, 24, 67, 39, 1, 94, 151, 53, 53, 60, 2, 2, 47, 51, 52, 163, 113, 57, 102, 42, 28, 50, 20, 23, 64, 43, 44, 111, 255, 255, 255, 222, 254, 34, 3, 168, 0, 0, 4, 39, 0, 102, 255, 221, 254, 251, 0, 6, 0, 102, 10, 0, 0, 1, 1, 14, 3, 228, 2, 142, 6, 24, 0, 12, 0, 0, 65, 39, 51, 23, 22, 22, 23, 7, 38, 38, 39, 38, 38, 1, 42, 28, 218, 29, 16, 71, 50, 122, 45, 77, 30, 31, 42, 5, 108, 172, 173, 88, 150, 72, 81, 37, 88, 50, 50, 109, 255, 255, 0, 157, 255, 235, 3, 217, 1, 90, 4, 39, 0, 96, 255, 79, 0, 0, 0, 7, 0, 96, 1, 21, 0, 0, 0, 2, 1, 33, 2, 48, 4, 44, 5, 197, 0, 10, 0, 14, 0, 0, 65, 19, 35, 1, 7, 33, 7, 51, 55, 51, 55, 33, 1, 55, 3, 3, 156, 104, 184, 253, 228, 15, 1, 185, 33, 172, 32, 143, 24, 253, 205, 1, 41, 24, 74, 3, 108, 2, 89, 253, 145, 111, 183, 183, 133, 1, 87, 39, 254, 130, 0, 1, 1, 42, 2, 141, 4, 24, 5, 187, 0, 28, 0, 0, 65, 7, 3, 51, 19, 54, 54, 55, 54, 54, 51, 22, 22, 23, 22, 6, 7, 3, 51, 19, 54, 38, 39, 38, 38, 39, 38, 6, 7, 2, 82, 157, 139, 205, 96, 13, 31, 18, 17, 41, 23, 38, 39, 8, 7, 2, 3, 72, 203, 82, 6, 16, 25, 26, 89, 67, 76, 111, 42, 5, 174, 1, 252, 224, 2, 40, 19, 31, 11, 10, 10, 1, 38, 28, 28, 65, 28, 254, 67, 1, 250, 59, 110, 43, 43, 51, 1, 1, 77, 59, 0, 1, 0, 103, 255, 236, 4, 199, 5, 198, 0, 63, 0, 0, 65, 55, 33, 55, 33, 55, 33, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 35, 7, 51, 7, 35, 7, 55, 6, 6, 21, 20, 22, 23, 22, 22, 23, 22, 54, 55, 39, 6, 6, 39, 38, 38, 39, 38, 38, 53, 52, 54, 55, 3, 107, 27, 254, 178, 23, 1, 76, 26, 254, 173, 3, 6, 4, 20, 59, 39, 46, 121, 77, 47, 90, 44, 57, 59, 116, 60, 131, 213, 81, 74, 109, 32, 4, 6, 3, 159, 26, 166, 22, 165, 26, 174, 3, 3, 55, 51, 62, 187, 118, 62, 122, 60, 11, 48, 98, 51, 72, 98, 27, 22, 20, 1, 2, 2, 8, 148, 126, 147, 10, 19, 10, 57, 95, 35, 41, 44, 1, 1, 18, 15, 228, 13, 18, 1, 1, 76, 70, 64, 176, 106, 11, 23, 11, 147, 126, 148, 1, 22, 42, 20, 91, 153, 58, 72, 81, 1, 1, 14, 14, 230, 15, 17, 1, 1, 48, 42, 32, 83, 48, 14, 29, 15, 0, 0, 4, 0, 137, 255, 234, 4, 82, 5, 199, 0, 51, 0, 77, 0, 103, 0, 107, 0, 0, 65, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 52, 55, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 23, 52, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 3, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 51, 22, 22, 23, 22, 20, 7, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 5, 1, 39, 1, 2, 145, 180, 4, 15, 11, 12, 33, 21, 24, 26, 5, 6, 2, 10, 3, 15, 13, 13, 38, 27, 22, 28, 8, 7, 4, 182, 33, 31, 32, 93, 59, 66, 104, 37, 38, 46, 6, 6, 4, 26, 30, 30, 92, 63, 61, 99, 37, 36, 42, 84, 7, 4, 26, 30, 30, 93, 63, 66, 104, 38, 37, 44, 6, 7, 4, 26, 29, 30, 93, 63, 66, 105, 37, 38, 44, 170, 7, 3, 14, 13, 12, 37, 26, 25, 27, 6, 6, 1, 7, 3, 12, 12, 12, 38, 28, 24, 26, 6, 6, 2, 254, 143, 2, 140, 127, 253, 117, 4, 42, 3, 18, 36, 14, 15, 18, 30, 22, 21, 46, 17, 78, 21, 50, 21, 21, 28, 20, 15, 16, 38, 18, 1, 57, 97, 36, 36, 41, 2, 1, 48, 41, 42, 111, 61, 77, 57, 107, 41, 42, 51, 1, 2, 39, 36, 36, 98, 253, 117, 76, 58, 108, 41, 42, 51, 1, 1, 48, 42, 41, 110, 61, 77, 58, 108, 42, 41, 50, 2, 1, 48, 41, 42, 111, 139, 79, 21, 49, 21, 21, 28, 1, 30, 21, 22, 47, 18, 78, 22, 50, 21, 21, 27, 1, 1, 31, 22, 21, 46, 32, 3, 160, 73, 252, 96, 0, 0, 2, 0, 132, 255, 234, 4, 93, 5, 146, 0, 44, 0, 67, 0, 0, 69, 19, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 3, 6, 6, 35, 7, 54, 54, 55, 7, 6, 22, 23, 22, 22, 3, 19, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 2, 240, 24, 58, 74, 20, 20, 9, 9, 8, 75, 164, 72, 73, 103, 9, 4, 5, 32, 35, 36, 110, 72, 49, 88, 38, 38, 64, 27, 53, 65, 12, 62, 46, 92, 46, 20, 47, 92, 46, 3, 19, 58, 62, 62, 176, 18, 53, 3, 16, 14, 7, 19, 12, 12, 27, 16, 20, 22, 5, 5, 1, 1, 6, 8, 41, 29, 30, 75, 22, 1, 5, 3, 35, 31, 30, 87, 55, 47, 34, 97, 63, 64, 163, 94, 43, 69, 122, 46, 46, 55, 2, 1, 17, 17, 17, 50, 31, 62, 164, 89, 254, 162, 6, 6, 188, 2, 7, 8, 17, 110, 165, 56, 56, 60, 2, 235, 1, 36, 25, 62, 27, 13, 24, 8, 7, 8, 1, 2, 23, 16, 17, 36, 15, 44, 51, 90, 38, 39, 66, 0, 4, 0, 10, 0, 0, 4, 201, 5, 193, 0, 9, 0, 47, 0, 79, 0, 83, 0, 0, 97, 19, 35, 3, 3, 35, 3, 51, 19, 19, 1, 7, 6, 22, 23, 22, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 6, 6, 23, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 53, 52, 54, 19, 55, 33, 7, 2, 111, 253, 187, 152, 89, 185, 253, 187, 153, 88, 1, 221, 23, 1, 3, 3, 4, 12, 8, 17, 54, 39, 39, 60, 21, 10, 16, 6, 7, 9, 2, 23, 1, 2, 3, 4, 11, 9, 17, 56, 39, 39, 60, 21, 9, 15, 6, 7, 10, 82, 23, 2, 6, 7, 6, 22, 18, 18, 16, 3, 2, 3, 1, 23, 1, 3, 1, 2, 4, 3, 7, 22, 18, 18, 16, 2, 1, 1, 2, 134, 18, 254, 215, 17, 5, 176, 252, 152, 3, 104, 250, 80, 3, 108, 252, 148, 5, 8, 214, 18, 35, 16, 16, 28, 13, 26, 32, 31, 26, 12, 28, 16, 16, 37, 18, 214, 17, 33, 16, 17, 31, 13, 26, 32, 32, 26, 12, 26, 14, 17, 39, 225, 197, 13, 33, 14, 14, 20, 21, 14, 15, 32, 12, 196, 7, 17, 8, 7, 15, 6, 15, 19, 21, 15, 5, 12, 5, 9, 19, 254, 171, 98, 98, 0, 2, 0, 128, 255, 235, 4, 109, 4, 80, 0, 42, 0, 54, 0, 0, 101, 55, 6, 6, 7, 6, 6, 39, 38, 38, 39, 19, 33, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 3, 22, 22, 23, 3, 33, 19, 54, 54, 55, 54, 54, 3, 166, 1, 45, 92, 48, 48, 101, 52, 69, 121, 46, 61, 2, 236, 4, 7, 43, 50, 51, 159, 109, 75, 142, 63, 63, 106, 40, 41, 51, 7, 5, 7, 11, 12, 42, 29, 27, 71, 42, 42, 97, 54, 99, 190, 118, 69, 118, 44, 52, 253, 245, 52, 31, 68, 37, 36, 78, 92, 105, 26, 45, 16, 17, 18, 2, 2, 54, 51, 1, 74, 49, 98, 191, 76, 76, 95, 3, 2, 43, 39, 40, 109, 64, 64, 141, 71, 49, 98, 46, 49, 92, 40, 39, 65, 23, 23, 27, 1, 2, 60, 3, 201, 1, 58, 52, 254, 224, 1, 22, 25, 45, 17, 16, 19, 0, 5, 0, 207, 255, 244, 4, 169, 5, 171, 0, 6, 0, 54, 0, 78, 0, 102, 0, 106, 0, 0, 65, 19, 35, 5, 7, 55, 3, 5, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 1, 215, 116, 22, 254, 180, 26, 174, 86, 3, 128, 2, 39, 34, 34, 87, 45, 49, 95, 38, 38, 47, 1, 1, 11, 10, 10, 27, 17, 28, 51, 19, 18, 24, 1, 2, 44, 36, 36, 91, 46, 51, 101, 40, 41, 51, 2, 1, 15, 15, 11, 29, 18, 25, 43, 16, 16, 20, 207, 3, 21, 15, 15, 38, 19, 17, 30, 11, 11, 11, 3, 3, 22, 15, 16, 36, 19, 16, 30, 12, 11, 11, 31, 2, 16, 12, 13, 32, 18, 16, 26, 8, 7, 7, 2, 3, 18, 13, 12, 31, 16, 17, 27, 8, 7, 6, 253, 129, 2, 140, 127, 253, 117, 2, 232, 2, 195, 104, 147, 38, 254, 18, 219, 51, 74, 24, 24, 22, 1, 24, 26, 27, 79, 55, 23, 43, 18, 16, 28, 11, 15, 36, 22, 22, 54, 34, 54, 75, 23, 24, 22, 1, 1, 24, 25, 26, 82, 58, 29, 53, 21, 16, 27, 10, 15, 32, 20, 20, 49, 254, 235, 20, 31, 11, 11, 11, 9, 10, 9, 28, 19, 20, 29, 11, 10, 10, 8, 9, 9, 26, 1, 17, 17, 27, 10, 10, 11, 10, 9, 9, 23, 15, 18, 28, 10, 9, 9, 10, 9, 8, 23, 254, 216, 3, 160, 73, 252, 96, 0, 0, 5, 0, 99, 255, 244, 4, 167, 5, 188, 0, 73, 0, 121, 0, 145, 0, 169, 0, 173, 0, 0, 65, 7, 51, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 39, 35, 20, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 51, 54, 54, 51, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 1, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 1, 68, 10, 82, 19, 36, 13, 13, 12, 3, 4, 23, 16, 17, 40, 20, 21, 35, 13, 11, 14, 1, 172, 41, 35, 34, 92, 52, 51, 107, 44, 44, 57, 1, 1, 16, 17, 13, 35, 23, 28, 50, 20, 19, 24, 2, 3, 46, 38, 37, 93, 45, 51, 94, 38, 38, 49, 5, 182, 13, 53, 33, 15, 29, 11, 11, 9, 2, 4, 23, 17, 17, 41, 21, 3, 24, 2, 39, 34, 34, 87, 45, 49, 95, 38, 38, 47, 1, 1, 9, 8, 9, 29, 20, 28, 51, 19, 18, 24, 1, 2, 44, 36, 36, 91, 46, 51, 101, 40, 41, 51, 2, 1, 14, 13, 11, 31, 19, 25, 43, 16, 16, 20, 207, 3, 21, 15, 15, 38, 19, 17, 30, 11, 11, 11, 3, 3, 22, 15, 16, 36, 19, 16, 30, 12, 11, 11, 31, 3, 15, 12, 13, 32, 18, 16, 26, 8, 7, 7, 2, 3, 16, 11, 13, 32, 18, 17, 28, 8, 7, 5, 253, 126, 2, 140, 127, 253, 117, 4, 144, 122, 1, 7, 9, 8, 30, 24, 21, 33, 10, 10, 11, 9, 10, 9, 28, 20, 55, 83, 28, 27, 28, 1, 1, 23, 25, 26, 83, 59, 32, 54, 21, 15, 24, 7, 13, 30, 20, 19, 51, 33, 54, 75, 23, 23, 22, 1, 24, 24, 25, 77, 54, 31, 27, 8, 8, 8, 25, 18, 23, 31, 11, 10, 11, 1, 253, 125, 51, 74, 24, 24, 22, 1, 24, 26, 27, 79, 55, 20, 39, 16, 19, 33, 12, 15, 36, 22, 22, 54, 34, 54, 75, 23, 24, 22, 1, 1, 24, 25, 26, 82, 58, 28, 50, 21, 17, 29, 11, 15, 32, 20, 20, 49, 254, 235, 20, 31, 11, 11, 11, 9, 10, 9, 28, 19, 20, 29, 11, 10, 10, 8, 9, 9, 26, 1, 17, 16, 28, 9, 11, 11, 10, 10, 8, 24, 14, 17, 26, 10, 10, 11, 10, 10, 8, 23, 254, 208, 3, 160, 73, 252, 96, 0, 5, 0, 96, 255, 241, 4, 133, 5, 183, 0, 45, 0, 93, 0, 117, 0, 141, 0, 145, 0, 0, 83, 23, 54, 54, 23, 50, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 6, 38, 39, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 34, 6, 7, 55, 5, 55, 33, 1, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 136, 148, 23, 51, 29, 24, 35, 10, 9, 7, 3, 3, 16, 13, 15, 42, 27, 38, 45, 2, 172, 2, 44, 36, 36, 90, 47, 58, 103, 40, 40, 48, 2, 2, 28, 28, 27, 81, 51, 28, 55, 26, 48, 1, 37, 25, 254, 71, 3, 142, 2, 39, 34, 34, 87, 45, 49, 95, 38, 38, 47, 1, 1, 7, 8, 9, 30, 21, 28, 51, 19, 18, 24, 1, 2, 44, 36, 36, 91, 46, 51, 101, 40, 41, 51, 2, 1, 17, 17, 11, 27, 16, 25, 43, 16, 16, 20, 207, 3, 21, 15, 15, 38, 19, 17, 30, 11, 11, 11, 3, 3, 22, 15, 16, 36, 19, 16, 30, 12, 11, 11, 31, 2, 16, 12, 12, 33, 18, 15, 24, 8, 9, 8, 2, 3, 19, 13, 12, 30, 16, 18, 28, 8, 6, 5, 253, 148, 2, 140, 127, 253, 117, 4, 76, 38, 16, 17, 1, 15, 14, 13, 33, 21, 23, 38, 14, 16, 19, 2, 28, 40, 1, 52, 78, 27, 26, 29, 1, 1, 35, 33, 33, 96, 59, 50, 82, 29, 29, 30, 12, 11, 127, 1, 143, 252, 83, 51, 74, 24, 24, 22, 1, 24, 26, 27, 79, 55, 19, 36, 16, 20, 35, 13, 15, 36, 22, 22, 54, 34, 54, 75, 23, 24, 22, 1, 1, 24, 25, 26, 82, 58, 31, 55, 23, 14, 24, 9, 15, 32, 20, 20, 49, 254, 235, 20, 31, 11, 11, 11, 9, 10, 9, 28, 19, 20, 29, 11, 10, 10, 8, 9, 9, 26, 1, 17, 17, 27, 9, 11, 11, 8, 8, 9, 25, 16, 18, 29, 10, 8, 9, 11, 10, 8, 22, 254, 220, 3, 160, 73, 252, 96, 0, 0, 5, 0, 180, 255, 244, 4, 155, 5, 177, 0, 6, 0, 54, 0, 78, 0, 102, 0, 106, 0, 0, 65, 55, 33, 7, 33, 1, 51, 5, 54, 38, 39, 38, 38, 39, 34, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 19, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 1, 1, 39, 1, 2, 254, 20, 253, 210, 26, 1, 111, 254, 123, 198, 3, 31, 2, 39, 34, 34, 87, 45, 49, 95, 38, 38, 47, 1, 1, 9, 9, 10, 28, 19, 28, 51, 19, 18, 24, 1, 2, 44, 36, 36, 91, 46, 51, 101, 40, 41, 51, 2, 1, 14, 13, 11, 31, 19, 25, 43, 16, 16, 20, 207, 3, 21, 15, 15, 38, 19, 17, 30, 11, 11, 11, 3, 3, 22, 15, 16, 36, 19, 16, 30, 12, 11, 11, 31, 2, 16, 11, 13, 33, 18, 14, 23, 8, 10, 9, 2, 3, 15, 10, 13, 34, 18, 18, 29, 8, 6, 3, 253, 101, 2, 140, 127, 253, 117, 5, 64, 113, 146, 253, 204, 222, 51, 74, 24, 24, 22, 1, 24, 26, 27, 79, 55, 21, 40, 17, 18, 31, 12, 15, 36, 22, 22, 54, 34, 54, 75, 23, 24, 22, 1, 1, 24, 25, 26, 82, 58, 28, 50, 21, 17, 29, 11, 15, 32, 20, 20, 49, 254, 235, 20, 31, 11, 11, 11, 9, 10, 9, 28, 19, 20, 29, 11, 10, 10, 8, 9, 9, 26, 1, 17, 16, 27, 9, 11, 12, 8, 7, 8, 26, 17, 16, 26, 9, 11, 12, 12, 11, 8, 21, 254, 218, 3, 160, 73, 252, 96, 0, 2, 0, 82, 255, 233, 4, 102, 5, 255, 0, 53, 0, 82, 0, 0, 65, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 55, 54, 54, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 23, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 7, 38, 38, 7, 22, 22, 23, 22, 22, 23, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 2, 113, 113, 184, 68, 68, 85, 12, 3, 10, 42, 53, 52, 167, 114, 91, 152, 62, 62, 96, 36, 35, 46, 11, 8, 11, 6, 11, 11, 56, 51, 52, 154, 110, 81, 152, 72, 21, 36, 70, 36, 26, 53, 28, 49, 76, 28, 27, 37, 11, 10, 7, 2, 53, 133, 64, 37, 64, 25, 23, 35, 10, 18, 6, 19, 15, 16, 44, 29, 30, 77, 48, 61, 72, 17, 18, 6, 5, 2, 7, 40, 34, 34, 96, 4, 11, 2, 77, 69, 69, 187, 106, 22, 106, 190, 72, 72, 86, 2, 2, 54, 49, 48, 131, 75, 75, 161, 78, 59, 83, 187, 91, 91, 168, 64, 64, 77, 1, 2, 37, 36, 204, 13, 21, 6, 5, 4, 1, 2, 36, 30, 30, 78, 42, 43, 89, 40, 57, 60, 222, 1, 21, 19, 18, 51, 33, 109, 39, 84, 40, 41, 72, 27, 27, 30, 2, 2, 55, 43, 42, 103, 49, 20, 57, 108, 42, 42, 49, 0, 0, 1, 0, 18, 255, 9, 4, 140, 5, 176, 0, 7, 0, 0, 69, 1, 33, 1, 33, 19, 33, 3, 3, 130, 1, 10, 252, 145, 254, 245, 1, 18, 231, 1, 78, 232, 247, 6, 167, 249, 89, 5, 203, 250, 53, 0, 0, 1, 255, 141, 254, 243, 5, 5, 5, 176, 0, 12, 0, 0, 65, 55, 1, 33, 55, 33, 7, 1, 1, 7, 33, 55, 33, 3, 108, 4, 254, 139, 2, 226, 40, 251, 179, 25, 1, 180, 253, 86, 28, 4, 115, 40, 253, 6, 2, 69, 34, 2, 104, 225, 140, 253, 62, 253, 51, 162, 225, 0, 0, 1, 0, 24, 0, 0, 4, 219, 5, 176, 0, 10, 0, 0, 65, 3, 5, 7, 51, 19, 51, 1, 35, 1, 7, 1, 226, 58, 254, 152, 40, 220, 95, 227, 2, 165, 230, 254, 19, 37, 1, 54, 1, 197, 1, 227, 253, 233, 5, 176, 251, 150, 85, 0, 0, 3, 0, 54, 0, 243, 4, 171, 3, 215, 0, 73, 0, 111, 0, 149, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 39, 7, 6, 6, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 50, 22, 23, 22, 22, 23, 22, 6, 5, 55, 54, 54, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 21, 7, 6, 6, 7, 6, 6, 7, 6, 6, 7, 6, 38, 39, 38, 38, 39, 38, 54, 4, 166, 3, 2, 2, 4, 5, 23, 18, 31, 102, 73, 50, 84, 36, 18, 33, 15, 17, 30, 14, 8, 20, 12, 11, 29, 15, 32, 77, 43, 78, 120, 41, 21, 33, 11, 12, 15, 3, 3, 2, 3, 5, 6, 22, 16, 30, 102, 74, 50, 85, 36, 18, 34, 15, 16, 29, 13, 7, 17, 11, 12, 30, 17, 31, 76, 45, 79, 120, 42, 23, 36, 11, 10, 12, 193, 3, 2, 5, 5, 4, 12, 8, 16, 49, 35, 26, 49, 18, 3, 6, 3, 13, 14, 1, 3, 7, 32, 23, 2, 5, 3, 25, 58, 28, 32, 36, 8, 4, 4, 1, 1, 1, 253, 26, 3, 2, 6, 4, 5, 11, 8, 16, 49, 36, 25, 47, 19, 3, 4, 3, 14, 17, 3, 7, 27, 19, 4, 8, 5, 25, 59, 29, 33, 37, 8, 4, 4, 1, 1, 1, 2, 89, 37, 26, 50, 24, 37, 69, 29, 48, 59, 1, 1, 32, 26, 13, 30, 16, 18, 37, 19, 19, 37, 16, 17, 31, 13, 25, 30, 2, 2, 56, 49, 24, 58, 32, 31, 69, 36, 37, 30, 59, 28, 33, 62, 26, 48, 59, 1, 1, 34, 28, 14, 33, 17, 18, 37, 18, 18, 36, 16, 19, 33, 15, 27, 32, 1, 3, 57, 50, 27, 65, 36, 29, 62, 69, 36, 15, 30, 15, 14, 26, 11, 23, 28, 2, 1, 34, 25, 4, 10, 4, 22, 46, 21, 16, 23, 51, 23, 2, 6, 2, 23, 31, 1, 28, 21, 10, 23, 12, 13, 29, 65, 36, 16, 31, 15, 13, 26, 11, 23, 27, 1, 1, 30, 22, 3, 6, 4, 21, 46, 21, 16, 22, 50, 22, 5, 10, 5, 26, 34, 1, 1, 27, 22, 10, 25, 13, 13, 26, 0, 0, 1, 0, 70, 254, 73, 4, 105, 6, 48, 0, 40, 0, 0, 69, 49, 19, 54, 54, 55, 54, 54, 51, 50, 22, 23, 55, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 6, 6, 7, 6, 6, 7, 6, 38, 39, 7, 22, 22, 51, 50, 54, 55, 54, 54, 2, 112, 188, 5, 24, 18, 23, 67, 42, 24, 46, 23, 45, 40, 80, 41, 91, 149, 55, 55, 69, 10, 187, 5, 18, 16, 17, 51, 37, 26, 53, 26, 33, 35, 70, 36, 93, 144, 52, 51, 62, 34, 4, 210, 32, 54, 20, 25, 28, 7, 5, 213, 8, 14, 1, 1, 53, 49, 50, 143, 89, 251, 46, 31, 64, 26, 26, 34, 1, 1, 9, 8, 220, 8, 11, 61, 54, 54, 149, 0, 2, 0, 150, 0, 0, 4, 74, 5, 176, 0, 5, 0, 13, 0, 0, 65, 1, 19, 51, 1, 3, 7, 23, 19, 1, 7, 39, 3, 1, 2, 116, 254, 34, 240, 229, 1, 223, 241, 139, 8, 105, 254, 245, 34, 7, 108, 1, 9, 5, 176, 253, 52, 253, 28, 2, 202, 2, 230, 231, 68, 254, 95, 254, 65, 67, 68, 1, 164, 1, 185, 0, 0, 22, 255, 234, 0, 8, 4, 168, 4, 8, 0, 16, 0, 37, 0, 51, 0, 67, 0, 73, 0, 79, 0, 85, 0, 91, 0, 100, 0, 104, 0, 108, 0, 112, 0, 116, 0, 120, 0, 124, 0, 139, 0, 143, 0, 147, 0, 151, 0, 155, 0, 159, 0, 163, 0, 0, 65, 7, 6, 6, 7, 6, 38, 39, 38, 38, 53, 55, 54, 54, 55, 54, 22, 23, 35, 19, 51, 50, 22, 23, 22, 22, 21, 6, 6, 7, 22, 22, 23, 22, 6, 7, 6, 6, 39, 55, 54, 38, 39, 34, 6, 7, 7, 6, 22, 23, 50, 54, 37, 55, 51, 7, 6, 6, 7, 6, 38, 39, 23, 22, 22, 51, 50, 54, 1, 51, 55, 7, 55, 35, 5, 55, 55, 35, 7, 39, 1, 51, 55, 23, 55, 7, 5, 55, 7, 51, 55, 39, 1, 39, 7, 55, 54, 54, 55, 54, 38, 3, 51, 55, 35, 23, 51, 55, 35, 5, 51, 55, 35, 19, 51, 55, 35, 23, 51, 55, 35, 5, 51, 55, 35, 1, 7, 51, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 35, 5, 55, 35, 7, 23, 55, 35, 7, 19, 55, 35, 7, 5, 55, 35, 7, 23, 55, 35, 7, 19, 55, 35, 7, 1, 209, 1, 5, 66, 54, 31, 50, 16, 14, 15, 2, 5, 67, 54, 56, 66, 139, 132, 56, 85, 19, 40, 16, 16, 19, 1, 31, 21, 20, 23, 1, 1, 19, 16, 16, 40, 216, 9, 2, 23, 35, 37, 43, 8, 9, 2, 24, 35, 37, 43, 2, 1, 34, 50, 25, 7, 54, 44, 51, 55, 3, 47, 2, 13, 28, 25, 33, 252, 97, 165, 19, 111, 25, 59, 3, 64, 169, 33, 57, 26, 100, 253, 28, 59, 22, 99, 19, 168, 3, 89, 103, 17, 59, 31, 158, 254, 101, 72, 25, 64, 23, 43, 5, 3, 24, 51, 147, 17, 147, 196, 148, 17, 148, 254, 70, 146, 17, 146, 29, 148, 16, 147, 197, 147, 17, 147, 254, 69, 146, 17, 146, 1, 89, 19, 44, 12, 25, 11, 11, 16, 3, 2, 7, 7, 8, 19, 9, 254, 0, 31, 59, 31, 23, 31, 59, 31, 131, 31, 59, 31, 3, 230, 31, 58, 31, 22, 31, 58, 31, 130, 31, 58, 31, 2, 35, 62, 52, 66, 1, 1, 23, 19, 16, 42, 24, 62, 52, 66, 1, 1, 70, 233, 1, 47, 7, 9, 9, 31, 24, 27, 30, 14, 9, 31, 23, 24, 33, 10, 11, 10, 118, 65, 30, 48, 1, 49, 33, 63, 32, 48, 1, 49, 10, 208, 209, 43, 50, 2, 2, 49, 49, 3, 23, 29, 32, 254, 79, 67, 2, 113, 178, 2, 176, 113, 2, 3, 28, 95, 2, 68, 2, 66, 2, 95, 159, 2, 253, 239, 2, 97, 1, 3, 23, 26, 20, 19, 1, 208, 68, 68, 68, 68, 68, 252, 0, 67, 67, 67, 67, 67, 2, 38, 86, 1, 6, 6, 5, 18, 14, 12, 14, 4, 3, 2, 167, 142, 142, 207, 141, 141, 1, 159, 141, 141, 208, 142, 142, 207, 141, 141, 1, 159, 141, 141, 0, 0, 5, 0, 2, 253, 213, 4, 162, 8, 98, 0, 3, 0, 47, 0, 51, 0, 55, 0, 59, 0, 0, 65, 9, 2, 5, 35, 52, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 53, 52, 38, 35, 34, 6, 7, 35, 54, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 7, 6, 6, 7, 6, 6, 21, 21, 35, 53, 19, 21, 51, 53, 3, 21, 51, 53, 2, 85, 253, 173, 2, 83, 2, 77, 254, 26, 202, 8, 11, 10, 35, 29, 10, 27, 12, 12, 17, 32, 37, 24, 41, 2, 203, 1, 43, 37, 36, 97, 56, 64, 102, 35, 34, 37, 23, 18, 18, 45, 22, 11, 17, 6, 6, 6, 202, 94, 4, 6, 4, 6, 82, 252, 49, 252, 49, 3, 207, 251, 48, 50, 19, 19, 40, 36, 13, 39, 24, 23, 51, 26, 52, 64, 48, 55, 70, 101, 33, 32, 30, 39, 36, 37, 103, 64, 41, 64, 28, 29, 55, 31, 16, 29, 15, 16, 39, 116, 170, 170, 252, 172, 4, 4, 10, 137, 4, 4, 0, 0, 2, 1, 131, 4, 234, 4, 78, 6, 240, 0, 6, 0, 44, 0, 0, 65, 39, 35, 5, 51, 55, 23, 19, 39, 6, 6, 7, 6, 6, 7, 6, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 22, 23, 22, 22, 51, 54, 54, 55, 54, 54, 4, 78, 229, 171, 254, 197, 211, 184, 132, 170, 90, 4, 11, 8, 9, 25, 17, 27, 49, 25, 25, 50, 27, 36, 53, 18, 19, 23, 4, 94, 4, 11, 8, 8, 24, 17, 27, 49, 25, 24, 50, 28, 36, 53, 18, 18, 22, 4, 234, 248, 248, 149, 149, 1, 230, 32, 14, 32, 14, 14, 20, 2, 3, 20, 14, 13, 23, 34, 26, 26, 64, 30, 27, 13, 31, 13, 13, 18, 2, 3, 21, 13, 14, 22, 1, 34, 26, 26, 64, 0, 2, 1, 115, 4, 234, 5, 67, 6, 178, 0, 6, 0, 34, 0, 0, 65, 39, 35, 5, 51, 55, 23, 55, 51, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 7, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 4, 62, 230, 173, 254, 200, 211, 183, 134, 207, 99, 8, 23, 42, 17, 21, 26, 2, 3, 46, 34, 35, 80, 31, 12, 13, 51, 25, 24, 34, 4, 3, 29, 19, 20, 41, 15, 4, 234, 235, 235, 140, 140, 129, 61, 5, 17, 14, 16, 47, 31, 43, 53, 15, 14, 10, 1, 82, 1, 1, 5, 5, 24, 24, 20, 23, 5, 6, 3, 1, 0, 0, 2, 0, 181, 4, 247, 4, 96, 6, 145, 0, 6, 0, 10, 0, 0, 65, 39, 35, 5, 51, 55, 23, 37, 3, 35, 19, 4, 96, 237, 159, 254, 193, 221, 171, 125, 254, 95, 109, 215, 171, 4, 247, 235, 235, 129, 129, 140, 1, 14, 254, 242, 0, 2, 1, 115, 4, 234, 5, 195, 6, 133, 0, 6, 0, 10, 0, 0, 65, 5, 51, 55, 23, 51, 39, 37, 3, 51, 1, 2, 179, 254, 192, 222, 170, 125, 199, 238, 1, 137, 203, 170, 1, 10, 5, 213, 235, 129, 129, 235, 176, 254, 241, 1, 15, 0, 0, 2, 1, 181, 4, 200, 4, 74, 6, 113, 0, 25, 0, 29, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 39, 39, 35, 23, 4, 74, 184, 6, 25, 17, 23, 62, 34, 29, 48, 17, 18, 18, 1, 181, 1, 57, 45, 45, 111, 56, 57, 119, 50, 49, 66, 249, 114, 210, 163, 5, 177, 1, 26, 38, 14, 18, 17, 1, 13, 14, 13, 42, 30, 2, 64, 88, 27, 28, 25, 1, 1, 23, 28, 27, 89, 71, 187, 187, 0, 1, 2, 33, 4, 80, 3, 122, 6, 27, 0, 12, 0, 0, 65, 7, 51, 55, 54, 54, 55, 39, 6, 6, 7, 6, 6, 2, 53, 20, 216, 23, 14, 54, 38, 139, 41, 64, 22, 23, 29, 4, 215, 135, 124, 70, 124, 60, 81, 27, 72, 42, 42, 93, 0, 2, 255, 168, 0, 0, 4, 40, 4, 141, 0, 7, 0, 12, 0, 0, 101, 23, 33, 3, 33, 1, 33, 55, 55, 19, 55, 23, 19, 2, 244, 42, 1, 10, 246, 254, 249, 253, 125, 1, 31, 116, 107, 188, 30, 11, 66, 221, 221, 4, 141, 251, 115, 221, 204, 1, 101, 57, 58, 254, 156, 0, 0, 3, 0, 51, 0, 0, 4, 91, 4, 141, 0, 26, 0, 41, 0, 56, 0, 0, 115, 33, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 19, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 51, 1, 251, 128, 220, 62, 34, 44, 3, 2, 18, 20, 20, 60, 40, 45, 77, 29, 29, 36, 3, 3, 32, 30, 60, 204, 100, 254, 77, 155, 244, 31, 52, 18, 18, 16, 6, 6, 44, 30, 30, 70, 33, 207, 79, 46, 210, 31, 55, 20, 19, 18, 6, 6, 39, 28, 28, 67, 34, 61, 72, 39, 103, 67, 41, 76, 33, 32, 49, 13, 18, 48, 33, 32, 82, 51, 61, 93, 35, 68, 55, 2, 1, 253, 93, 1, 1, 15, 15, 16, 49, 35, 38, 51, 16, 16, 14, 1, 1, 1, 200, 1, 4, 1, 1, 12, 14, 15, 47, 36, 38, 50, 16, 16, 14, 1, 0, 0, 1, 0, 58, 255, 238, 4, 85, 4, 159, 0, 54, 0, 0, 65, 5, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 5, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 4, 8, 254, 243, 8, 43, 32, 33, 84, 49, 58, 74, 20, 20, 10, 6, 25, 8, 44, 35, 35, 95, 59, 47, 76, 26, 25, 26, 2, 1, 16, 4, 68, 58, 59, 163, 99, 112, 194, 74, 75, 97, 16, 24, 8, 18, 24, 24, 75, 49, 50, 126, 72, 100, 183, 73, 72, 96, 1, 144, 2, 48, 75, 25, 25, 24, 2, 3, 54, 42, 41, 100, 49, 179, 52, 105, 41, 41, 51, 1, 1, 26, 25, 25, 74, 48, 1, 100, 156, 54, 53, 56, 2, 2, 78, 69, 70, 188, 108, 177, 70, 130, 56, 55, 90, 34, 34, 38, 2, 2, 51, 53, 52, 158, 0, 0, 2, 0, 48, 255, 255, 4, 97, 4, 141, 0, 15, 0, 31, 0, 0, 115, 33, 22, 54, 55, 54, 54, 55, 55, 54, 38, 39, 38, 38, 39, 37, 23, 23, 22, 22, 23, 22, 22, 7, 7, 6, 6, 7, 6, 6, 35, 39, 48, 1, 206, 109, 196, 77, 77, 103, 15, 23, 11, 57, 59, 60, 171, 102, 254, 90, 232, 180, 56, 74, 21, 20, 12, 6, 25, 9, 48, 37, 38, 100, 61, 164, 1, 75, 67, 66, 183, 107, 168, 102, 179, 68, 67, 80, 3, 1, 223, 2, 3, 49, 38, 39, 95, 49, 170, 58, 101, 37, 38, 44, 2, 0, 0, 1, 0, 51, 0, 0, 4, 123, 4, 141, 0, 11, 0, 0, 65, 55, 33, 55, 33, 55, 33, 3, 33, 55, 33, 19, 3, 173, 39, 253, 235, 39, 2, 110, 39, 252, 130, 202, 3, 120, 39, 253, 151, 48, 1, 238, 223, 225, 223, 251, 115, 221, 1, 17, 0, 1, 0, 58, 0, 0, 4, 116, 4, 141, 0, 9, 0, 0, 65, 55, 33, 19, 33, 55, 33, 3, 33, 19, 3, 187, 40, 253, 223, 45, 2, 94, 39, 252, 144, 202, 1, 17, 81, 1, 205, 223, 1, 2, 223, 251, 115, 1, 205, 0, 0, 1, 0, 62, 255, 240, 4, 90, 4, 159, 0, 55, 0, 0, 101, 19, 33, 7, 51, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 3, 244, 76, 254, 29, 36, 212, 38, 18, 37, 19, 33, 69, 34, 60, 79, 22, 22, 12, 6, 30, 9, 48, 38, 37, 97, 59, 47, 74, 24, 22, 21, 1, 1, 7, 2, 66, 59, 59, 162, 94, 111, 195, 75, 76, 100, 16, 27, 12, 52, 57, 57, 171, 107, 62, 140, 69, 68, 123, 146, 1, 235, 205, 187, 9, 13, 5, 8, 5, 1, 2, 47, 38, 38, 98, 53, 200, 54, 101, 39, 39, 46, 1, 1, 23, 23, 21, 64, 43, 1, 100, 148, 49, 49, 49, 2, 2, 76, 67, 68, 184, 108, 197, 107, 180, 66, 67, 76, 2, 1, 13, 19, 18, 63, 0, 1, 0, 33, 0, 0, 4, 92, 4, 141, 0, 11, 0, 0, 97, 19, 33, 3, 33, 19, 33, 3, 33, 19, 33, 3, 3, 146, 202, 254, 241, 85, 254, 173, 85, 254, 241, 202, 1, 14, 79, 1, 84, 79, 4, 141, 254, 23, 1, 233, 251, 115, 1, 197, 254, 59, 0, 1, 0, 91, 0, 0, 4, 77, 4, 140, 0, 11, 0, 0, 65, 7, 33, 3, 33, 7, 33, 55, 33, 19, 33, 55, 1, 37, 39, 1, 8, 124, 254, 249, 40, 3, 40, 40, 254, 241, 123, 1, 14, 40, 4, 140, 226, 253, 56, 226, 226, 2, 200, 226, 0, 1, 0, 116, 255, 238, 4, 108, 4, 141, 0, 27, 0, 0, 65, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 19, 3, 92, 121, 6, 30, 24, 25, 72, 48, 47, 57, 15, 16, 9, 2, 254, 239, 3, 47, 50, 49, 150, 100, 101, 170, 65, 64, 83, 14, 123, 4, 141, 253, 41, 41, 84, 34, 35, 42, 1, 1, 36, 29, 29, 74, 40, 1, 98, 157, 55, 56, 62, 1, 2, 70, 62, 61, 167, 97, 2, 214, 0, 0, 1, 0, 45, 0, 0, 4, 224, 4, 141, 0, 12, 0, 0, 65, 19, 33, 1, 1, 33, 1, 7, 19, 33, 3, 33, 19, 2, 15, 209, 1, 50, 254, 203, 2, 3, 254, 156, 254, 169, 114, 84, 254, 240, 202, 1, 16, 53, 1, 186, 254, 70, 2, 118, 2, 23, 254, 156, 123, 1, 223, 251, 115, 1, 52, 0, 0, 1, 0, 51, 0, 0, 4, 5, 4, 141, 0, 5, 0, 0, 101, 19, 33, 3, 33, 55, 1, 108, 164, 254, 238, 203, 3, 171, 39, 221, 3, 176, 251, 115, 221, 0, 0, 1, 0, 12, 0, 0, 4, 160, 4, 141, 0, 12, 0, 0, 65, 3, 33, 3, 51, 19, 19, 23, 19, 3, 51, 19, 33, 2, 84, 79, 254, 209, 202, 248, 129, 69, 178, 219, 122, 248, 203, 254, 207, 2, 76, 2, 65, 251, 115, 2, 231, 254, 14, 1, 1, 195, 253, 73, 4, 141, 0, 1, 0, 50, 0, 0, 4, 88, 4, 141, 0, 9, 0, 0, 97, 19, 33, 3, 3, 33, 3, 33, 19, 19, 3, 142, 202, 254, 242, 123, 205, 254, 250, 202, 1, 13, 122, 206, 4, 141, 253, 60, 2, 196, 251, 115, 2, 196, 253, 60, 0, 2, 0, 77, 255, 237, 4, 89, 4, 160, 0, 31, 0, 63, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 3, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 39, 38, 52, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 23, 22, 22, 4, 49, 28, 12, 52, 56, 22, 55, 31, 46, 111, 63, 113, 193, 74, 74, 96, 16, 27, 7, 11, 17, 13, 37, 24, 56, 168, 105, 112, 193, 74, 74, 97, 229, 29, 8, 42, 34, 34, 94, 60, 59, 72, 19, 7, 9, 3, 6, 4, 28, 8, 41, 34, 33, 94, 62, 33, 52, 20, 14, 21, 9, 19, 9, 1, 229, 194, 102, 181, 68, 27, 47, 18, 27, 31, 1, 3, 75, 68, 68, 186, 108, 195, 60, 111, 49, 36, 66, 29, 68, 79, 2, 3, 75, 68, 67, 186, 1, 49, 198, 53, 104, 40, 41, 48, 2, 2, 52, 41, 14, 32, 17, 30, 64, 31, 197, 54, 104, 40, 39, 47, 2, 1, 19, 17, 11, 30, 16, 41, 98, 0, 2, 0, 65, 255, 65, 4, 94, 4, 160, 0, 31, 0, 57, 0, 0, 65, 55, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 54, 55, 23, 55, 39, 54, 54, 55, 54, 54, 3, 7, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 4, 56, 27, 11, 53, 57, 58, 169, 105, 113, 195, 75, 75, 98, 16, 27, 12, 51, 57, 57, 169, 106, 32, 64, 32, 165, 172, 143, 45, 75, 30, 40, 52, 236, 28, 8, 44, 34, 35, 96, 61, 59, 75, 20, 20, 9, 6, 28, 9, 42, 35, 34, 96, 62, 57, 74, 20, 20, 11, 1, 229, 194, 103, 181, 68, 68, 80, 2, 3, 74, 67, 68, 187, 109, 195, 104, 180, 67, 67, 79, 1, 1, 7, 6, 189, 109, 168, 31, 71, 40, 55, 128, 1, 16, 199, 54, 104, 40, 40, 48, 2, 2, 51, 41, 40, 99, 50, 197, 56, 104, 40, 39, 45, 2, 2, 51, 40, 40, 98, 0, 0, 2, 0, 38, 0, 0, 4, 78, 4, 141, 0, 20, 0, 35, 0, 0, 65, 19, 33, 53, 3, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 33, 19, 55, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 2, 59, 147, 1, 33, 180, 59, 96, 35, 35, 41, 4, 5, 66, 57, 58, 151, 79, 254, 61, 202, 1, 16, 71, 38, 54, 207, 34, 57, 20, 20, 18, 5, 6, 42, 30, 30, 75, 39, 1, 151, 254, 105, 13, 1, 210, 24, 63, 42, 41, 106, 67, 91, 128, 41, 41, 39, 2, 1, 251, 115, 1, 151, 223, 1, 53, 1, 1, 18, 18, 18, 54, 37, 42, 62, 20, 20, 19, 1, 0, 0, 1, 0, 86, 255, 239, 4, 91, 4, 159, 0, 88, 0, 0, 65, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 21, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 13, 6, 47, 32, 33, 73, 32, 45, 74, 26, 27, 29, 1, 254, 241, 1, 71, 61, 61, 163, 92, 56, 117, 55, 55, 98, 38, 37, 46, 4, 3, 28, 26, 27, 76, 44, 44, 97, 49, 15, 36, 19, 15, 30, 13, 31, 37, 7, 6, 45, 31, 31, 70, 31, 42, 69, 22, 16, 18, 1, 14, 1, 67, 58, 58, 156, 89, 82, 167, 68, 69, 91, 5, 5, 62, 53, 33, 80, 43, 26, 55, 27, 27, 75, 33, 16, 28, 9, 9, 8, 1, 66, 37, 51, 15, 16, 14, 19, 21, 21, 66, 47, 1, 101, 143, 45, 46, 44, 1, 1, 14, 17, 16, 53, 39, 38, 103, 66, 59, 94, 37, 37, 55, 22, 21, 32, 14, 4, 9, 5, 4, 12, 7, 15, 49, 39, 35, 50, 15, 15, 14, 1, 1, 27, 26, 19, 52, 32, 1, 97, 138, 45, 44, 42, 2, 1, 39, 42, 43, 133, 93, 88, 119, 40, 25, 38, 15, 9, 17, 8, 8, 19, 17, 9, 21, 13, 14, 32, 0, 1, 0, 140, 0, 0, 4, 218, 4, 141, 0, 7, 0, 0, 65, 55, 33, 7, 33, 3, 33, 19, 4, 179, 39, 251, 217, 39, 1, 134, 163, 1, 18, 164, 3, 174, 223, 223, 252, 82, 3, 174, 0, 1, 0, 112, 255, 238, 4, 133, 4, 141, 0, 29, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 3, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 4, 133, 254, 240, 129, 7, 33, 27, 27, 75, 48, 45, 61, 17, 18, 11, 5, 128, 254, 242, 128, 10, 50, 54, 53, 154, 93, 101, 175, 68, 67, 88, 14, 4, 141, 253, 8, 45, 75, 26, 26, 29, 2, 1, 32, 27, 26, 71, 42, 2, 248, 253, 9, 96, 154, 55, 55, 60, 2, 2, 56, 55, 54, 159, 101, 0, 0, 1, 0, 146, 0, 0, 4, 255, 4, 142, 0, 8, 0, 0, 65, 3, 5, 19, 33, 1, 33, 1, 7, 2, 30, 125, 254, 241, 218, 1, 35, 2, 112, 254, 217, 254, 95, 25, 1, 65, 3, 77, 1, 251, 115, 4, 141, 252, 179, 65, 0, 1, 0, 130, 0, 0, 4, 210, 4, 141, 0, 18, 0, 0, 65, 19, 35, 3, 51, 19, 55, 23, 19, 51, 1, 33, 3, 7, 55, 19, 35, 3, 7, 1, 111, 17, 252, 2, 248, 168, 36, 1, 3, 247, 1, 145, 254, 253, 152, 28, 1, 4, 249, 156, 32, 2, 189, 1, 208, 251, 115, 1, 229, 105, 110, 254, 32, 4, 141, 254, 25, 91, 91, 1, 231, 254, 47, 95, 0, 1, 255, 206, 0, 0, 4, 188, 4, 141, 0, 11, 0, 0, 65, 3, 33, 19, 1, 33, 1, 19, 33, 1, 1, 33, 2, 99, 138, 254, 217, 245, 254, 39, 1, 72, 1, 27, 153, 1, 47, 254, 247, 1, 204, 254, 185, 3, 16, 1, 125, 253, 202, 253, 169, 1, 133, 254, 123, 2, 63, 2, 78, 0, 0, 1, 0, 161, 0, 0, 4, 244, 4, 141, 0, 10, 0, 0, 65, 3, 33, 1, 3, 33, 19, 1, 33, 1, 7, 2, 80, 149, 254, 230, 1, 24, 75, 1, 17, 68, 2, 49, 254, 203, 254, 198, 35, 2, 191, 1, 206, 253, 32, 254, 83, 1, 138, 3, 3, 254, 45, 52, 0, 1, 0, 54, 0, 0, 4, 122, 4, 141, 0, 9, 0, 0, 101, 1, 55, 33, 7, 33, 1, 7, 33, 55, 1, 190, 2, 164, 24, 252, 134, 36, 2, 24, 253, 90, 24, 3, 151, 35, 221, 3, 26, 150, 223, 252, 234, 152, 221, 0, 0, 2, 1, 197, 4, 202, 4, 90, 6, 245, 0, 25, 0, 59, 0, 0, 65, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 37, 51, 39, 54, 54, 55, 54, 54, 55, 52, 38, 39, 38, 38, 39, 38, 38, 35, 7, 50, 50, 51, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 4, 90, 184, 8, 32, 22, 22, 53, 29, 29, 48, 17, 18, 19, 1, 181, 1, 57, 45, 45, 111, 56, 57, 119, 50, 49, 66, 254, 133, 105, 10, 25, 53, 23, 22, 29, 1, 25, 21, 22, 54, 28, 29, 54, 21, 11, 8, 34, 21, 20, 43, 17, 16, 18, 4, 5, 35, 22, 22, 45, 16, 5, 177, 2, 29, 41, 13, 13, 11, 11, 13, 13, 41, 30, 2, 64, 87, 27, 27, 25, 1, 1, 22, 27, 27, 89, 93, 45, 4, 15, 13, 13, 40, 31, 30, 44, 15, 15, 18, 5, 5, 4, 66, 1, 6, 6, 6, 22, 16, 21, 21, 5, 5, 2, 1, 0, 0, 2, 1, 181, 4, 200, 4, 74, 6, 113, 0, 25, 0, 29, 0, 0, 65, 7, 6, 6, 7, 6, 6, 39, 34, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 3, 7, 51, 55, 4, 74, 184, 6, 25, 17, 23, 62, 34, 29, 48, 17, 18, 18, 1, 181, 1, 57, 45, 45, 111, 56, 57, 119, 50, 49, 66, 253, 152, 161, 201, 5, 177, 1, 26, 38, 14, 18, 17, 1, 13, 14, 13, 42, 30, 2, 64, 88, 27, 28, 25, 1, 1, 23, 28, 27, 89, 1, 2, 187, 186, 0, 0, 1, 1, 43, 2, 136, 3, 236, 3, 60, 0, 3, 0, 0, 65, 55, 33, 7, 3, 204, 32, 253, 95, 32, 2, 136, 180, 180, 0, 3, 2, 43, 4, 83, 4, 172, 6, 182, 0, 3, 0, 27, 0, 51, 0, 0, 65, 7, 23, 37, 1, 20, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 23, 52, 54, 55, 54, 54, 51, 50, 22, 23, 22, 22, 21, 20, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 3, 151, 212, 199, 1, 34, 253, 127, 30, 26, 26, 67, 38, 40, 71, 27, 27, 31, 29, 25, 25, 67, 38, 40, 72, 27, 28, 32, 99, 16, 13, 14, 35, 19, 19, 33, 12, 12, 15, 16, 13, 13, 35, 19, 19, 33, 13, 12, 15, 6, 182, 203, 1, 204, 254, 77, 39, 64, 23, 24, 26, 28, 25, 25, 69, 41, 38, 66, 24, 24, 27, 29, 25, 26, 70, 38, 20, 35, 12, 12, 15, 14, 11, 12, 32, 19, 20, 34, 12, 12, 14, 13, 11, 12, 31, 0, 0, 2, 2, 68, 4, 131, 4, 61, 5, 197, 0, 5, 0, 15, 0, 0, 65, 7, 51, 19, 55, 7, 5, 7, 51, 55, 54, 54, 55, 39, 6, 6, 3, 6, 2, 82, 230, 1, 176, 254, 198, 15, 128, 18, 11, 40, 32, 84, 51, 68, 4, 160, 27, 1, 41, 23, 1, 208, 113, 107, 57, 107, 49, 1, 41, 102, 0, 2, 1, 228, 4, 197, 4, 117, 6, 225, 0, 25, 0, 63, 0, 0, 65, 7, 6, 6, 7, 6, 6, 35, 34, 38, 39, 38, 38, 55, 39, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 19, 39, 6, 6, 7, 6, 6, 7, 6, 38, 39, 38, 38, 35, 34, 6, 7, 6, 6, 7, 23, 54, 54, 55, 54, 54, 55, 54, 22, 23, 22, 22, 51, 50, 54, 55, 54, 54, 4, 115, 183, 7, 32, 21, 22, 54, 30, 29, 47, 16, 17, 18, 1, 180, 1, 55, 44, 44, 111, 56, 58, 119, 49, 48, 65, 7, 109, 6, 14, 10, 10, 28, 18, 30, 54, 27, 27, 55, 30, 39, 60, 21, 22, 26, 4, 114, 5, 15, 10, 10, 28, 18, 30, 53, 27, 26, 54, 31, 39, 60, 21, 21, 24, 5, 177, 1, 30, 42, 13, 13, 11, 12, 13, 13, 41, 30, 2, 63, 89, 28, 28, 27, 1, 1, 24, 28, 27, 91, 1, 83, 31, 16, 30, 12, 12, 16, 1, 2, 22, 15, 14, 24, 32, 26, 26, 67, 34, 32, 16, 30, 12, 12, 16, 1, 1, 22, 14, 14, 23, 32, 26, 25, 67, 0, 0, 1, 1, 68, 254, 156, 2, 181, 0, 201, 0, 3, 0, 0, 65, 19, 33, 3, 2, 84, 97, 254, 240, 97, 254, 156, 2, 45, 253, 211, 0, 1, 0, 141, 254, 71, 2, 236, 0, 245, 0, 21, 0, 0, 101, 33, 3, 6, 6, 7, 6, 6, 35, 34, 38, 39, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 2, 236, 254, 241, 46, 6, 22, 18, 19, 54, 37, 24, 48, 23, 39, 37, 72, 35, 93, 145, 53, 52, 63, 12, 245, 254, 227, 32, 62, 24, 24, 30, 9, 6, 223, 9, 10, 1, 1, 59, 54, 53, 148, 88, 0, 2, 0, 51, 0, 0, 4, 90, 4, 141, 0, 16, 0, 31, 0, 0, 65, 23, 50, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 37, 3, 33, 19, 19, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 1, 133, 215, 90, 174, 71, 70, 92, 7, 6, 58, 54, 55, 150, 86, 254, 55, 203, 1, 16, 104, 59, 215, 38, 58, 17, 16, 11, 5, 6, 41, 30, 30, 74, 38, 1, 121, 1, 49, 50, 49, 147, 98, 91, 144, 51, 50, 56, 3, 1, 251, 115, 2, 87, 1, 87, 1, 3, 30, 24, 22, 60, 34, 41, 62, 22, 22, 23, 1, 0, 0, 1, 0, 42, 0, 0, 5, 48, 5, 176, 0, 12, 0, 0, 65, 19, 33, 1, 1, 33, 1, 7, 19, 33, 3, 33, 19, 2, 27, 235, 1, 47, 254, 210, 2, 41, 254, 180, 254, 30, 63, 118, 254, 237, 252, 1, 18, 104, 2, 86, 253, 170, 2, 231, 2, 201, 253, 126, 1, 2, 131, 250, 80, 2, 86, 0, 0, 1, 0, 38, 255, 232, 4, 41, 4, 159, 0, 59, 0, 0, 65, 7, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 1, 38, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 3, 33, 19, 54, 54, 55, 54, 54, 23, 22, 22, 23, 7, 7, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 34, 38, 1, 240, 104, 57, 118, 64, 86, 149, 56, 56, 67, 5, 3, 33, 33, 32, 91, 56, 6, 1, 7, 40, 89, 51, 52, 117, 69, 106, 167, 61, 61, 75, 13, 126, 1, 12, 126, 6, 28, 24, 23, 67, 44, 35, 58, 22, 197, 34, 95, 32, 68, 27, 26, 29, 6, 5, 29, 22, 22, 57, 32, 34, 56, 1, 2, 221, 29, 30, 1, 1, 55, 51, 50, 143, 87, 61, 101, 39, 38, 52, 15, 1, 1, 12, 52, 88, 32, 32, 38, 2, 2, 60, 57, 58, 164, 101, 253, 25, 2, 232, 38, 76, 30, 29, 35, 1, 1, 30, 27, 207, 194, 1, 1, 10, 13, 14, 51, 41, 32, 55, 20, 20, 24, 28, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 1, 0, 0, 255, 255, 1, 5, 2, 18, 4, 86, 2, 243, 6, 6, 0, 103, 0, 0, 255, 255, 0, 74, 255, 232, 4, 156, 7, 78, 6, 38, 0, 4, 0, 0, 0, 7, 1, 96, 0, 120, 1, 108, 255, 255, 0, 96, 255, 233, 4, 49, 6, 13, 6, 38, 0, 30, 0, 0, 0, 6, 1, 96, 11, 43, 255, 255, 0, 82, 255, 234, 4, 151, 7, 78, 6, 38, 0, 8, 0, 0, 0, 7, 1, 96, 0, 92, 1, 108, 255, 255, 0, 26, 254, 83, 4, 123, 6, 13, 6, 38, 0, 34, 0, 0, 0, 6, 1, 96, 240, 43, 255, 255, 255, 190, 0, 0, 4, 67, 6, 21, 6, 38, 0, 41, 0, 0, 0, 7, 0, 109, 253, 166, 255, 253, 255, 255, 0, 57, 254, 14, 4, 177, 5, 198, 6, 38, 0, 20, 0, 0, 0, 7, 1, 104, 0, 162, 254, 183, 255, 255, 0, 74, 254, 14, 4, 76, 4, 79, 6, 38, 0, 46, 0, 0, 0, 7, 1, 104, 0, 100, 254, 183, 255, 255, 0, 134, 254, 37, 5, 35, 5, 176, 6, 38, 0, 21, 0, 0, 0, 7, 1, 104, 0, 113, 254, 206, 255, 255, 0, 169, 254, 24, 4, 84, 5, 67, 6, 38, 0, 47, 0, 0, 0, 7, 1, 104, 0, 175, 254, 193, 255, 255, 0, 134, 254, 63, 5, 35, 5, 176, 6, 38, 0, 21, 0, 0, 0, 6, 1, 102, 43, 13, 255, 255, 0, 140, 254, 62, 4, 218, 4, 141, 6, 38, 2, 97, 0, 0, 0, 6, 1, 102, 50, 12, 255, 255, 0, 169, 254, 50, 4, 84, 5, 67, 6, 38, 0, 47, 0, 0, 0, 6, 1, 102, 105, 0, 255, 255, 255, 153, 255, 255, 4, 97, 4, 141, 6, 38, 2, 82, 0, 0, 0, 7, 2, 106, 254, 110, 255, 104, 255, 255, 255, 153, 255, 255, 4, 97, 4, 141, 6, 38, 2, 82, 0, 0, 0, 7, 2, 106, 254, 110, 255, 104, 255, 255, 0, 140, 0, 0, 4, 218, 4, 141, 6, 38, 2, 97, 0, 0, 0, 6, 2, 106, 224, 181, 255, 255, 255, 168, 0, 0, 4, 40, 5, 229, 6, 38, 2, 79, 0, 0, 0, 7, 1, 90, 255, 110, 0, 31, 255, 255, 255, 168, 0, 0, 4, 99, 5, 226, 6, 38, 2, 79, 0, 0, 0, 6, 1, 91, 127, 28, 255, 255, 255, 168, 0, 0, 4, 58, 6, 12, 6, 38, 2, 79, 0, 0, 0, 6, 1, 92, 116, 32, 255, 255, 255, 168, 0, 0, 4, 76, 6, 38, 6, 38, 2, 79, 0, 0, 0, 7, 1, 93, 0, 135, 0, 33, 255, 255, 255, 168, 0, 0, 4, 68, 5, 243, 6, 38, 2, 79, 0, 0, 0, 6, 1, 97, 241, 32, 255, 255, 255, 168, 0, 0, 4, 40, 6, 76, 6, 38, 2, 79, 0, 0, 0, 7, 1, 98, 0, 30, 0, 184, 255, 255, 255, 168, 0, 0, 4, 156, 7, 25, 6, 38, 2, 79, 0, 0, 0, 6, 2, 107, 240, 99, 255, 255, 0, 58, 254, 50, 4, 85, 4, 159, 6, 38, 2, 81, 0, 0, 0, 6, 1, 102, 20, 0, 255, 255, 0, 51, 0, 0, 4, 123, 5, 229, 6, 38, 2, 83, 0, 0, 0, 6, 1, 90, 139, 31, 255, 255, 0, 51, 0, 0, 4, 123, 5, 226, 6, 38, 2, 83, 0, 0, 0, 6, 1, 91, 110, 28, 255, 255, 0, 51, 0, 0, 4, 123, 6, 12, 6, 38, 2, 83, 0, 0, 0, 6, 1, 92, 99, 32, 255, 255, 0, 51, 0, 0, 4, 123, 5, 243, 6, 38, 2, 83, 0, 0, 0, 6, 1, 97, 224, 32, 255, 255, 0, 91, 0, 0, 4, 77, 5, 223, 6, 38, 2, 87, 0, 0, 0, 6, 1, 90, 129, 25, 255, 255, 0, 91, 0, 0, 4, 118, 5, 220, 6, 38, 2, 87, 0, 0, 0, 7, 1, 91, 0, 146, 0, 22, 255, 255, 0, 91, 0, 0, 4, 77, 6, 6, 6, 38, 2, 87, 0, 0, 0, 7, 1, 92, 0, 135, 0, 26, 255, 255, 0, 91, 0, 0, 4, 86, 5, 237, 6, 38, 2, 87, 0, 0, 0, 6, 1, 97, 3, 26, 255, 255, 0, 50, 0, 0, 4, 88, 6, 38, 6, 38, 2, 92, 0, 0, 0, 7, 1, 93, 0, 143, 0, 33, 255, 255, 0, 77, 255, 237, 4, 89, 5, 241, 6, 38, 2, 93, 0, 0, 0, 7, 1, 90, 255, 104, 0, 43, 255, 255, 0, 77, 255, 237, 4, 93, 5, 238, 6, 38, 2, 93, 0, 0, 0, 6, 1, 91, 121, 40, 255, 255, 0, 77, 255, 237, 4, 89, 6, 24, 6, 38, 2, 93, 0, 0, 0, 6, 1, 92, 110, 44, 255, 255, 0, 77, 255, 237, 4, 89, 6, 50, 6, 38, 2, 93, 0, 0, 0, 7, 1, 93, 0, 129, 0, 45, 255, 255, 0, 77, 255, 237, 4, 89, 5, 255, 6, 38, 2, 93, 0, 0, 0, 6, 1, 97, 235, 44, 255, 255, 0, 112, 255, 238, 4, 133, 5, 254, 6, 38, 2, 98, 0, 0, 0, 6, 1, 90, 140, 56, 255, 255, 0, 112, 255, 238, 4, 133, 5, 251, 6, 38, 2, 98, 0, 0, 0, 7, 1, 91, 0, 157, 0, 53, 255, 255, 0, 112, 255, 238, 4, 133, 6, 37, 6, 38, 2, 98, 0, 0, 0, 7, 1, 92, 0, 146, 0, 57, 255, 255, 0, 112, 255, 238, 4, 133, 6, 12, 6, 38, 2, 98, 0, 0, 0, 6, 1, 97, 14, 57, 255, 255, 0, 161, 0, 0, 4, 244, 5, 226, 6, 38, 2, 102, 0, 0, 0, 6, 1, 91, 123, 28, 255, 255, 255, 168, 0, 0, 4, 76, 5, 181, 6, 38, 2, 79, 0, 0, 0, 6, 1, 94, 248, 5, 255, 255, 255, 168, 0, 0, 4, 56, 6, 5, 6, 38, 2, 79, 0, 0, 0, 6, 1, 95, 8, 98, 0, 2, 255, 168, 254, 88, 4, 40, 4, 141, 0, 36, 0, 41, 0, 0, 97, 51, 3, 33, 1, 33, 55, 33, 23, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 1, 19, 55, 23, 19, 3, 239, 57, 246, 254, 249, 253, 125, 1, 31, 116, 1, 185, 37, 33, 60, 23, 23, 28, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 29, 253, 176, 182, 36, 13, 64, 4, 141, 251, 115, 221, 198, 21, 52, 30, 31, 72, 41, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 33, 13, 1, 172, 1, 89, 69, 69, 254, 167, 0, 255, 255, 0, 58, 255, 238, 4, 85, 5, 238, 6, 38, 2, 81, 0, 0, 0, 6, 1, 91, 108, 40, 255, 255, 0, 58, 255, 238, 4, 85, 6, 24, 6, 38, 2, 81, 0, 0, 0, 6, 1, 92, 97, 44, 255, 255, 0, 58, 255, 238, 4, 86, 6, 27, 6, 38, 2, 81, 0, 0, 0, 6, 1, 100, 224, 44, 255, 255, 0, 48, 255, 255, 4, 97, 6, 15, 6, 38, 2, 82, 0, 0, 0, 6, 1, 100, 149, 32, 255, 255, 0, 51, 0, 0, 4, 123, 5, 181, 6, 38, 2, 83, 0, 0, 0, 6, 1, 94, 231, 5, 255, 255, 0, 51, 0, 0, 4, 123, 6, 5, 6, 38, 2, 83, 0, 0, 0, 6, 1, 95, 248, 98, 255, 255, 0, 51, 0, 0, 4, 123, 6, 18, 6, 38, 2, 83, 0, 0, 0, 6, 1, 96, 238, 48, 0, 1, 0, 51, 254, 88, 4, 123, 4, 141, 0, 41, 0, 0, 65, 55, 33, 55, 33, 55, 33, 3, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 51, 51, 55, 33, 19, 3, 173, 39, 253, 235, 39, 2, 110, 39, 252, 130, 202, 1, 250, 27, 48, 18, 18, 22, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 29, 4, 123, 39, 253, 151, 48, 1, 238, 223, 225, 223, 251, 115, 20, 48, 28, 28, 64, 36, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 36, 13, 221, 1, 17, 0, 255, 255, 0, 51, 0, 0, 4, 123, 6, 15, 6, 38, 2, 83, 0, 0, 0, 6, 1, 100, 226, 32, 255, 255, 0, 62, 255, 240, 4, 90, 6, 24, 6, 38, 2, 85, 0, 0, 0, 6, 1, 92, 126, 44, 255, 255, 0, 62, 255, 240, 4, 90, 6, 17, 6, 38, 2, 85, 0, 0, 0, 6, 1, 95, 18, 110, 255, 255, 0, 62, 254, 24, 4, 90, 4, 159, 6, 38, 2, 85, 0, 0, 0, 7, 1, 104, 0, 134, 254, 193, 255, 255, 0, 33, 0, 0, 4, 92, 6, 12, 6, 38, 2, 86, 0, 0, 0, 6, 1, 92, 96, 32, 255, 255, 0, 91, 0, 0, 4, 77, 6, 32, 6, 38, 2, 87, 0, 0, 0, 6, 1, 93, 114, 27, 255, 255, 0, 91, 0, 0, 4, 77, 5, 176, 6, 38, 2, 87, 0, 0, 0, 6, 1, 94, 226, 0, 255, 255, 0, 91, 0, 0, 4, 77, 5, 255, 6, 38, 2, 87, 0, 0, 0, 6, 1, 95, 245, 92, 0, 1, 0, 91, 254, 88, 4, 77, 4, 140, 0, 41, 0, 0, 65, 7, 33, 3, 33, 7, 33, 6, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 51, 51, 55, 33, 19, 33, 55, 1, 37, 39, 1, 8, 124, 254, 249, 40, 1, 195, 27, 48, 18, 18, 22, 1, 1, 29, 27, 26, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 3, 34, 26, 25, 61, 29, 4, 98, 40, 254, 241, 123, 1, 14, 40, 4, 140, 226, 253, 56, 226, 20, 48, 28, 28, 64, 36, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 35, 56, 22, 22, 36, 13, 226, 2, 200, 226, 0, 255, 255, 0, 91, 0, 0, 4, 77, 6, 12, 6, 38, 2, 87, 0, 0, 0, 6, 1, 96, 248, 42, 255, 255, 0, 116, 255, 238, 5, 96, 6, 5, 6, 38, 2, 88, 0, 0, 0, 7, 1, 92, 1, 154, 0, 25, 255, 255, 0, 45, 254, 31, 4, 224, 4, 141, 6, 38, 2, 89, 0, 0, 0, 7, 1, 104, 0, 64, 254, 200, 255, 255, 0, 51, 0, 0, 4, 5, 5, 203, 6, 38, 2, 90, 0, 0, 0, 7, 1, 91, 255, 80, 0, 5, 255, 255, 0, 51, 254, 32, 4, 5, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 1, 104, 0, 125, 254, 201, 255, 255, 0, 51, 0, 0, 4, 5, 4, 144, 6, 38, 2, 90, 0, 0, 0, 7, 0, 109, 0, 22, 254, 120, 255, 255, 0, 51, 0, 0, 4, 5, 4, 141, 6, 38, 2, 90, 0, 0, 0, 7, 1, 96, 255, 165, 253, 65, 255, 255, 0, 50, 0, 0, 4, 88, 5, 226, 6, 38, 2, 92, 0, 0, 0, 6, 1, 91, 109, 28, 255, 255, 0, 50, 254, 24, 4, 88, 4, 141, 6, 38, 2, 92, 0, 0, 0, 7, 1, 104, 0, 128, 254, 193, 255, 255, 0, 50, 0, 0, 4, 113, 6, 15, 6, 38, 2, 92, 0, 0, 0, 6, 1, 100, 251, 32, 255, 255, 0, 77, 255, 237, 4, 89, 5, 193, 6, 38, 2, 93, 0, 0, 0, 6, 1, 94, 242, 17, 255, 255, 0, 77, 255, 237, 4, 89, 6, 17, 6, 38, 2, 93, 0, 0, 0, 6, 1, 95, 2, 110, 255, 255, 0, 77, 255, 237, 5, 30, 6, 26, 6, 38, 2, 93, 0, 0, 0, 6, 1, 99, 118, 44, 255, 255, 0, 38, 0, 0, 4, 78, 5, 251, 6, 38, 2, 95, 0, 0, 0, 6, 1, 91, 52, 53, 255, 255, 0, 38, 254, 32, 4, 78, 4, 141, 6, 38, 2, 95, 0, 0, 0, 7, 1, 104, 0, 72, 254, 201, 255, 255, 0, 38, 0, 0, 4, 78, 6, 40, 6, 38, 2, 95, 0, 0, 0, 6, 1, 100, 190, 57, 255, 255, 0, 86, 255, 239, 4, 105, 5, 238, 6, 38, 2, 96, 0, 0, 0, 7, 1, 91, 0, 133, 0, 40, 255, 255, 0, 86, 255, 239, 4, 91, 6, 24, 6, 38, 2, 96, 0, 0, 0, 6, 1, 92, 122, 44, 255, 255, 0, 86, 254, 46, 4, 91, 4, 159, 6, 38, 2, 96, 0, 0, 0, 6, 1, 102, 61, 252, 255, 255, 0, 86, 255, 239, 4, 111, 6, 27, 6, 38, 2, 96, 0, 0, 0, 6, 1, 100, 249, 44, 255, 255, 0, 140, 0, 0, 4, 218, 6, 15, 6, 38, 2, 97, 0, 0, 0, 6, 1, 100, 249, 32, 255, 255, 0, 112, 255, 238, 4, 133, 6, 63, 6, 38, 2, 98, 0, 0, 0, 7, 1, 93, 0, 165, 0, 58, 255, 255, 0, 112, 255, 238, 4, 133, 5, 206, 6, 38, 2, 98, 0, 0, 0, 6, 1, 94, 21, 30, 255, 255, 0, 112, 255, 238, 4, 133, 6, 30, 6, 38, 2, 98, 0, 0, 0, 6, 1, 95, 38, 123, 255, 255, 0, 112, 255, 238, 4, 133, 6, 101, 6, 38, 2, 98, 0, 0, 0, 7, 1, 98, 0, 60, 0, 209, 255, 255, 0, 112, 255, 238, 5, 66, 6, 39, 6, 38, 2, 98, 0, 0, 0, 7, 1, 99, 0, 154, 0, 57, 0, 1, 0, 112, 254, 166, 4, 133, 4, 141, 0, 60, 0, 0, 65, 33, 3, 6, 6, 7, 6, 6, 39, 38, 38, 39, 38, 38, 55, 19, 33, 3, 6, 22, 23, 22, 22, 23, 48, 48, 49, 6, 6, 7, 6, 6, 21, 6, 22, 23, 22, 22, 51, 22, 54, 55, 39, 6, 6, 39, 38, 38, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 54, 54, 55, 4, 133, 254, 240, 129, 7, 33, 27, 27, 75, 48, 45, 61, 17, 18, 11, 5, 128, 254, 242, 128, 10, 44, 48, 47, 138, 85, 10, 17, 5, 5, 7, 1, 29, 26, 27, 74, 44, 46, 89, 40, 36, 19, 41, 20, 28, 21, 2, 1, 10, 8, 9, 25, 15, 64, 108, 41, 42, 54, 11, 4, 141, 253, 8, 45, 75, 26, 26, 29, 2, 1, 32, 27, 26, 71, 42, 2, 248, 253, 9, 91, 147, 54, 54, 65, 8, 15, 32, 17, 16, 35, 18, 45, 73, 26, 26, 29, 1, 20, 22, 157, 8, 13, 1, 2, 32, 27, 18, 31, 14, 15, 27, 12, 21, 73, 50, 50, 127, 75, 255, 255, 0, 130, 0, 0, 4, 210, 6, 12, 6, 38, 2, 100, 0, 0, 0, 6, 1, 92, 107, 32, 255, 255, 0, 161, 0, 0, 4, 244, 6, 12, 6, 38, 2, 102, 0, 0, 0, 6, 1, 92, 112, 32, 255, 255, 0, 161, 0, 0, 4, 244, 5, 243, 6, 38, 2, 102, 0, 0, 0, 6, 1, 97, 237, 32, 255, 255, 0, 54, 0, 0, 4, 122, 5, 226, 6, 38, 2, 103, 0, 0, 0, 6, 1, 91, 116, 28, 255, 255, 0, 54, 0, 0, 4, 122, 6, 18, 6, 38, 2, 103, 0, 0, 0, 6, 1, 96, 244, 48, 255, 255, 0, 54, 0, 0, 4, 122, 6, 15, 6, 38, 2, 103, 0, 0, 0, 6, 1, 100, 232, 32, 255, 255, 255, 174, 0, 0, 4, 60, 6, 129, 6, 38, 0, 2, 0, 0, 0, 7, 1, 120, 253, 241, 0, 0, 255, 255, 255, 251, 0, 0, 5, 11, 6, 131, 4, 38, 0, 6, 50, 0, 0, 7, 1, 120, 253, 88, 0, 2, 255, 255, 255, 235, 0, 0, 4, 235, 6, 127, 4, 38, 0, 9, 50, 0, 0, 7, 1, 120, 253, 72, 255, 254, 255, 255, 0, 46, 0, 0, 4, 180, 6, 131, 4, 38, 0, 10, 50, 0, 0, 7, 1, 120, 253, 139, 0, 2, 255, 255, 0, 24, 255, 234, 4, 148, 6, 129, 4, 38, 0, 16, 10, 0, 0, 7, 1, 120, 253, 117, 0, 0, 255, 255, 255, 148, 0, 0, 5, 101, 6, 129, 4, 38, 0, 26, 38, 0, 0, 7, 1, 120, 252, 241, 0, 0, 255, 255, 0, 2, 0, 0, 4, 157, 6, 129, 4, 38, 1, 132, 10, 0, 0, 7, 1, 120, 253, 135, 0, 0, 255, 255, 0, 217, 255, 234, 4, 111, 6, 192, 6, 38, 1, 141, 0, 0, 0, 6, 1, 121, 201, 183, 255, 255, 255, 174, 0, 0, 4, 60, 5, 176, 6, 6, 0, 2, 0, 0, 255, 255, 0, 20, 255, 255, 4, 175, 5, 176, 6, 6, 0, 3, 0, 0, 255, 255, 0, 38, 0, 0, 4, 217, 5, 176, 6, 6, 0, 6, 0, 0, 255, 255, 255, 248, 0, 0, 4, 212, 5, 176, 6, 6, 0, 27, 0, 0, 255, 255, 0, 15, 0, 0, 4, 185, 5, 176, 6, 6, 0, 9, 0, 0, 255, 255, 0, 82, 0, 0, 4, 130, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 20, 0, 0, 5, 82, 5, 176, 6, 6, 0, 12, 0, 0, 255, 255, 0, 18, 0, 0, 4, 212, 5, 176, 6, 6, 0, 14, 0, 0, 255, 255, 0, 15, 0, 0, 4, 184, 5, 176, 6, 6, 0, 15, 0, 0, 255, 255, 0, 73, 255, 234, 4, 138, 5, 198, 6, 6, 0, 16, 0, 0, 255, 255, 0, 40, 0, 0, 4, 184, 5, 176, 6, 6, 0, 17, 0, 0, 255, 255, 0, 134, 0, 0, 5, 35, 5, 176, 6, 6, 0, 21, 0, 0, 255, 255, 0, 186, 0, 0, 5, 63, 5, 176, 6, 6, 0, 26, 0, 0, 255, 255, 255, 184, 0, 0, 5, 38, 5, 176, 6, 6, 0, 25, 0, 0, 255, 255, 0, 82, 0, 0, 4, 130, 7, 48, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 0, 26, 1, 93, 255, 255, 0, 186, 0, 0, 5, 63, 7, 48, 6, 38, 0, 26, 0, 0, 0, 7, 1, 97, 0, 52, 1, 93, 255, 255, 0, 82, 255, 235, 4, 58, 6, 140, 6, 38, 1, 133, 0, 0, 0, 6, 1, 120, 214, 11, 255, 255, 0, 75, 255, 235, 4, 138, 6, 139, 6, 38, 1, 137, 0, 0, 0, 6, 1, 120, 245, 10, 255, 255, 0, 20, 254, 97, 4, 63, 6, 140, 6, 38, 1, 139, 0, 0, 0, 6, 1, 120, 229, 11, 255, 255, 0, 217, 255, 234, 4, 37, 6, 120, 6, 38, 1, 141, 0, 0, 0, 6, 1, 120, 214, 247, 255, 255, 0, 85, 255, 233, 4, 91, 6, 204, 6, 38, 1, 149, 0, 0, 0, 6, 1, 121, 181, 195, 255, 255, 0, 50, 0, 0, 4, 222, 4, 58, 6, 6, 0, 79, 0, 0, 255, 255, 0, 81, 255, 232, 4, 66, 4, 81, 6, 6, 0, 42, 0, 0, 255, 255, 255, 246, 254, 96, 4, 150, 4, 58, 6, 6, 1, 107, 0, 0, 255, 255, 0, 149, 0, 0, 4, 179, 4, 59, 6, 6, 0, 49, 0, 0, 255, 255, 255, 241, 0, 0, 4, 197, 4, 58, 6, 6, 0, 51, 0, 0, 255, 255, 0, 217, 255, 234, 4, 74, 5, 217, 6, 38, 1, 141, 0, 0, 0, 6, 1, 97, 247, 6, 255, 255, 0, 85, 255, 233, 4, 62, 5, 229, 6, 38, 1, 149, 0, 0, 0, 6, 1, 97, 227, 18, 255, 255, 0, 81, 255, 232, 4, 66, 6, 140, 6, 38, 0, 42, 0, 0, 0, 6, 1, 120, 214, 11, 255, 255, 0, 85, 255, 233, 4, 62, 6, 131, 6, 38, 1, 149, 0, 0, 0, 6, 1, 120, 194, 2, 255, 255, 0, 23, 255, 233, 4, 143, 6, 134, 6, 38, 1, 152, 0, 0, 0, 6, 1, 120, 214, 5, 255, 255, 0, 38, 0, 0, 4, 217, 7, 39, 6, 38, 0, 6, 0, 0, 0, 7, 1, 97, 0, 65, 1, 84, 255, 255, 0, 32, 0, 0, 4, 176, 7, 22, 6, 38, 1, 123, 0, 0, 0, 7, 1, 91, 0, 184, 1, 80, 0, 1, 0, 57, 255, 236, 4, 177, 5, 198, 0, 79, 0, 0, 65, 6, 6, 7, 6, 6, 35, 38, 38, 39, 38, 38, 55, 37, 6, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 39, 38, 38, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 5, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 23, 22, 22, 3, 59, 7, 50, 36, 36, 87, 44, 65, 95, 30, 26, 24, 1, 254, 244, 3, 73, 67, 67, 182, 105, 92, 181, 75, 82, 107, 8, 6, 59, 53, 54, 144, 79, 37, 90, 38, 19, 31, 10, 12, 10, 3, 6, 50, 36, 36, 87, 44, 52, 77, 26, 25, 25, 1, 1, 10, 3, 65, 60, 60, 168, 99, 95, 189, 77, 77, 102, 6, 6, 67, 58, 58, 151, 78, 41, 84, 33, 15, 24, 8, 9, 8, 1, 131, 48, 69, 22, 23, 21, 1, 38, 36, 31, 87, 55, 1, 110, 173, 61, 61, 65, 2, 1, 43, 46, 49, 159, 112, 91, 147, 56, 56, 81, 27, 12, 33, 25, 11, 29, 17, 18, 44, 27, 48, 71, 24, 23, 23, 1, 1, 32, 29, 29, 82, 49, 1, 102, 164, 58, 58, 64, 2, 2, 50, 52, 52, 156, 104, 93, 145, 54, 54, 77, 25, 14, 36, 26, 12, 29, 17, 20, 47, 0, 255, 255, 0, 82, 0, 0, 4, 130, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 0, 82, 0, 0, 4, 130, 7, 48, 6, 38, 0, 10, 0, 0, 0, 7, 1, 97, 0, 26, 1, 93, 255, 255, 0, 71, 255, 234, 4, 192, 5, 176, 6, 6, 0, 11, 0, 0, 255, 255, 0, 42, 0, 0, 5, 48, 5, 176, 6, 6, 2, 113, 0, 0, 255, 255, 0, 20, 0, 0, 5, 82, 7, 19, 6, 38, 0, 12, 0, 0, 0, 7, 1, 91, 0, 161, 1, 77, 255, 255, 255, 251, 255, 232, 5, 75, 7, 57, 6, 38, 1, 168, 0, 0, 0, 7, 1, 95, 0, 111, 1, 150, 255, 255, 255, 174, 0, 0, 4, 60, 5, 176, 6, 6, 0, 2, 0, 0, 255, 255, 0, 20, 255, 255, 4, 175, 5, 176, 6, 6, 0, 3, 0, 0, 255, 255, 0, 32, 0, 0, 4, 176, 5, 176, 6, 6, 1, 123, 0, 0, 255, 255, 0, 38, 0, 0, 4, 217, 5, 176, 6, 6, 0, 6, 0, 0, 255, 255, 0, 3, 0, 0, 4, 180, 7, 44, 6, 38, 1, 166, 0, 0, 0, 7, 1, 95, 0, 36, 1, 137, 255, 255, 0, 18, 0, 0, 4, 212, 5, 176, 6, 6, 0, 14, 0, 0, 255, 255, 0, 15, 0, 0, 4, 185, 5, 176, 6, 6, 0, 9, 0, 0, 255, 255, 0, 73, 255, 234, 4, 138, 5, 198, 6, 6, 0, 16, 0, 0, 255, 255, 0, 13, 0, 0, 4, 188, 5, 176, 6, 6, 1, 128, 0, 0, 255, 255, 0, 40, 0, 0, 4, 184, 5, 176, 6, 6, 0, 17, 0, 0, 255, 255, 0, 74, 255, 232, 4, 156, 5, 199, 6, 6, 0, 4, 0, 0, 255, 255, 0, 134, 0, 0, 5, 35, 5, 176, 6, 6, 0, 21, 0, 0, 255, 255, 0, 75, 0, 0, 4, 230, 5, 176, 6, 6, 1, 130, 0, 0, 255, 255, 255, 184, 0, 0, 5, 38, 5, 176, 6, 6, 0, 25, 0, 0, 255, 255, 0, 58, 255, 235, 4, 27, 4, 80, 6, 6, 0, 28, 0, 0, 255, 255, 0, 85, 255, 235, 4, 76, 4, 80, 6, 6, 0, 32, 0, 0, 255, 255, 0, 13, 0, 0, 4, 112, 5, 247, 6, 38, 1, 185, 0, 0, 0, 6, 1, 95, 242, 84, 255, 255, 0, 81, 255, 232, 4, 66, 4, 81, 6, 6, 0, 42, 0, 0, 255, 255, 255, 220, 254, 96, 4, 53, 4, 79, 6, 6, 0, 43, 0, 0, 0, 1, 0, 96, 255, 233, 4, 49, 4, 81, 0, 57, 0, 0, 101, 38, 38, 39, 38, 38, 39, 38, 54, 55, 55, 54, 54, 55, 54, 54, 23, 22, 22, 23, 22, 22, 7, 23, 54, 38, 39, 38, 38, 39, 38, 6, 7, 6, 6, 7, 7, 6, 22, 23, 22, 22, 23, 22, 22, 23, 22, 54, 55, 54, 54, 55, 7, 6, 6, 7, 6, 6, 2, 19, 65, 69, 15, 6, 6, 2, 2, 3, 3, 4, 7, 36, 32, 32, 97, 69, 43, 64, 21, 21, 18, 3, 255, 5, 53, 52, 53, 150, 93, 120, 197, 73, 73, 90, 14, 3, 6, 5, 10, 10, 36, 26, 51, 167, 117, 87, 169, 69, 68, 88, 5, 254, 6, 41, 29, 30, 73, 201, 2, 65, 48, 17, 38, 20, 33, 69, 30, 30, 57, 117, 48, 47, 58, 2, 2, 31, 26, 26, 71, 40, 1, 93, 153, 56, 55, 62, 2, 3, 86, 75, 76, 202, 113, 31, 54, 105, 48, 47, 85, 37, 75, 90, 2, 2, 53, 51, 51, 147, 92, 2, 40, 64, 21, 22, 22, 0, 255, 255, 0, 0, 254, 72, 5, 3, 4, 58, 6, 6, 0, 52, 0, 0, 255, 255, 255, 241, 0, 0, 4, 197, 4, 58, 6, 6, 0, 51, 0, 0, 255, 255, 0, 85, 255, 235, 4, 76, 5, 239, 6, 38, 0, 32, 0, 0, 0, 6, 1, 97, 228, 28, 255, 255, 0, 34, 0, 0, 4, 103, 5, 212, 6, 38, 1, 181, 0, 0, 0, 6, 1, 91, 127, 14, 255, 255, 0, 74, 255, 234, 4, 76, 4, 79, 6, 6, 0, 46, 0, 0, 255, 255, 0, 104, 0, 0, 3, 233, 5, 230, 6, 6, 0, 36, 0, 0, 255, 255, 0, 88, 0, 0, 4, 114, 5, 212, 6, 38, 1, 109, 0, 0, 0, 6, 1, 97, 31, 1, 255, 255, 0, 48, 254, 73, 3, 219, 5, 230, 6, 6, 0, 37, 0, 0, 255, 255, 0, 24, 0, 0, 4, 229, 5, 212, 6, 38, 1, 186, 0, 0, 0, 6, 1, 91, 86, 14, 255, 255, 0, 0, 254, 72, 5, 3, 5, 235, 6, 38, 0, 52, 0, 0, 0, 6, 1, 95, 35, 72, 255, 255, 255, 224, 255, 239, 5, 10, 5, 176, 6, 39, 0, 91, 254, 128, 0, 0, 0, 7, 0, 91, 1, 156, 0, 0, 255, 255, 0, 51, 254, 73, 4, 213, 5, 226, 6, 38, 1, 113, 0, 0, 0, 6, 1, 100, 95, 243, 255, 255, 2, 24, 3, 228, 3, 152, 6, 24, 6, 6, 0, 109, 0, 0, 255, 255, 0, 18, 0, 0, 4, 212, 7, 31, 6, 38, 0, 14, 0, 0, 0, 7, 1, 91, 0, 181, 1, 89, 255, 255, 255, 224, 0, 0, 4, 134, 5, 221, 6, 38, 0, 40, 0, 0, 0, 7, 1, 91, 0, 162, 0, 23, 255, 255, 255, 174, 254, 146, 4, 60, 5, 176, 6, 38, 0, 2, 0, 0, 0, 6, 1, 114, 2, 5, 255, 255, 0, 58, 254, 154, 4, 27, 4, 80, 6, 38, 0, 28, 0, 0, 0, 6, 1, 114, 193, 13, 255, 255, 255, 202, 255, 234, 4, 138, 6, 85, 6, 38, 0, 16, 0, 0, 0, 7, 2, 108, 253, 134, 0, 144, 255, 255, 0, 38, 0, 0, 4, 217, 7, 25, 6, 38, 0, 6, 0, 0, 0, 7, 1, 90, 255, 191, 1, 83, 255, 255, 0, 3, 0, 0, 4, 180, 7, 12, 6, 38, 1, 166, 0, 0, 0, 7, 1, 90, 255, 138, 1, 70, 255, 255, 0, 85, 255, 235, 4, 76, 5, 225, 6, 38, 0, 32, 0, 0, 0, 7, 1, 90, 255, 97, 0, 27, 255, 255, 0, 13, 0, 0, 4, 112, 5, 215, 6, 38, 1, 185, 0, 0, 0, 7, 1, 90, 255, 87, 0, 17, 255, 255, 0, 108, 0, 0, 5, 75, 5, 176, 6, 6, 1, 131, 0, 0, 255, 255, 0, 59, 254, 34, 4, 200, 4, 60, 6, 6, 1, 151, 0, 0, 255, 255, 0, 164, 0, 0, 5, 110, 7, 112, 6, 38, 1, 226, 0, 0, 0, 7, 1, 119, 4, 122, 1, 130, 255, 255, 0, 140, 0, 0, 4, 162, 6, 63, 6, 38, 1, 227, 0, 0, 0, 7, 1, 119, 4, 35, 0, 81, 255, 255, 0, 35, 254, 3, 4, 181, 5, 198, 6, 38, 1, 165, 0, 0, 0, 7, 2, 110, 255, 195, 255, 103, 255, 255, 0, 59, 254, 13, 4, 77, 4, 78, 6, 38, 1, 184, 0, 0, 0, 7, 2, 110, 255, 197, 255, 113, 255, 255, 0, 74, 254, 18, 4, 156, 5, 199, 6, 38, 0, 4, 0, 0, 0, 7, 2, 110, 255, 203, 255, 118, 255, 255, 0, 96, 254, 18, 4, 49, 4, 81, 6, 38, 0, 30, 0, 0, 0, 7, 2, 110, 255, 203, 255, 118, 255, 255, 0, 186, 0, 0, 5, 63, 5, 176, 6, 6, 0, 26, 0, 0, 255, 255, 0, 127, 254, 95, 4, 236, 4, 58, 6, 6, 1, 135, 0, 0, 255, 255, 0, 82, 0, 0, 4, 130, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 255, 139, 0, 0, 5, 34, 7, 57, 6, 38, 1, 164, 0, 0, 0, 7, 1, 95, 0, 69, 1, 150, 255, 255, 255, 179, 0, 0, 4, 207, 5, 247, 6, 38, 1, 183, 0, 0, 0, 6, 1, 95, 5, 84, 255, 255, 0, 82, 0, 0, 4, 130, 5, 176, 6, 6, 0, 10, 0, 0, 255, 255, 255, 174, 0, 0, 4, 130, 7, 66, 6, 38, 0, 2, 0, 0, 0, 7, 1, 95, 0, 82, 1, 159, 255, 255, 0, 58, 255, 235, 4, 39, 6, 0, 6, 38, 0, 28, 0, 0, 0, 6, 1, 95, 247, 93, 255, 255, 255, 174, 0, 0, 4, 141, 7, 48, 6, 38, 0, 2, 0, 0, 0, 7, 1, 97, 0, 58, 1, 93, 255, 255, 0, 58, 255, 235, 4, 50, 5, 238, 6, 38, 0, 28, 0, 0, 0, 6, 1, 97, 223, 27, 255, 255, 255, 193, 0, 0, 4, 247, 5, 176, 6, 6, 0, 72, 0, 0, 255, 255, 255, 245, 255, 235, 4, 158, 4, 81, 6, 6, 0, 73, 0, 0, 255, 255, 0, 38, 0, 0, 4, 217, 7, 57, 6, 38, 0, 6, 0, 0, 0, 7, 1, 95, 0, 89, 1, 150, 255, 255, 0, 85, 255, 235, 4, 76, 6, 1, 6, 38, 0, 32, 0, 0, 0, 6, 1, 95, 252, 94, 255, 255, 0, 67, 255, 233, 4, 135, 6, 249, 6, 38, 2, 16, 0, 0, 0, 7, 1, 97, 0, 46, 1, 38, 255, 255, 0, 119, 255, 235, 4, 84, 4, 79, 6, 6, 0, 81, 0, 0, 255, 255, 0, 119, 255, 235, 4, 95, 5, 239, 6, 38, 0, 81, 0, 0, 0, 6, 1, 97, 12, 28, 255, 255, 255, 139, 0, 0, 5, 34, 7, 39, 6, 38, 1, 164, 0, 0, 0, 7, 1, 97, 0, 45, 1, 84, 255, 255, 255, 179, 0, 0, 4, 207, 5, 229, 6, 38, 1, 183, 0, 0, 0, 6, 1, 97, 238, 18, 255, 255, 0, 35, 255, 235, 4, 181, 7, 47, 6, 38, 1, 165, 0, 0, 0, 7, 1, 97, 0, 46, 1, 92, 255, 255, 0, 59, 255, 235, 4, 77, 5, 237, 6, 38, 1, 184, 0, 0, 0, 6, 1, 97, 244, 26, 255, 255, 0, 3, 0, 0, 4, 180, 6, 220, 6, 38, 1, 166, 0, 0, 0, 7, 1, 94, 0, 19, 1, 44, 255, 255, 0, 13, 0, 0, 4, 112, 5, 168, 6, 38, 1, 185, 0, 0, 0, 6, 1, 94, 225, 248, 255, 255, 0, 3, 0, 0, 4, 180, 7, 26, 6, 38, 1, 166, 0, 0, 0, 7, 1, 97, 0, 12, 1, 71, 255, 255, 0, 13, 0, 0, 4, 112, 5, 229, 6, 38, 1, 185, 0, 0, 0, 6, 1, 97, 218, 18, 255, 255, 0, 73, 255, 234, 4, 138, 7, 69, 6, 38, 0, 16, 0, 0, 0, 7, 1, 97, 0, 44, 1, 114, 255, 255, 0, 81, 255, 232, 4, 74, 5, 238, 6, 38, 0, 42, 0, 0, 0, 6, 1, 97, 247, 27, 255, 255, 0, 71, 255, 234, 4, 136, 5, 198, 6, 6, 1, 224, 0, 0, 255, 255, 0, 72, 255, 232, 4, 63, 4, 80, 6, 6, 1, 225, 0, 0, 255, 255, 0, 71, 255, 234, 4, 136, 7, 38, 6, 38, 1, 224, 0, 0, 0, 7, 1, 97, 0, 45, 1, 83, 255, 255, 0, 72, 255, 232, 4, 63, 5, 248, 6, 38, 1, 225, 0, 0, 0, 6, 1, 97, 229, 37, 255, 255, 0, 1, 255, 233, 4, 85, 7, 47, 6, 38, 1, 176, 0, 0, 0, 7, 1, 97, 255, 248, 1, 92, 255, 255, 0, 66, 255, 233, 4, 56, 5, 238, 6, 38, 1, 200, 0, 0, 0, 6, 1, 97, 229, 27, 255, 255, 255, 251, 255, 232, 5, 75, 6, 233, 6, 38, 1, 168, 0, 0, 0, 7, 1, 94, 0, 94, 1, 57, 255, 255, 0, 0, 254, 72, 5, 3, 5, 156, 6, 38, 0, 52, 0, 0, 0, 6, 1, 94, 18, 236, 255, 255, 255, 251, 255, 232, 5, 75, 7, 39, 6, 38, 1, 168, 0, 0, 0, 7, 1, 97, 0, 87, 1, 84, 255, 255, 0, 0, 254, 72, 5, 3, 5, 217, 6, 38, 0, 52, 0, 0, 0, 6, 1, 97, 11, 6, 255, 255, 255, 251, 255, 232, 5, 139, 7, 66, 6, 38, 1, 168, 0, 0, 0, 7, 1, 99, 0, 227, 1, 84, 255, 255, 0, 0, 254, 72, 5, 63, 5, 244, 6, 38, 0, 52, 0, 0, 0, 7, 1, 99, 0, 151, 0, 6, 255, 255, 0, 213, 0, 0, 4, 211, 7, 39, 6, 38, 1, 170, 0, 0, 0, 7, 1, 97, 0, 7, 1, 84, 255, 255, 0, 137, 0, 0, 4, 148, 5, 229, 6, 38, 1, 194, 0, 0, 0, 6, 1, 97, 40, 18, 255, 255, 255, 223, 255, 254, 4, 243, 7, 48, 6, 38, 1, 174, 0, 0, 0, 7, 1, 97, 0, 5, 1, 93, 255, 255, 255, 247, 255, 255, 4, 174, 5, 217, 6, 38, 1, 198, 0, 0, 0, 6, 1, 97, 35, 6, 255, 255, 255, 184, 254, 71, 5, 38, 5, 176, 6, 38, 0, 25, 0, 0, 0, 7, 2, 111, 2, 8, 0, 0, 255, 255, 255, 241, 254, 71, 4, 197, 4, 58, 6, 38, 0, 51, 0, 0, 0, 7, 2, 111, 1, 185, 0, 0, 255, 255, 0, 91, 255, 235, 4, 187, 6, 0, 6, 6, 0, 31, 0, 0, 255, 255, 255, 196, 254, 71, 4, 252, 5, 176, 6, 38, 1, 167, 0, 0, 0, 7, 2, 111, 2, 16, 0, 0, 255, 255, 255, 195, 254, 71, 4, 235, 4, 58, 6, 38, 1, 187, 0, 0, 0, 7, 2, 111, 1, 255, 0, 0, 255, 255, 255, 174, 254, 152, 4, 60, 5, 176, 6, 38, 0, 2, 0, 0, 0, 7, 1, 101, 4, 161, 0, 5, 255, 255, 0, 58, 254, 160, 4, 27, 4, 80, 6, 38, 0, 28, 0, 0, 0, 7, 1, 101, 4, 95, 0, 13, 255, 255, 255, 174, 0, 0, 4, 60, 7, 198, 6, 38, 0, 2, 0, 0, 0, 7, 1, 118, 4, 235, 1, 66, 255, 255, 0, 58, 255, 235, 4, 27, 6, 132, 6, 38, 0, 28, 0, 0, 0, 7, 1, 118, 4, 143, 0, 0, 255, 255, 255, 174, 0, 0, 5, 240, 7, 227, 6, 38, 0, 2, 0, 0, 0, 7, 2, 76, 0, 45, 1, 94, 255, 255, 0, 58, 255, 235, 5, 149, 6, 161, 6, 38, 0, 28, 0, 0, 0, 6, 2, 76, 210, 28, 255, 255, 255, 174, 0, 0, 4, 116, 7, 210, 6, 38, 0, 2, 0, 0, 0, 7, 2, 75, 0, 20, 1, 65, 255, 255, 0, 58, 255, 235, 4, 27, 6, 145, 6, 38, 0, 28, 0, 0, 0, 6, 2, 75, 185, 0, 255, 255, 255, 174, 0, 0, 5, 107, 7, 239, 6, 38, 0, 2, 0, 0, 0, 7, 2, 74, 0, 40, 1, 61, 255, 255, 0, 58, 255, 235, 5, 16, 6, 174, 6, 38, 0, 28, 0, 0, 0, 6, 2, 74, 205, 252, 255, 255, 255, 174, 0, 0, 4, 108, 8, 43, 6, 38, 0, 2, 0, 0, 0, 7, 2, 73, 0, 30, 1, 59, 255, 255, 0, 58, 255, 235, 4, 27, 6, 234, 6, 38, 0, 28, 0, 0, 0, 6, 2, 73, 195, 250, 255, 255, 255, 174, 254, 152, 4, 132, 7, 73, 6, 38, 0, 2, 0, 0, 0, 39, 1, 92, 0, 190, 1, 93, 0, 7, 1, 101, 4, 161, 0, 5, 255, 255, 0, 58, 254, 160, 4, 40, 6, 7, 6, 38, 0, 28, 0, 0, 0, 38, 1, 92, 98, 27, 0, 7, 1, 101, 4, 95, 0, 13, 255, 255, 255, 174, 0, 0, 4, 120, 7, 189, 6, 38, 0, 2, 0, 0, 0, 7, 2, 105, 0, 46, 1, 76, 255, 255, 0, 58, 255, 235, 4, 29, 6, 123, 6, 38, 0, 28, 0, 0, 0, 6, 2, 105, 211, 10, 255, 255, 255, 174, 0, 0, 4, 143, 8, 28, 6, 38, 0, 2, 0, 0, 0, 7, 2, 77, 0, 69, 1, 171, 255, 255, 0, 58, 255, 235, 4, 52, 6, 218, 6, 38, 0, 28, 0, 0, 0, 6, 2, 77, 234, 105, 255, 255, 255, 174, 0, 0, 4, 113, 8, 50, 6, 38, 0, 2, 0, 0, 0, 7, 2, 104, 0, 23, 1, 61, 255, 255, 0, 58, 255, 235, 4, 27, 6, 241, 6, 38, 0, 28, 0, 0, 0, 6, 2, 104, 188, 252, 255, 255, 255, 174, 0, 0, 4, 116, 8, 34, 6, 38, 0, 2, 0, 0, 0, 7, 2, 109, 255, 255, 1, 65, 255, 255, 0, 58, 255, 235, 4, 27, 6, 225, 6, 38, 0, 28, 0, 0, 0, 6, 2, 109, 163, 0, 255, 255, 255, 174, 254, 152, 4, 130, 7, 66, 6, 38, 0, 2, 0, 0, 0, 39, 1, 95, 0, 82, 1, 159, 0, 7, 1, 101, 4, 161, 0, 5, 255, 255, 0, 58, 254, 160, 4, 39, 6, 0, 6, 38, 0, 28, 0, 0, 0, 38, 1, 95, 247, 93, 0, 7, 1, 101, 4, 95, 0, 13, 255, 255, 0, 38, 254, 157, 4, 217, 5, 176, 6, 38, 0, 6, 0, 0, 0, 7, 1, 101, 4, 185, 0, 10, 255, 255, 0, 85, 254, 147, 4, 76, 4, 80, 6, 38, 0, 32, 0, 0, 0, 7, 1, 101, 4, 174, 0, 0, 255, 255, 0, 38, 0, 0, 4, 217, 7, 189, 6, 38, 0, 6, 0, 0, 0, 7, 1, 118, 4, 242, 1, 57, 255, 255, 0, 85, 255, 235, 4, 76, 6, 133, 6, 38, 0, 32, 0, 0, 0, 7, 1, 118, 4, 148, 0, 1, 255, 255, 0, 38, 0, 0, 4, 217, 7, 90, 6, 38, 0, 6, 0, 0, 0, 7, 1, 93, 0, 216, 1, 85, 255, 255, 0, 85, 255, 235, 4, 76, 6, 34, 6, 38, 0, 32, 0, 0, 0, 6, 1, 93, 122, 29, 255, 255, 0, 38, 0, 0, 5, 247, 7, 218, 6, 38, 0, 6, 0, 0, 0, 7, 2, 76, 0, 52, 1, 85, 255, 255, 0, 85, 255, 235, 5, 154, 6, 162, 6, 38, 0, 32, 0, 0, 0, 6, 2, 76, 215, 29, 255, 255, 0, 38, 0, 0, 4, 217, 7, 201, 6, 38, 0, 6, 0, 0, 0, 7, 2, 75, 0, 27, 1, 56, 255, 255, 0, 85, 255, 235, 4, 76, 6, 145, 6, 38, 0, 32, 0, 0, 0, 6, 2, 75, 190, 0, 255, 255, 0, 38, 0, 0, 5, 114, 7, 230, 6, 38, 0, 6, 0, 0, 0, 7, 2, 74, 0, 47, 1, 52, 255, 255, 0, 85, 255, 235, 5, 21, 6, 175, 6, 38, 0, 32, 0, 0, 0, 6, 2, 74, 210, 253, 255, 255, 0, 38, 0, 0, 4, 217, 8, 34, 6, 38, 0, 6, 0, 0, 0, 7, 2, 73, 0, 37, 1, 50, 255, 255, 0, 85, 255, 235, 4, 76, 6, 235, 6, 38, 0, 32, 0, 0, 0, 6, 2, 73, 200, 251, 255, 255, 0, 38, 254, 157, 4, 217, 7, 64, 6, 38, 0, 6, 0, 0, 0, 39, 1, 92, 0, 197, 1, 84, 0, 7, 1, 101, 4, 185, 0, 10, 255, 255, 0, 85, 254, 147, 4, 76, 6, 8, 6, 38, 0, 32, 0, 0, 0, 38, 1, 92, 103, 28, 0, 7, 1, 101, 4, 174, 0, 0, 255, 255, 0, 82, 0, 0, 4, 130, 7, 198, 6, 38, 0, 10, 0, 0, 0, 7, 1, 118, 4, 203, 1, 66, 255, 255, 0, 88, 0, 0, 4, 18, 6, 107, 6, 38, 1, 109, 0, 0, 0, 7, 1, 118, 4, 208, 255, 231, 255, 255, 0, 82, 254, 157, 4, 130, 5, 176, 6, 38, 0, 10, 0, 0, 0, 7, 1, 101, 4, 141, 0, 10, 255, 255, 0, 104, 254, 157, 3, 233, 5, 230, 6, 38, 0, 36, 0, 0, 0, 7, 1, 101, 4, 203, 0, 10, 255, 255, 0, 73, 254, 138, 4, 138, 5, 198, 6, 38, 0, 16, 0, 0, 0, 7, 1, 101, 4, 156, 255, 247, 255, 255, 0, 81, 254, 133, 4, 66, 4, 81, 6, 38, 0, 42, 0, 0, 0, 7, 1, 101, 4, 150, 255, 242, 255, 255, 0, 73, 255, 234, 4, 138, 7, 219, 6, 38, 0, 16, 0, 0, 0, 7, 1, 118, 4, 221, 1, 87, 255, 255, 0, 81, 255, 232, 4, 66, 6, 132, 6, 38, 0, 42, 0, 0, 0, 7, 1, 118, 4, 167, 0, 0, 255, 255, 0, 73, 255, 234, 5, 226, 7, 248, 6, 38, 0, 16, 0, 0, 0, 7, 2, 76, 0, 31, 1, 115, 255, 255, 0, 81, 255, 232, 5, 173, 6, 161, 6, 38, 0, 42, 0, 0, 0, 6, 2, 76, 234, 28, 255, 255, 0, 73, 255, 234, 4, 138, 7, 231, 6, 38, 0, 16, 0, 0, 0, 7, 2, 75, 0, 6, 1, 86, 255, 255, 0, 81, 255, 232, 4, 66, 6, 145, 6, 38, 0, 42, 0, 0, 0, 6, 2, 75, 209, 0, 255, 255, 0, 73, 255, 234, 5, 93, 8, 4, 6, 38, 0, 16, 0, 0, 0, 7, 2, 74, 0, 26, 1, 82, 255, 255, 0, 81, 255, 232, 5, 40, 6, 174, 6, 38, 0, 42, 0, 0, 0, 6, 2, 74, 229, 252, 255, 255, 0, 73, 255, 234, 4, 138, 8, 64, 6, 38, 0, 16, 0, 0, 0, 7, 2, 73, 0, 16, 1, 80, 255, 255, 0, 81, 255, 232, 4, 66, 6, 234, 6, 38, 0, 42, 0, 0, 0, 6, 2, 73, 219, 250, 255, 255, 0, 73, 254, 138, 4, 138, 7, 94, 6, 38, 0, 16, 0, 0, 0, 39, 1, 92, 0, 176, 1, 114, 0, 7, 1, 101, 4, 156, 255, 247, 255, 255, 0, 81, 254, 133, 4, 66, 6, 7, 6, 38, 0, 42, 0, 0, 0, 38, 1, 92, 122, 27, 0, 7, 1, 101, 4, 150, 255, 242, 255, 255, 0, 86, 255, 234, 5, 80, 7, 39, 6, 38, 0, 216, 0, 0, 0, 7, 1, 91, 0, 195, 1, 97, 255, 255, 0, 70, 255, 232, 4, 221, 5, 221, 6, 38, 1, 53, 0, 0, 0, 6, 1, 91, 123, 23, 255, 255, 0, 86, 255, 234, 5, 80, 7, 42, 6, 38, 0, 216, 0, 0, 0, 7, 1, 90, 255, 178, 1, 100, 255, 255, 0, 70, 255, 232, 4, 221, 5, 224, 6, 38, 1, 53, 0, 0, 0, 7, 1, 90, 255, 106, 0, 26, 255, 255, 0, 86, 255, 234, 5, 80, 7, 206, 6, 38, 0, 216, 0, 0, 0, 7, 1, 118, 4, 229, 1, 74, 255, 255, 0, 70, 255, 232, 4, 221, 6, 132, 6, 38, 1, 53, 0, 0, 0, 7, 1, 118, 4, 157, 0, 0, 255, 255, 0, 86, 255, 234, 5, 80, 7, 107, 6, 38, 0, 216, 0, 0, 0, 7, 1, 93, 0, 203, 1, 102, 255, 255, 0, 70, 255, 232, 4, 221, 6, 33, 6, 38, 1, 53, 0, 0, 0, 7, 1, 93, 0, 131, 0, 28, 255, 255, 0, 86, 254, 147, 5, 80, 5, 224, 6, 38, 0, 216, 0, 0, 0, 7, 1, 101, 4, 144, 0, 0, 255, 255, 0, 70, 254, 138, 4, 221, 4, 157, 6, 38, 1, 53, 0, 0, 0, 7, 1, 101, 4, 147, 255, 247, 255, 255, 0, 94, 254, 140, 4, 193, 5, 176, 6, 38, 0, 22, 0, 0, 0, 7, 1, 101, 4, 150, 255, 249, 255, 255, 0, 113, 254, 147, 4, 127, 4, 58, 6, 38, 0, 48, 0, 0, 0, 7, 1, 101, 4, 60, 0, 0, 255, 255, 0, 94, 255, 233, 4, 193, 7, 195, 6, 38, 0, 22, 0, 0, 0, 7, 1, 118, 4, 225, 1, 63, 255, 255, 0, 113, 255, 233, 4, 127, 6, 112, 6, 38, 0, 48, 0, 0, 0, 7, 1, 118, 4, 165, 255, 236, 255, 255, 0, 101, 255, 233, 6, 33, 7, 31, 6, 38, 0, 236, 0, 0, 0, 7, 1, 91, 0, 200, 1, 89, 255, 255, 0, 85, 255, 234, 5, 143, 5, 200, 6, 38, 1, 73, 0, 0, 0, 6, 1, 91, 123, 2, 255, 255, 0, 101, 255, 233, 6, 33, 7, 34, 6, 38, 0, 236, 0, 0, 0, 7, 1, 90, 255, 183, 1, 92, 255, 255, 0, 85, 255, 234, 5, 143, 5, 203, 6, 38, 1, 73, 0, 0, 0, 7, 1, 90, 255, 106, 0, 5, 255, 255, 0, 101, 255, 233, 6, 33, 7, 198, 6, 38, 0, 236, 0, 0, 0, 7, 1, 118, 4, 234, 1, 66, 255, 255, 0, 85, 255, 234, 5, 143, 6, 112, 6, 38, 1, 73, 0, 0, 0, 7, 1, 118, 4, 157, 255, 236, 255, 255, 0, 101, 255, 233, 6, 33, 7, 99, 6, 38, 0, 236, 0, 0, 0, 7, 1, 93, 0, 208, 1, 94, 255, 255, 0, 85, 255, 234, 5, 143, 6, 12, 6, 38, 1, 73, 0, 0, 0, 7, 1, 93, 0, 131, 0, 7, 255, 255, 0, 101, 254, 138, 6, 33, 5, 230, 6, 38, 0, 236, 0, 0, 0, 7, 1, 101, 4, 169, 255, 247, 255, 255, 0, 85, 254, 147, 5, 143, 4, 156, 6, 38, 1, 73, 0, 0, 0, 7, 1, 101, 4, 57, 0, 0, 255, 255, 0, 186, 254, 186, 5, 63, 5, 176, 6, 38, 0, 26, 0, 0, 0, 7, 1, 101, 4, 172, 0, 39, 255, 255, 0, 0, 254, 33, 5, 3, 4, 58, 6, 38, 0, 52, 0, 0, 0, 7, 1, 101, 5, 164, 255, 142, 255, 255, 0, 186, 0, 0, 5, 63, 7, 198, 6, 38, 0, 26, 0, 0, 0, 7, 1, 118, 4, 229, 1, 66, 255, 255, 0, 0, 254, 72, 5, 3, 6, 112, 6, 38, 0, 52, 0, 0, 0, 7, 1, 118, 4, 188, 255, 236, 255, 255, 0, 186, 0, 0, 5, 63, 7, 99, 6, 38, 0, 26, 0, 0, 0, 7, 1, 93, 0, 203, 1, 94, 255, 255, 0, 0, 254, 72, 5, 3, 6, 12, 6, 38, 0, 52, 0, 0, 0, 7, 1, 93, 0, 162, 0, 7, 255, 255, 0, 16, 254, 190, 5, 71, 6, 0, 4, 38, 0, 31, 241, 0, 0, 39, 2, 106, 1, 91, 2, 60, 0, 6, 0, 102, 15, 151, 255, 255, 0, 42, 254, 157, 5, 48, 5, 176, 6, 38, 2, 113, 0, 0, 0, 7, 2, 110, 1, 241, 0, 1, 255, 255, 0, 24, 254, 156, 4, 229, 4, 58, 6, 38, 1, 186, 0, 0, 0, 7, 2, 110, 2, 37, 0, 0, 255, 255, 0, 15, 254, 156, 4, 185, 5, 176, 6, 38, 0, 9, 0, 0, 0, 7, 2, 110, 1, 217, 0, 0, 255, 255, 0, 13, 254, 156, 4, 142, 4, 58, 6, 38, 1, 189, 0, 0, 0, 7, 2, 110, 1, 217, 0, 0, 255, 255, 0, 134, 254, 156, 5, 35, 5, 176, 6, 38, 0, 21, 0, 0, 0, 7, 2, 110, 0, 130, 0, 0, 255, 255, 0, 134, 254, 156, 4, 227, 4, 58, 6, 38, 1, 191, 0, 0, 0, 7, 2, 110, 0, 184, 0, 0, 255, 255, 255, 184, 254, 156, 5, 38, 5, 176, 6, 38, 0, 25, 0, 0, 0, 7, 2, 110, 1, 226, 0, 0, 255, 255, 255, 241, 254, 156, 4, 197, 4, 58, 6, 38, 0, 51, 0, 0, 0, 7, 2, 110, 1, 147, 0, 0, 255, 255, 0, 213, 254, 156, 4, 211, 5, 176, 6, 38, 1, 170, 0, 0, 0, 7, 2, 110, 1, 250, 0, 0, 255, 255, 0, 137, 254, 156, 4, 179, 4, 58, 6, 38, 1, 194, 0, 0, 0, 7, 2, 110, 1, 254, 0, 0, 255, 255, 0, 213, 254, 156, 4, 211, 5, 176, 6, 38, 1, 170, 0, 0, 0, 7, 2, 110, 0, 136, 0, 0, 255, 255, 0, 137, 254, 156, 4, 148, 4, 58, 6, 38, 1, 194, 0, 0, 0, 7, 2, 110, 0, 139, 0, 0, 255, 255, 0, 32, 254, 156, 4, 176, 5, 176, 6, 38, 1, 123, 0, 0, 0, 7, 2, 110, 255, 87, 0, 0, 255, 255, 0, 34, 254, 156, 4, 103, 4, 58, 6, 38, 1, 181, 0, 0, 0, 7, 2, 110, 255, 34, 0, 0, 255, 255, 255, 139, 254, 156, 5, 34, 5, 176, 6, 38, 1, 164, 0, 0, 0, 7, 2, 110, 2, 30, 0, 0, 255, 255, 255, 179, 254, 156, 4, 207, 4, 58, 6, 38, 1, 183, 0, 0, 0, 7, 2, 110, 2, 22, 0, 0, 255, 255, 0, 38, 254, 16, 4, 157, 5, 197, 6, 38, 2, 10, 0, 0, 0, 7, 2, 110, 0, 68, 255, 116, 255, 255, 0, 61, 254, 19, 4, 118, 4, 81, 6, 38, 2, 11, 0, 0, 0, 7, 2, 110, 0, 77, 255, 119, 255, 255, 0, 32, 0, 0, 4, 68, 6, 0, 6, 6, 0, 35, 0, 0, 0, 2, 0, 29, 255, 255, 4, 54, 4, 58, 0, 24, 0, 39, 0, 0, 65, 55, 33, 55, 33, 7, 35, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 55, 3, 5, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 7, 39, 2, 215, 32, 254, 224, 17, 254, 241, 17, 114, 32, 114, 139, 2, 38, 86, 171, 70, 70, 91, 6, 5, 63, 56, 56, 149, 80, 249, 14, 52, 1, 21, 31, 56, 20, 19, 18, 6, 6, 42, 29, 30, 70, 35, 251, 3, 35, 180, 99, 99, 180, 252, 221, 1, 41, 45, 44, 138, 97, 90, 131, 43, 43, 44, 2, 1, 85, 254, 204, 1, 1, 15, 15, 16, 49, 35, 39, 54, 16, 17, 15, 1, 1, 0, 0, 2, 0, 22, 255, 255, 4, 45, 5, 176, 0, 24, 0, 39, 0, 0, 65, 55, 35, 55, 33, 7, 35, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 55, 3, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 2, 201, 32, 228, 33, 254, 237, 33, 170, 32, 171, 189, 1, 192, 110, 204, 81, 81, 104, 10, 9, 66, 63, 64, 176, 100, 143, 29, 68, 172, 49, 78, 27, 26, 23, 7, 8, 53, 40, 41, 104, 58, 145, 4, 66, 180, 186, 186, 180, 251, 190, 1, 60, 60, 59, 177, 117, 108, 164, 56, 56, 59, 2, 1, 172, 254, 114, 1, 2, 30, 27, 28, 78, 51, 60, 93, 32, 32, 34, 2, 0, 2, 0, 22, 255, 255, 4, 45, 5, 176, 0, 24, 0, 39, 0, 0, 65, 55, 35, 55, 33, 7, 35, 7, 51, 3, 33, 22, 54, 55, 54, 54, 55, 54, 38, 39, 38, 38, 39, 39, 55, 3, 23, 22, 22, 23, 22, 22, 7, 6, 6, 7, 6, 6, 35, 39, 2, 201, 32, 228, 33, 254, 237, 33, 170, 32, 171, 189, 1, 192, 110, 204, 81, 81, 104, 10, 9, 66, 63, 64, 176, 100, 143, 29, 68, 172, 49, 78, 27, 26, 23, 7, 8, 53, 40, 41, 104, 58, 145, 4, 66, 180, 186, 186, 180, 251, 190, 1, 60, 60, 59, 177, 117, 108, 164, 56, 56, 59, 2, 1, 172, 254, 114, 1, 2, 30, 27, 28, 78, 51, 60, 93, 32, 32, 34, 2, 0, 1, 255, 241, 0, 0, 4, 176, 5, 176, 0, 13, 0, 0, 65, 55, 35, 19, 33, 55, 33, 3, 35, 7, 51, 3, 33, 19, 2, 146, 32, 238, 67, 2, 129, 40, 252, 109, 107, 161, 32, 162, 115, 1, 18, 115, 2, 151, 180, 1, 129, 228, 253, 155, 180, 253, 105, 2, 151, 0, 0, 1, 255, 186, 0, 0, 4, 103, 4, 58, 0, 13, 0, 0, 65, 55, 35, 55, 33, 55, 33, 3, 35, 7, 51, 3, 33, 19, 2, 91, 32, 221, 39, 2, 122, 40, 252, 119, 78, 182, 32, 183, 79, 1, 14, 79, 1, 199, 180, 221, 226, 254, 65, 180, 254, 57, 1, 199, 0, 1, 0, 52, 0, 0, 5, 58, 5, 176, 0, 20, 0, 0, 65, 55, 35, 55, 33, 7, 35, 7, 51, 3, 33, 19, 51, 19, 33, 1, 1, 33, 1, 7, 19, 2, 225, 32, 216, 26, 254, 237, 24, 184, 32, 185, 197, 1, 18, 104, 119, 235, 1, 47, 254, 210, 2, 41, 254, 180, 254, 30, 63, 59, 4, 113, 180, 139, 139, 180, 251, 143, 2, 86, 253, 170, 2, 231, 2, 201, 253, 126, 1, 1, 68, 0, 0, 1, 0, 55, 0, 0, 4, 195, 6, 0, 0, 20, 0, 0, 65, 55, 35, 55, 33, 7, 35, 7, 51, 3, 33, 19, 55, 19, 33, 1, 1, 33, 1, 7, 19, 2, 231, 32, 208, 26, 254, 241, 26, 194, 32, 195, 210, 1, 15, 56, 152, 219, 1, 60, 254, 176, 1, 230, 254, 168, 254, 169, 90, 93, 4, 184, 180, 148, 148, 180, 251, 72, 1, 64, 125, 254, 67, 2, 108, 1, 206, 254, 188, 87, 2, 25, 255, 255, 0, 3, 254, 91, 4, 185, 7, 44, 6, 38, 1, 166, 0, 0, 0, 39, 1, 95, 0, 36, 1, 137, 0, 7, 0, 95, 2, 68, 255, 241, 255, 255, 0, 13, 254, 91, 4, 183, 5, 247, 6, 38, 1, 185, 0, 0, 0, 38, 1, 95, 242, 84, 0, 7, 0, 95, 2, 66, 255, 241, 255, 255, 0, 15, 254, 91, 4, 185, 5, 176, 6, 38, 0, 9, 0, 0, 0, 7, 0, 95, 2, 65, 255, 241, 255, 255, 0, 13, 254, 91, 4, 182, 4, 58, 6, 38, 1, 189, 0, 0, 0, 7, 0, 95, 2, 65, 255, 241, 255, 255, 0, 18, 254, 91, 4, 225, 5, 176, 6, 38, 0, 14, 0, 0, 0, 7, 0, 95, 2, 108, 255, 241, 255, 255, 0, 5, 254, 91, 4, 209, 4, 58, 6, 38, 1, 188, 0, 0, 0, 7, 0, 95, 2, 92, 255, 241, 255, 255, 255, 196, 254, 91, 4, 199, 5, 176, 6, 38, 1, 167, 0, 0, 0, 7, 0, 95, 2, 82, 255, 241, 255, 255, 255, 195, 254, 91, 4, 182, 4, 58, 6, 38, 1, 187, 0, 0, 0, 7, 0, 95, 2, 65, 255, 241, 0, 1, 0, 186, 0, 0, 5, 63, 5, 176, 0, 15, 0, 0, 65, 55, 35, 1, 33, 1, 49, 3, 33, 19, 35, 7, 51, 3, 33, 19, 3, 156, 32, 95, 1, 226, 254, 199, 254, 118, 162, 254, 224, 220, 123, 32, 205, 90, 1, 17, 92, 2, 11, 180, 2, 241, 253, 99, 2, 157, 253, 15, 180, 253, 245, 2, 11, 0, 0, 1, 0, 127, 254, 95, 4, 236, 4, 58, 0, 17, 0, 0, 101, 55, 35, 1, 33, 1, 7, 49, 39, 3, 33, 19, 35, 7, 51, 3, 33, 19, 3, 77, 32, 136, 2, 7, 254, 219, 254, 114, 30, 1, 137, 254, 238, 209, 132, 32, 194, 74, 1, 15, 74, 7, 180, 3, 127, 253, 1, 73, 67, 3, 5, 252, 129, 180, 254, 88, 1, 168, 0, 1, 255, 184, 0, 0, 5, 38, 5, 176, 0, 17, 0, 0, 65, 55, 35, 1, 33, 1, 3, 33, 19, 35, 7, 51, 1, 33, 1, 19, 33, 1, 3, 188, 32, 109, 1, 183, 254, 178, 254, 180, 165, 254, 204, 244, 108, 32, 112, 254, 45, 1, 80, 1, 84, 176, 1, 51, 254, 250, 2, 144, 180, 2, 108, 253, 248, 2, 8, 253, 148, 180, 253, 112, 2, 16, 253, 240, 2, 144, 0, 1, 255, 241, 0, 0, 4, 197, 4, 58, 0, 17, 0, 0, 65, 55, 35, 1, 33, 1, 3, 33, 19, 35, 7, 51, 1, 33, 1, 19, 33, 3, 3, 155, 32, 92, 1, 102, 254, 206, 254, 229, 173, 254, 235, 221, 121, 32, 115, 254, 132, 1, 52, 1, 38, 186, 1, 21, 235, 1, 209, 180, 1, 181, 254, 175, 1, 81, 254, 75, 180, 254, 47, 1, 97, 254, 159, 1, 209, 0, 255, 255, 0, 75, 255, 235, 4, 138, 4, 79, 6, 6, 1, 137, 0, 0, 0, 1, 0, 54, 2, 89, 4, 169, 3, 60, 0, 3, 0, 0, 65, 55, 33, 7, 4, 117, 52, 251, 193, 52, 2, 89, 227, 227, 0, 0, 0, 1, 0, 0, 3, 231, 0, 208, 0, 22, 0, 144, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 29, 0, 125, 0, 229, 1, 47, 1, 75, 1, 100, 1, 202, 1, 230, 2, 1, 2, 53, 2, 86, 2, 104, 2, 138, 2, 163, 3, 30, 3, 89, 3, 217, 4, 26, 4, 146, 4, 167, 4, 222, 4, 245, 5, 25, 5, 57, 5, 82, 5, 107, 5, 235, 6, 91, 6, 190, 7, 42, 7, 128, 7, 181, 8, 60, 8, 119, 8, 160, 8, 222, 8, 255, 9, 23, 9, 109, 9, 165, 10, 5, 10, 119, 10, 232, 11, 22, 11, 148, 11, 202, 11, 255, 12, 22, 12, 58, 12, 90, 12, 142, 12, 167, 13, 43, 13, 62, 13, 136, 14, 4, 14, 39, 14, 120, 14, 240, 15, 4, 15, 159, 16, 28, 16, 48, 16, 116, 16, 231, 17, 90, 17, 177, 18, 16, 18, 71, 18, 221, 19, 4, 19, 186, 20, 28, 20, 241, 21, 113, 21, 174, 22, 36, 22, 69, 22, 191, 23, 29, 23, 123, 23, 230, 24, 56, 24, 107, 24, 186, 24, 198, 25, 35, 25, 139, 26, 1, 26, 51, 26, 84, 26, 176, 27, 23, 27, 50, 27, 72, 27, 84, 27, 96, 27, 112, 27, 136, 27, 182, 27, 196, 27, 210, 27, 224, 27, 238, 27, 255, 28, 26, 28, 53, 28, 80, 28, 102, 28, 115, 28, 128, 28, 171, 28, 179, 28, 187, 28, 251, 29, 54, 29, 75, 29, 96, 29, 178, 29, 254, 30, 18, 30, 38, 30, 66, 30, 80, 30, 115, 30, 146, 30, 194, 30, 216, 30, 253, 31, 136, 31, 161, 31, 185, 31, 218, 31, 250, 32, 12, 32, 28, 32, 43, 32, 59, 32, 232, 33, 223, 33, 239, 34, 5, 34, 33, 34, 73, 34, 246, 35, 139, 35, 182, 36, 5, 36, 41, 36, 97, 36, 213, 37, 174, 38, 152, 38, 185, 38, 206, 39, 31, 39, 43, 39, 55, 39, 67, 39, 79, 39, 91, 39, 103, 39, 175, 39, 187, 39, 199, 39, 211, 39, 223, 39, 235, 39, 247, 40, 2, 40, 14, 40, 26, 40, 103, 40, 115, 40, 127, 40, 139, 40, 151, 40, 163, 40, 175, 40, 187, 40, 199, 40, 252, 41, 68, 41, 145, 41, 157, 41, 169, 41, 181, 41, 228, 41, 240, 41, 252, 42, 8, 42, 20, 42, 32, 42, 44, 42, 56, 42, 68, 42, 139, 42, 151, 42, 163, 42, 175, 42, 187, 42, 199, 42, 211, 42, 223, 42, 254, 43, 10, 43, 22, 43, 34, 43, 46, 43, 58, 43, 70, 43, 82, 43, 94, 43, 106, 43, 249, 44, 5, 44, 17, 44, 159, 44, 171, 44, 183, 44, 195, 44, 207, 44, 219, 44, 231, 44, 243, 44, 254, 45, 10, 45, 43, 45, 55, 45, 67, 45, 79, 45, 91, 45, 103, 45, 115, 45, 191, 45, 203, 45, 215, 46, 56, 46, 68, 46, 80, 46, 92, 46, 104, 46, 116, 46, 128, 46, 140, 46, 152, 46, 164, 46, 176, 46, 188, 46, 200, 46, 212, 46, 223, 46, 234, 46, 245, 47, 0, 47, 12, 47, 23, 47, 194, 47, 206, 47, 217, 47, 228, 47, 240, 47, 252, 48, 7, 48, 18, 48, 30, 48, 42, 48, 161, 48, 172, 48, 183, 48, 194, 48, 205, 48, 216, 48, 227, 48, 239, 48, 250, 49, 76, 49, 205, 49, 216, 49, 227, 49, 239, 50, 52, 50, 64, 50, 76, 50, 87, 50, 99, 50, 110, 50, 121, 50, 132, 50, 236, 50, 248, 51, 4, 51, 16, 51, 28, 51, 40, 51, 52, 51, 64, 51, 103, 51, 114, 51, 125, 51, 137, 51, 149, 51, 161, 51, 172, 51, 183, 51, 194, 51, 206, 52, 71, 52, 83, 52, 94, 52, 211, 52, 222, 52, 234, 52, 245, 53, 0, 53, 12, 53, 23, 53, 34, 53, 45, 53, 56, 53, 124, 53, 136, 53, 148, 53, 159, 53, 170, 53, 181, 53, 193, 54, 15, 54, 27, 54, 38, 54, 138, 54, 150, 54, 162, 54, 173, 54, 184, 54, 195, 54, 207, 54, 219, 54, 231, 54, 242, 54, 253, 55, 9, 55, 20, 55, 31, 55, 46, 55, 61, 55, 83, 55, 145, 55, 159, 55, 206, 55, 230, 56, 15, 56, 92, 56, 116, 56, 137, 56, 159, 56, 213, 57, 8, 57, 30, 57, 30, 57, 43, 57, 103, 57, 116, 57, 140, 57, 198, 58, 38, 58, 79, 58, 124, 58, 196, 58, 211, 58, 226, 58, 235, 59, 29, 59, 52, 59, 67, 59, 118, 59, 126, 59, 144, 59, 171, 60, 46, 60, 67, 60, 96, 60, 117, 60, 148, 60, 245, 61, 55, 61, 177, 62, 61, 62, 190, 62, 219, 63, 112, 63, 251, 64, 90, 64, 148, 65, 22, 65, 67, 65, 145, 66, 35, 66, 88, 66, 193, 67, 46, 67, 139, 67, 186, 67, 251, 68, 122, 68, 201, 69, 88, 69, 223, 70, 47, 70, 187, 71, 13, 71, 125, 71, 231, 72, 44, 72, 108, 72, 137, 72, 198, 73, 1, 73, 47, 73, 176, 73, 203, 74, 2, 74, 54, 74, 82, 74, 131, 74, 159, 74, 193, 74, 254, 75, 64, 75, 122, 75, 233, 76, 113, 76, 177, 77, 48, 77, 157, 77, 175, 77, 233, 78, 23, 78, 163, 78, 190, 78, 223, 79, 18, 79, 48, 79, 76, 79, 97, 79, 118, 79, 222, 79, 250, 80, 42, 80, 69, 80, 102, 80, 163, 80, 230, 81, 33, 81, 127, 82, 5, 82, 71, 82, 172, 83, 14, 83, 107, 83, 177, 83, 247, 84, 20, 84, 140, 85, 4, 85, 75, 85, 210, 86, 75, 86, 113, 86, 151, 86, 199, 86, 247, 87, 73, 87, 150, 87, 241, 88, 65, 88, 218, 89, 123, 89, 254, 90, 91, 90, 137, 90, 187, 91, 100, 92, 9, 92, 149, 93, 1, 93, 246, 94, 210, 95, 87, 95, 222, 96, 58, 96, 132, 96, 175, 96, 195, 96, 255, 97, 16, 97, 33, 98, 96, 98, 183, 98, 251, 99, 117, 99, 139, 99, 161, 99, 221, 100, 33, 100, 75, 100, 115, 100, 150, 100, 184, 100, 216, 100, 248, 101, 73, 101, 137, 102, 66, 102, 231, 103, 9, 103, 43, 103, 100, 103, 157, 103, 205, 104, 90, 104, 217, 105, 26, 105, 90, 105, 144, 105, 198, 106, 63, 106, 143, 106, 223, 106, 238, 106, 253, 107, 55, 107, 152, 108, 69, 108, 199, 109, 68, 109, 185, 110, 42, 110, 155, 111, 11, 111, 101, 111, 191, 112, 40, 112, 125, 112, 201, 113, 20, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 143, 113, 155, 113, 182, 113, 195, 113, 228, 114, 24, 114, 125, 115, 41, 115, 153, 116, 31, 116, 124, 117, 42, 118, 55, 119, 29, 119, 202, 120, 80, 120, 103, 120, 134, 120, 161, 121, 140, 121, 207, 121, 243, 121, 243, 122, 255, 123, 95, 123, 170, 123, 231, 124, 1, 124, 28, 124, 81, 124, 108, 124, 139, 124, 235, 125, 71, 125, 127, 125, 154, 125, 179, 126, 15, 126, 43, 126, 70, 126, 122, 126, 155, 126, 173, 126, 203, 126, 228, 127, 77, 127, 174, 127, 240, 128, 125, 128, 146, 128, 201, 128, 226, 129, 9, 129, 41, 129, 70, 129, 95, 129, 191, 129, 245, 130, 3, 130, 86, 130, 119, 130, 222, 130, 237, 131, 21, 131, 80, 131, 113, 131, 212, 131, 220, 131, 228, 131, 240, 131, 251, 132, 7, 132, 18, 132, 30, 132, 42, 132, 54, 132, 66, 132, 78, 132, 89, 132, 100, 132, 111, 132, 123, 132, 135, 132, 146, 132, 158, 132, 169, 132, 180, 132, 192, 132, 203, 132, 215, 132, 226, 132, 237, 132, 248, 133, 3, 133, 14, 133, 25, 133, 36, 133, 48, 133, 60, 133, 71, 133, 83, 133, 95, 133, 106, 133, 117, 133, 129, 133, 140, 133, 151, 133, 163, 133, 175, 133, 186, 133, 197, 133, 208, 133, 219, 134, 37, 134, 48, 134, 59, 134, 70, 134, 81, 134, 92, 134, 103, 134, 114, 134, 185, 134, 196, 134, 207, 134, 218, 134, 230, 134, 241, 134, 252, 135, 7, 135, 18, 135, 89, 135, 100, 135, 112, 135, 124, 135, 136, 135, 148, 135, 160, 135, 172, 135, 183, 135, 195, 135, 206, 135, 217, 135, 228, 135, 239, 135, 250, 136, 6, 136, 17, 136, 29, 136, 40, 136, 51, 136, 62, 136, 73, 136, 85, 136, 96, 136, 107, 136, 119, 136, 131, 136, 228, 136, 239, 136, 250, 137, 5, 137, 16, 137, 27, 137, 38, 137, 50, 137, 62, 137, 74, 137, 86, 137, 98, 137, 110, 137, 122, 137, 133, 137, 141, 137, 149, 137, 157, 137, 165, 137, 173, 137, 181, 137, 189, 137, 197, 137, 205, 137, 213, 137, 221, 137, 229, 137, 237, 137, 245, 138, 1, 138, 13, 138, 24, 138, 35, 138, 46, 138, 57, 138, 68, 138, 76, 138, 84, 138, 92, 138, 100, 138, 108, 138, 119, 138, 130, 138, 141, 138, 152, 138, 163, 138, 175, 138, 187, 139, 60, 139, 68, 139, 80, 139, 88, 139, 96, 139, 108, 139, 120, 139, 128, 139, 136, 139, 144, 139, 152, 139, 164, 139, 172, 139, 180, 139, 188, 139, 196, 139, 204, 139, 212, 139, 220, 139, 228, 139, 236, 139, 244, 139, 252, 140, 7, 140, 15, 140, 23, 140, 118, 140, 126, 140, 134, 140, 145, 140, 156, 140, 164, 140, 172, 140, 183, 140, 191, 140, 202, 140, 213, 140, 226, 140, 237, 140, 245, 141, 1, 141, 13, 141, 24, 141, 35, 141, 47, 141, 59, 141, 71, 141, 83, 141, 95, 141, 103, 141, 111, 141, 123, 141, 135, 141, 147, 141, 159, 141, 171, 141, 183, 141, 191, 141, 199, 141, 207, 141, 219, 141, 230, 141, 238, 141, 250, 142, 5, 142, 17, 142, 28, 142, 36, 142, 44, 142, 56, 142, 67, 142, 79, 142, 87, 142, 98, 142, 110, 142, 121, 142, 133, 142, 144, 142, 156, 142, 167, 142, 179, 142, 190, 142, 202, 142, 213, 142, 221, 142, 229, 142, 241, 142, 252, 143, 8, 143, 19, 143, 31, 143, 42, 143, 54, 143, 65, 143, 77, 143, 89, 143, 101, 143, 112, 143, 124, 143, 135, 143, 147, 143, 159, 143, 167, 143, 179, 143, 191, 143, 203, 143, 215, 143, 227, 143, 239, 143, 251, 144, 6, 144, 18, 144, 29, 144, 41, 144, 52, 144, 64, 144, 75, 144, 91, 144, 106, 144, 118, 144, 129, 144, 141, 144, 152, 144, 164, 144, 175, 144, 187, 144, 198, 144, 214, 144, 229, 144, 241, 144, 253, 145, 9, 145, 21, 145, 33, 145, 44, 145, 56, 145, 67, 145, 79, 145, 90, 145, 102, 145, 113, 145, 125, 145, 136, 145, 152, 145, 167, 145, 179, 145, 191, 145, 203, 145, 215, 145, 227, 145, 239, 145, 251, 146, 7, 146, 19, 146, 30, 146, 42, 146, 53, 146, 65, 146, 76, 146, 88, 146, 99, 146, 115, 146, 130, 146, 142, 146, 153, 146, 165, 146, 177, 146, 189, 146, 201, 146, 213, 146, 225, 146, 237, 146, 249, 147, 5, 147, 17, 147, 29, 147, 41, 147, 53, 147, 64, 147, 76, 147, 88, 147, 100, 147, 112, 147, 124, 147, 136, 147, 148, 147, 160, 147, 172, 147, 184, 147, 196, 147, 208, 147, 220, 147, 232, 147, 247, 148, 3, 148, 15, 148, 27, 148, 39, 148, 51, 148, 63, 148, 75, 148, 87, 148, 99, 148, 111, 148, 123, 148, 135, 148, 147, 148, 159, 148, 171, 148, 183, 148, 195, 148, 207, 148, 215, 149, 29, 149, 97, 149, 165, 149, 195, 149, 224, 150, 11, 150, 54, 150, 70, 150, 85, 150, 97, 150, 109, 150, 121, 150, 133, 150, 145, 150, 157, 150, 191, 150, 227, 151, 11, 151, 51, 151, 59, 151, 73, 0, 1, 0, 0, 0, 3, 0, 0, 25, 88, 56, 236, 95, 15, 60, 245, 0, 11, 8, 0, 0, 0, 0, 0, 196, 240, 17, 46, 0, 0, 0, 0, 218, 216, 63, 171, 252, 172, 253, 213, 6, 164, 8, 98, 0, 3, 0, 9, 0, 2, 0, 0, 0, 0, 0, 0, 4, 178, 0, 0, 0, 0, 255, 174, 0, 20, 0, 74, 0, 17, 0, 38, 0, 40, 0, 82, 0, 15, 0, 82, 0, 71, 0, 20, 0, 41, 0, 18, 0, 15, 0, 73, 0, 40, 0, 71, 0, 22, 0, 57, 0, 134, 0, 94, 0, 167, 0, 127, 255, 184, 0, 186, 255, 248, 0, 58, 0, 38, 0, 96, 0, 91, 0, 85, 0, 169, 0, 26, 0, 32, 0, 104, 0, 48, 0, 35, 0, 88, 255, 224, 0, 32, 0, 81, 255, 220, 0, 92, 0, 174, 0, 74, 0, 169, 0, 113, 0, 149, 0, 112, 255, 241, 0, 0, 0, 20, 0, 124, 0, 233, 0, 3, 0, 52, 0, 19, 0, 76, 0, 85, 0, 125, 0, 63, 0, 142, 1, 223, 1, 61, 1, 79, 1, 61, 1, 72, 0, 138, 0, 177, 0, 104, 255, 193, 255, 245, 0, 47, 0, 6, 0, 7, 0, 27, 255, 220, 0, 50, 0, 52, 0, 119, 0, 89, 0, 121, 0, 10, 0, 77, 255, 248, 255, 189, 0, 4, 0, 15, 255, 255, 1, 96, 1, 55, 0, 243, 0, 84, 0, 190, 1, 78, 1, 92, 1, 8, 0, 22, 1, 241, 1, 163, 0, 1, 1, 5, 0, 58, 0, 54, 1, 248, 1, 79, 2, 35, 2, 24, 1, 49, 1, 131, 1, 119, 0, 166, 1, 248, 1, 79, 1, 58, 0, 163, 0, 241, 0, 241, 1, 36, 0, 193, 1, 110, 1, 28, 0, 88, 0, 144, 0, 72, 0, 114, 0, 99, 0, 98, 0, 92, 0, 91, 0, 136, 0, 75, 0, 78, 0, 72, 0, 184, 0, 82, 1, 129, 0, 217, 0, 122, 0, 96, 1, 102, 1, 66, 0, 141, 0, 30, 0, 66, 0, 69, 0, 240, 1, 192, 0, 158, 0, 6, 0, 25, 0, 41, 255, 218, 1, 12, 0, 215, 0, 8, 255, 174, 255, 174, 255, 174, 255, 174, 255, 174, 255, 174, 255, 174, 255, 174, 255, 174, 255, 174, 255, 193, 0, 74, 0, 74, 0, 74, 0, 74, 0, 17, 255, 222, 0, 38, 0, 38, 0, 38, 0, 38, 0, 38, 0, 38, 0, 38, 0, 38, 0, 39, 0, 38, 255, 222, 0, 82, 0, 82, 0, 82, 255, 222, 0, 15, 0, 82, 0, 82, 0, 82, 0, 82, 0, 82, 0, 82, 0, 82, 0, 82, 0, 82, 0, 71, 0, 20, 0, 41, 0, 41, 0, 41, 0, 41, 0, 43, 0, 15, 0, 15, 0, 15, 0, 15, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 86, 0, 73, 0, 73, 255, 174, 255, 174, 0, 73, 0, 22, 0, 22, 0, 22, 0, 57, 0, 57, 0, 57, 0, 57, 0, 134, 0, 134, 0, 94, 0, 94, 0, 94, 0, 94, 0, 94, 0, 101, 0, 94, 0, 94, 0, 94, 0, 94, 0, 94, 0, 127, 0, 127, 0, 127, 0, 127, 0, 186, 0, 186, 0, 186, 0, 186, 255, 248, 255, 248, 255, 248, 0, 58, 0, 58, 0, 58, 0, 58, 0, 58, 0, 58, 0, 58, 0, 58, 0, 58, 0, 58, 255, 245, 0, 96, 0, 96, 0, 96, 0, 96, 0, 17, 0, 76, 0, 85, 0, 85, 0, 85, 0, 85, 0, 85, 0, 85, 0, 85, 0, 85, 0, 40, 0, 86, 0, 26, 0, 26, 0, 26, 0, 47, 0, 32, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 104, 0, 88, 0, 51, 0, 35, 0, 88, 0, 13, 0, 88, 0, 13, 0, 102, 0, 32, 0, 32, 0, 32, 0, 32, 0, 81, 0, 81, 0, 81, 0, 81, 0, 81, 0, 70, 0, 81, 0, 81, 0, 70, 0, 70, 0, 81, 0, 174, 0, 174, 0, 87, 0, 74, 0, 74, 0, 74, 0, 74, 0, 161, 0, 149, 0, 113, 0, 113, 0, 113, 0, 113, 0, 113, 0, 85, 0, 113, 0, 113, 0, 113, 0, 113, 0, 113, 0, 112, 0, 112, 0, 112, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 20, 0, 20, 2, 32, 1, 200, 0, 239, 0, 234, 1, 116, 1, 157, 2, 78, 1, 120, 1, 243, 1, 51, 1, 140, 252, 149, 1, 28, 0, 243, 0, 149, 0, 0, 0, 161, 255, 246, 0, 131, 0, 88, 0, 17, 255, 224, 1, 39, 0, 51, 1, 29, 253, 96, 253, 231, 252, 248, 253, 194, 252, 171, 2, 163, 1, 126, 2, 46, 0, 32, 255, 181, 0, 84, 255, 169, 0, 13, 0, 13, 0, 3, 0, 75, 0, 108, 255, 248, 0, 82, 255, 235, 0, 127, 0, 64, 0, 75, 0, 62, 0, 20, 0, 152, 0, 217, 255, 177, 0, 132, 0, 122, 255, 208, 0, 62, 0, 54, 0, 106, 0, 85, 0, 59, 0, 59, 0, 23, 0, 110, 0, 204, 0, 5, 0, 138, 0, 83, 255, 195, 255, 240, 0, 146, 0, 1, 0, 22, 255, 177, 255, 139, 0, 35, 0, 3, 255, 196, 255, 251, 0, 1, 0, 213, 255, 230, 255, 230, 0, 159, 255, 223, 0, 22, 0, 1, 255, 233, 255, 107, 0, 91, 0, 29, 0, 34, 255, 148, 255, 179, 0, 59, 0, 13, 0, 24, 255, 195, 0, 5, 0, 13, 0, 13, 0, 134, 0, 33, 0, 13, 0, 137, 255, 232, 255, 228, 0, 99, 255, 247, 0, 29, 0, 66, 255, 204, 255, 219, 0, 22, 0, 86, 255, 181, 255, 240, 0, 32, 0, 13, 0, 29, 0, 27, 0, 86, 255, 206, 255, 226, 255, 159, 255, 221, 255, 231, 255, 231, 255, 196, 255, 215, 255, 204, 255, 209, 0, 18, 0, 54, 0, 71, 0, 72, 0, 164, 0, 140, 0, 37, 0, 29, 0, 73, 0, 79, 0, 4, 0, 26, 0, 35, 0, 30, 0, 114, 0, 151, 0, 54, 253, 162, 253, 148, 254, 164, 254, 109, 254, 170, 254, 204, 0, 40, 255, 220, 0, 43, 0, 40, 0, 32, 0, 40, 0, 25, 0, 23, 0, 120, 0, 67, 255, 212, 255, 235, 255, 200, 255, 233, 0, 78, 0, 43, 0, 107, 0, 73, 0, 190, 0, 129, 0, 11, 0, 38, 0, 61, 0, 54, 0, 43, 0, 32, 0, 34, 0, 67, 0, 80, 0, 5, 0, 50, 0, 14, 0, 43, 0, 60, 0, 58, 0, 130, 0, 121, 0, 225, 0, 204, 255, 173, 255, 197, 255, 221, 255, 217, 0, 90, 0, 107, 0, 174, 0, 108, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 222, 1, 14, 0, 157, 1, 33, 1, 42, 0, 103, 0, 137, 0, 132, 0, 10, 0, 128, 0, 207, 0, 99, 0, 96, 0, 180, 0, 82, 0, 18, 255, 141, 0, 24, 0, 54, 0, 70, 0, 150, 0, 0, 255, 234, 0, 2, 1, 131, 1, 115, 0, 181, 1, 115, 1, 181, 2, 33, 255, 168, 0, 51, 0, 58, 0, 48, 0, 51, 0, 58, 0, 62, 0, 33, 0, 91, 0, 116, 0, 45, 0, 51, 0, 12, 0, 50, 0, 77, 0, 65, 0, 38, 0, 86, 0, 140, 0, 112, 0, 146, 0, 130, 255, 206, 0, 161, 0, 54, 1, 197, 1, 181, 1, 43, 2, 43, 2, 68, 1, 228, 1, 68, 0, 141, 0, 51, 0, 42, 0, 38, 0, 0, 1, 5, 0, 74, 0, 96, 0, 82, 0, 26, 255, 190, 0, 57, 0, 74, 0, 134, 0, 169, 0, 134, 0, 140, 0, 169, 255, 153, 255, 153, 0, 140, 255, 168, 255, 168, 255, 168, 255, 168, 255, 168, 255, 168, 255, 168, 0, 58, 0, 51, 0, 51, 0, 51, 0, 51, 0, 91, 0, 91, 0, 91, 0, 91, 0, 50, 0, 77, 0, 77, 0, 77, 0, 77, 0, 77, 0, 112, 0, 112, 0, 112, 0, 112, 0, 161, 255, 168, 255, 168, 255, 168, 0, 58, 0, 58, 0, 58, 0, 48, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 62, 0, 62, 0, 62, 0, 33, 0, 91, 0, 91, 0, 91, 0, 91, 0, 91, 0, 116, 0, 45, 0, 51, 0, 51, 0, 51, 0, 51, 0, 50, 0, 50, 0, 50, 0, 77, 0, 77, 0, 77, 0, 38, 0, 38, 0, 38, 0, 86, 0, 86, 0, 86, 0, 86, 0, 140, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 112, 0, 130, 0, 161, 0, 161, 0, 54, 0, 54, 0, 54, 255, 174, 255, 251, 255, 235, 0, 46, 0, 24, 255, 148, 0, 2, 0, 217, 255, 174, 0, 20, 0, 38, 255, 248, 0, 15, 0, 82, 0, 20, 0, 18, 0, 15, 0, 73, 0, 40, 0, 134, 0, 186, 255, 184, 0, 82, 0, 186, 0, 82, 0, 75, 0, 20, 0, 217, 0, 85, 0, 50, 0, 81, 255, 246, 0, 149, 255, 241, 0, 217, 0, 85, 0, 81, 0, 85, 0, 23, 0, 38, 0, 32, 0, 57, 0, 82, 0, 82, 0, 71, 0, 42, 0, 20, 255, 251, 255, 174, 0, 20, 0, 32, 0, 38, 0, 3, 0, 18, 0, 15, 0, 73, 0, 13, 0, 40, 0, 74, 0, 134, 0, 75, 255, 184, 0, 58, 0, 85, 0, 13, 0, 81, 255, 220, 0, 96, 0, 0, 255, 241, 0, 85, 0, 34, 0, 74, 0, 104, 0, 88, 0, 48, 0, 24, 0, 0, 255, 224, 0, 51, 2, 24, 0, 18, 255, 224, 255, 174, 0, 58, 255, 202, 0, 38, 0, 3, 0, 85, 0, 13, 0, 108, 0, 59, 0, 164, 0, 140, 0, 35, 0, 59, 0, 74, 0, 96, 0, 186, 0, 127, 0, 82, 255, 139, 255, 179, 0, 82, 255, 174, 0, 58, 255, 174, 0, 58, 255, 193, 255, 245, 0, 38, 0, 85, 0, 67, 0, 119, 0, 119, 255, 139, 255, 179, 0, 35, 0, 59, 0, 3, 0, 13, 0, 3, 0, 13, 0, 73, 0, 81, 0, 71, 0, 72, 0, 71, 0, 72, 0, 1, 0, 66, 255, 251, 0, 0, 255, 251, 0, 0, 255, 251, 0, 0, 0, 213, 0, 137, 255, 223, 255, 247, 255, 184, 255, 241, 0, 91, 255, 196, 255, 195, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 255, 174, 0, 58, 0, 38, 0, 85, 0, 38, 0, 85, 0, 38, 0, 85, 0, 38, 0, 85, 0, 38, 0, 85, 0, 38, 0, 85, 0, 38, 0, 85, 0, 38, 0, 85, 0, 82, 0, 88, 0, 82, 0, 104, 0, 73, 0, 81, 0, 73, 0, 81, 0, 73, 0, 81, 0, 73, 0, 81, 0, 73, 0, 81, 0, 73, 0, 81, 0, 73, 0, 81, 0, 86, 0, 70, 0, 86, 0, 70, 0, 86, 0, 70, 0, 86, 0, 70, 0, 86, 0, 70, 0, 94, 0, 113, 0, 94, 0, 113, 0, 101, 0, 85, 0, 101, 0, 85, 0, 101, 0, 85, 0, 101, 0, 85, 0, 101, 0, 85, 0, 186, 0, 0, 0, 186, 0, 0, 0, 186, 0, 0, 0, 16, 0, 42, 0, 24, 0, 15, 0, 13, 0, 134, 0, 134, 255, 184, 255, 241, 0, 213, 0, 137, 0, 213, 0, 137, 0, 32, 0, 34, 255, 139, 255, 179, 0, 38, 0, 61, 0, 32, 0, 29, 0, 22, 0, 22, 255, 241, 255, 186, 0, 52, 0, 55, 0, 3, 0, 13, 0, 15, 0, 13, 0, 18, 0, 5, 255, 196, 255, 195, 0, 186, 0, 127, 255, 184, 255, 241, 0, 75, 0, 54, 0, 1, 0, 0, 8, 98, 253, 213, 0, 0, 4, 178, 252, 172, 254, 14, 6, 164, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 178, 2, 188, 0, 5, 0, 0, 5, 154, 5, 51, 0, 0, 1, 31, 5, 154, 5, 51, 0, 0, 3, 209, 0, 102, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 91, 0, 0, 0, 32, 0, 0, 0, 0, 112, 121, 114, 115, 0, 33, 0, 13, 255, 253, 8, 98, 253, 213, 0, 0, 8, 98, 2, 43, 32, 0, 1, 159, 0, 0, 0, 0, 4, 58, 5, 176, 0, 0, 0, 32, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 20, 0, 3, 0, 1, 0, 0, 0, 20, 0, 4, 7, 60, 0, 0, 0, 190, 0, 128, 0, 6, 0, 62, 0, 13, 0, 47, 0, 57, 0, 64, 0, 90, 0, 96, 0, 122, 0, 126, 1, 127, 1, 146, 1, 161, 1, 176, 1, 240, 1, 255, 2, 27, 2, 55, 2, 89, 2, 188, 2, 199, 2, 201, 2, 221, 2, 243, 3, 1, 3, 3, 3, 9, 3, 15, 3, 35, 3, 138, 3, 140, 3, 146, 3, 161, 3, 176, 3, 185, 3, 201, 3, 206, 3, 210, 3, 214, 4, 37, 4, 47, 4, 69, 4, 79, 4, 98, 4, 111, 4, 119, 4, 134, 4, 206, 4, 215, 4, 225, 4, 245, 5, 1, 5, 16, 5, 19, 30, 1, 30, 63, 30, 133, 30, 241, 30, 243, 30, 249, 31, 77, 32, 11, 32, 21, 32, 30, 32, 34, 32, 38, 32, 48, 32, 51, 32, 58, 32, 60, 32, 68, 32, 116, 32, 127, 32, 164, 32, 167, 32, 172, 33, 5, 33, 19, 33, 22, 33, 34, 33, 46, 33, 94, 34, 2, 34, 15, 34, 18, 34, 21, 34, 26, 34, 30, 34, 43, 34, 72, 34, 96, 34, 101, 37, 202, 246, 195, 254, 255, 255, 253, 255, 255, 0, 0, 0, 13, 0, 32, 0, 48, 0, 58, 0, 65, 0, 91, 0, 97, 0, 123, 0, 160, 1, 146, 1, 160, 1, 175, 1, 240, 1, 250, 2, 24, 2, 55, 2, 89, 2, 188, 2, 198, 2, 201, 2, 216, 2, 243, 3, 0, 3, 3, 3, 9, 3, 15, 3, 35, 3, 132, 3, 140, 3, 142, 3, 147, 3, 163, 3, 177, 3, 186, 3, 202, 3, 209, 3, 214, 4, 0, 4, 38, 4, 48, 4, 70, 4, 80, 4, 99, 4, 112, 4, 120, 4, 136, 4, 207, 4, 216, 4, 226, 4, 246, 5, 2, 5, 17, 30, 0, 30, 62, 30, 128, 30, 160, 30, 242, 30, 244, 31, 77, 32, 0, 32, 19, 32, 23, 32, 32, 32, 37, 32, 48, 32, 50, 32, 57, 32, 60, 32, 68, 32, 116, 32, 127, 32, 163, 32, 167, 32, 171, 33, 5, 33, 19, 33, 22, 33, 34, 33, 46, 33, 91, 34, 2, 34, 15, 34, 17, 34, 21, 34, 26, 34, 30, 34, 43, 34, 72, 34, 96, 34, 100, 37, 202, 246, 195, 254, 255, 255, 252, 255, 255, 1, 92, 0, 0, 0, 6, 0, 0, 255, 193, 0, 0, 255, 187, 0, 0, 0, 0, 254, 196, 0, 0, 0, 0, 1, 51, 0, 0, 0, 98, 255, 58, 253, 248, 0, 104, 0, 0, 254, 149, 0, 0, 254, 127, 254, 115, 254, 114, 254, 109, 254, 104, 254, 66, 0, 0, 255, 76, 255, 75, 0, 0, 0, 0, 253, 212, 0, 0, 255, 44, 253, 200, 253, 197, 0, 0, 253, 131, 0, 0, 253, 123, 0, 0, 253, 112, 0, 0, 253, 108, 0, 0, 254, 108, 0, 0, 254, 105, 0, 0, 253, 20, 0, 0, 229, 39, 228, 231, 0, 0, 228, 198, 0, 0, 228, 196, 227, 220, 226, 37, 0, 0, 0, 0, 0, 0, 0, 0, 224, 93, 224, 64, 224, 65, 226, 230, 224, 71, 225, 192, 225, 182, 223, 180, 223, 178, 0, 0, 225, 50, 225, 37, 225, 35, 223, 114, 225, 12, 224, 224, 224, 61, 224, 49, 0, 0, 222, 116, 224, 40, 224, 37, 224, 25, 222, 59, 222, 34, 222, 34, 220, 123, 10, 165, 3, 71, 2, 75, 0, 1, 0, 0, 0, 188, 0, 0, 0, 216, 0, 0, 0, 226, 0, 0, 0, 234, 0, 240, 0, 0, 2, 172, 2, 174, 0, 0, 2, 174, 0, 0, 0, 0, 0, 0, 0, 0, 2, 176, 0, 0, 2, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 174, 0, 0, 0, 0, 2, 182, 2, 210, 0, 0, 2, 234, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 3, 74, 0, 0, 3, 114, 0, 0, 3, 148, 0, 0, 3, 160, 0, 0, 4, 42, 0, 0, 4, 58, 0, 0, 4, 78, 0, 0, 0, 0, 4, 78, 0, 0, 4, 86, 0, 0, 0, 0, 0, 0, 4, 82, 4, 86, 4, 100, 4, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 91, 0, 107, 0, 151, 0, 82, 0, 140, 0, 152, 0, 106, 0, 116, 0, 117, 0, 150, 0, 124, 0, 95, 0, 103, 0, 96, 0, 137, 0, 97, 0, 98, 0, 132, 0, 129, 0, 133, 0, 93, 0, 153, 0, 118, 0, 138, 0, 119, 0, 156, 0, 102, 1, 90, 0, 120, 0, 142, 0, 121, 0, 157, 2, 115, 0, 92, 0, 83, 0, 84, 0, 90, 0, 85, 0, 143, 0, 154, 1, 97, 0, 146, 0, 67, 1, 106, 0, 136, 2, 116, 0, 147, 1, 94, 0, 149, 0, 126, 0, 65, 0, 66, 1, 91, 1, 107, 0, 155, 0, 100, 1, 102, 0, 64, 0, 68, 1, 108, 0, 70, 0, 69, 0, 71, 0, 94, 0, 162, 0, 158, 0, 160, 0, 167, 0, 161, 0, 165, 0, 72, 0, 171, 0, 181, 0, 175, 0, 178, 0, 179, 0, 196, 0, 191, 0, 193, 0, 194, 0, 185, 0, 210, 0, 215, 0, 211, 0, 213, 0, 221, 0, 214, 0, 127, 0, 219, 0, 235, 0, 231, 0, 233, 0, 234, 0, 246, 0, 77, 0, 80, 1, 1, 0, 253, 0, 255, 1, 6, 1, 0, 1, 4, 0, 73, 1, 10, 1, 20, 1, 14, 1, 17, 1, 18, 1, 33, 1, 29, 1, 31, 1, 32, 0, 76, 1, 47, 1, 52, 1, 48, 1, 50, 1, 58, 1, 51, 0, 128, 1, 56, 1, 72, 1, 68, 1, 70, 1, 71, 1, 83, 0, 78, 1, 85, 0, 163, 1, 2, 0, 159, 0, 254, 0, 164, 1, 3, 0, 169, 1, 8, 0, 172, 1, 11, 2, 117, 2, 118, 0, 170, 1, 9, 0, 173, 1, 12, 0, 174, 1, 13, 0, 182, 1, 21, 0, 176, 1, 15, 0, 180, 1, 19, 0, 184, 1, 23, 0, 177, 1, 16, 0, 187, 1, 25, 0, 186, 1, 24, 2, 119, 2, 120, 0, 188, 1, 26, 0, 190, 1, 28, 0, 189, 1, 27, 0, 199, 1, 36, 0, 197, 1, 34, 0, 192, 1, 30, 0, 198, 1, 35, 0, 195, 1, 109, 1, 110, 1, 111, 0, 200, 1, 37, 0, 201, 1, 38, 0, 79, 0, 202, 1, 39, 0, 204, 1, 41, 0, 203, 1, 40, 0, 205, 1, 42, 0, 206, 1, 43, 0, 207, 1, 44, 0, 209, 1, 46, 0, 208, 1, 45, 2, 121, 0, 183, 1, 22, 0, 218, 1, 55, 0, 212, 1, 49, 0, 217, 1, 54, 0, 74, 0, 75, 0, 222, 1, 59, 0, 224, 1, 61, 0, 223, 1, 60, 0, 225, 1, 62, 0, 228, 1, 65, 0, 227, 1, 64, 0, 226, 1, 63, 2, 126, 2, 128, 0, 230, 1, 67, 0, 229, 1, 66, 0, 241, 1, 78, 0, 238, 1, 75, 0, 232, 1, 69, 0, 240, 1, 77, 0, 237, 1, 74, 0, 239, 1, 76, 0, 243, 1, 80, 0, 247, 1, 84, 0, 248, 0, 250, 1, 87, 0, 252, 1, 89, 0, 251, 1, 88, 1, 112, 0, 216, 1, 53, 0, 236, 1, 73, 0, 166, 1, 5, 0, 168, 1, 7, 0, 220, 1, 57, 1, 92, 1, 100, 1, 95, 1, 96, 1, 98, 1, 103, 1, 93, 1, 99, 1, 120, 1, 121, 2, 212, 1, 122, 2, 213, 2, 214, 2, 215, 1, 123, 1, 124, 2, 222, 2, 223, 2, 224, 1, 125, 2, 225, 2, 226, 1, 126, 2, 227, 2, 228, 1, 127, 2, 229, 1, 128, 2, 230, 1, 129, 2, 231, 2, 232, 1, 130, 2, 233, 1, 131, 1, 132, 2, 234, 2, 235, 2, 236, 2, 237, 2, 238, 2, 239, 2, 240, 2, 241, 1, 142, 2, 243, 2, 244, 1, 143, 2, 242, 1, 144, 1, 145, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 2, 245, 1, 151, 1, 152, 3, 42, 2, 251, 1, 156, 2, 252, 1, 157, 2, 253, 2, 254, 2, 255, 3, 0, 1, 158, 1, 159, 1, 160, 3, 2, 3, 43, 3, 3, 1, 161, 3, 4, 1, 162, 3, 5, 3, 6, 1, 163, 3, 7, 1, 164, 1, 165, 1, 166, 3, 8, 3, 1, 1, 167, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 1, 168, 3, 16, 3, 17, 3, 18, 1, 179, 1, 180, 1, 181, 1, 182, 3, 19, 1, 183, 1, 184, 1, 185, 3, 20, 1, 186, 1, 187, 1, 188, 1, 189, 3, 21, 1, 190, 3, 22, 3, 23, 1, 191, 3, 24, 1, 192, 3, 25, 3, 44, 3, 26, 1, 203, 3, 27, 1, 204, 3, 28, 3, 29, 3, 30, 3, 31, 1, 205, 1, 206, 1, 207, 3, 32, 3, 45, 3, 33, 1, 208, 1, 209, 1, 210, 3, 212, 3, 46, 3, 47, 1, 224, 1, 225, 1, 226, 1, 227, 3, 48, 3, 49, 1, 243, 1, 244, 3, 217, 3, 218, 3, 211, 3, 210, 1, 245, 1, 246, 1, 247, 1, 248, 3, 213, 3, 214, 1, 249, 1, 250, 3, 205, 3, 206, 3, 50, 3, 51, 3, 191, 3, 192, 1, 251, 1, 252, 3, 215, 3, 216, 1, 253, 1, 254, 3, 193, 3, 194, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 3, 52, 3, 53, 3, 195, 3, 196, 3, 54, 3, 55, 3, 225, 3, 226, 3, 197, 3, 198, 2, 5, 2, 6, 3, 199, 3, 200, 2, 7, 2, 8, 2, 9, 3, 209, 2, 10, 2, 11, 3, 207, 3, 208, 3, 56, 3, 57, 3, 58, 2, 12, 2, 13, 3, 223, 3, 224, 2, 14, 2, 15, 3, 219, 3, 220, 3, 201, 3, 202, 3, 221, 3, 222, 2, 16, 3, 69, 3, 68, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 2, 17, 2, 18, 3, 203, 3, 204, 3, 95, 3, 96, 2, 19, 2, 20, 3, 97, 3, 98, 3, 227, 3, 228, 2, 21, 3, 99, 3, 229, 3, 100, 3, 101, 0, 245, 1, 82, 0, 242, 1, 79, 0, 244, 1, 81, 0, 249, 1, 86, 0, 104, 0, 105, 3, 230, 2, 49, 0, 108, 0, 109, 0, 110, 2, 50, 0, 111, 0, 112, 0, 113, 0, 144, 0, 145, 0, 101, 2, 51, 0, 99, 3, 190, 2, 54, 2, 65, 0, 125, 184, 1, 255, 133, 176, 4, 141, 0, 0, 0, 0, 17, 0, 210, 0, 3, 0, 1, 4, 9, 0, 0, 0, 180, 0, 0, 0, 3, 0, 1, 4, 9, 0, 1, 0, 22, 0, 180, 0, 3, 0, 1, 4, 9, 0, 2, 0, 22, 0, 202, 0, 3, 0, 1, 4, 9, 0, 3, 0, 64, 0, 224, 0, 3, 0, 1, 4, 9, 0, 4, 0, 46, 1, 32, 0, 3, 0, 1, 4, 9, 0, 5, 0, 26, 1, 78, 0, 3, 0, 1, 4, 9, 0, 6, 0, 42, 1, 104, 0, 3, 0, 1, 4, 9, 0, 7, 0, 74, 1, 146, 0, 3, 0, 1, 4, 9, 0, 9, 0, 12, 1, 220, 0, 3, 0, 1, 4, 9, 0, 11, 0, 20, 1, 232, 0, 3, 0, 1, 4, 9, 0, 12, 0, 38, 1, 252, 0, 3, 0, 1, 4, 9, 0, 13, 0, 92, 2, 34, 0, 3, 0, 1, 4, 9, 0, 14, 0, 84, 2, 126, 0, 3, 0, 1, 4, 9, 1, 0, 0, 12, 2, 210, 0, 3, 0, 1, 4, 9, 1, 11, 0, 12, 2, 222, 0, 3, 0, 1, 4, 9, 1, 16, 0, 8, 2, 234, 0, 3, 0, 1, 4, 9, 1, 17, 0, 12, 2, 222, 0, 67, 0, 111, 0, 112, 0, 121, 0, 114, 0, 105, 0, 103, 0, 104, 0, 116, 0, 32, 0, 50, 0, 48, 0, 49, 0, 53, 0, 32, 0, 84, 0, 104, 0, 101, 0, 32, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 80, 0, 114, 0, 111, 0, 106, 0, 101, 0, 99, 0, 116, 0, 32, 0, 65, 0, 117, 0, 116, 0, 104, 0, 111, 0, 114, 0, 115, 0, 32, 0, 40, 0, 104, 0, 116, 0, 116, 0, 112, 0, 115, 0, 58, 0, 47, 0, 47, 0, 103, 0, 105, 0, 116, 0, 104, 0, 117, 0, 98, 0, 46, 0, 99, 0, 111, 0, 109, 0, 47, 0, 103, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 102, 0, 111, 0, 110, 0, 116, 0, 115, 0, 47, 0, 114, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 109, 0, 111, 0, 110, 0, 111, 0, 41, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 66, 0, 111, 0, 108, 0, 100, 0, 32, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 51, 0, 46, 0, 48, 0, 48, 0, 48, 0, 59, 0, 112, 0, 121, 0, 114, 0, 115, 0, 59, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 77, 0, 111, 0, 110, 0, 111, 0, 45, 0, 66, 0, 111, 0, 108, 0, 100, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 66, 0, 111, 0, 108, 0, 100, 0, 32, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 51, 0, 46, 0, 48, 0, 48, 0, 48, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 77, 0, 111, 0, 110, 0, 111, 0, 45, 0, 66, 0, 111, 0, 108, 0, 100, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 82, 0, 111, 0, 98, 0, 111, 0, 116, 0, 111, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 32, 0, 105, 0, 115, 0, 32, 0, 97, 0, 32, 0, 116, 0, 114, 0, 97, 0, 100, 0, 101, 0, 109, 0, 97, 0, 114, 0, 107, 0, 32, 0, 111, 0, 102, 0, 32, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 46, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 71, 0, 111, 0, 111, 0, 103, 0, 108, 0, 101, 0, 46, 0, 99, 0, 111, 0, 109, 0, 67, 0, 104, 0, 114, 0, 105, 0, 115, 0, 116, 0, 105, 0, 97, 0, 110, 0, 32, 0, 82, 0, 111, 0, 98, 0, 101, 0, 114, 0, 116, 0, 115, 0, 111, 0, 110, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 100, 0, 32, 0, 117, 0, 110, 0, 100, 0, 101, 0, 114, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 65, 0, 112, 0, 97, 0, 99, 0, 104, 0, 101, 0, 32, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 44, 0, 32, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 50, 0, 46, 0, 48, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47, 0, 119, 0, 119, 0, 119, 0, 46, 0, 97, 0, 112, 0, 97, 0, 99, 0, 104, 0, 101, 0, 46, 0, 111, 0, 114, 0, 103, 0, 47, 0, 108, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 115, 0, 47, 0, 76, 0, 73, 0, 67, 0, 69, 0, 78, 0, 83, 0, 69, 0, 45, 0, 50, 0, 46, 0, 48, 0, 87, 0, 101, 0, 105, 0, 103, 0, 104, 0, 116, 0, 73, 0, 116, 0, 97, 0, 108, 0, 105, 0, 99, 0, 66, 0, 111, 0, 108, 0, 100, 0, 2, 0, 0, 255, 246, 0, 0, 255, 106, 0, 100, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 231, 0, 0, 0, 3, 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 68, 0, 69, 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, 0, 92, 0, 93, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 241, 0, 242, 0, 243, 0, 157, 0, 158, 0, 244, 0, 245, 0, 246, 0, 144, 0, 160, 0, 176, 0, 177, 0, 234, 0, 237, 0, 238, 1, 2, 0, 137, 1, 3, 0, 7, 0, 132, 0, 133, 0, 150, 0, 166, 0, 247, 1, 4, 1, 5, 0, 189, 0, 4, 0, 163, 0, 34, 0, 162, 0, 15, 0, 17, 0, 29, 0, 30, 0, 171, 0, 195, 0, 135, 0, 66, 0, 16, 0, 178, 0, 179, 0, 10, 0, 5, 0, 182, 0, 183, 0, 196, 0, 180, 0, 181, 0, 197, 1, 6, 1, 7, 0, 11, 0, 12, 0, 62, 0, 64, 0, 94, 0, 96, 0, 190, 0, 191, 0, 14, 0, 239, 0, 147, 0, 240, 0, 184, 0, 32, 0, 143, 0, 167, 0, 31, 0, 33, 0, 148, 0, 149, 0, 164, 0, 18, 0, 63, 0, 188, 0, 8, 0, 198, 0, 95, 0, 232, 0, 130, 0, 194, 0, 139, 0, 138, 0, 140, 0, 131, 0, 13, 0, 6, 0, 9, 0, 35, 0, 134, 0, 136, 0, 65, 0, 97, 0, 201, 1, 8, 0, 199, 0, 98, 0, 173, 1, 9, 1, 10, 0, 99, 1, 11, 0, 174, 1, 12, 0, 253, 0, 255, 0, 100, 1, 13, 1, 14, 1, 15, 0, 101, 1, 16, 1, 17, 0, 200, 0, 202, 1, 18, 0, 203, 1, 19, 1, 20, 1, 21, 0, 233, 0, 248, 1, 22, 1, 23, 1, 24, 1, 25, 0, 204, 1, 26, 0, 205, 0, 206, 0, 250, 0, 207, 1, 27, 1, 28, 1, 29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 34, 1, 35, 0, 226, 1, 36, 1, 37, 1, 38, 0, 102, 0, 208, 1, 39, 0, 209, 0, 103, 0, 211, 1, 40, 1, 41, 1, 42, 0, 145, 1, 43, 0, 175, 1, 44, 1, 45, 1, 46, 1, 47, 0, 228, 0, 251, 1, 48, 1, 49, 1, 50, 0, 212, 1, 51, 0, 213, 0, 104, 0, 214, 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, 0, 235, 1, 62, 0, 187, 1, 63, 1, 64, 0, 230, 1, 65, 0, 105, 1, 66, 0, 107, 0, 108, 0, 106, 1, 67, 1, 68, 0, 110, 1, 69, 0, 109, 1, 70, 0, 254, 1, 0, 0, 111, 1, 71, 1, 72, 1, 1, 0, 112, 1, 73, 1, 74, 0, 114, 0, 115, 1, 75, 0, 113, 1, 76, 1, 77, 1, 78, 0, 249, 1, 79, 1, 80, 1, 81, 1, 82, 0, 116, 1, 83, 0, 118, 0, 119, 0, 117, 1, 84, 1, 85, 1, 86, 1, 87, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 0, 227, 1, 93, 1, 94, 1, 95, 0, 120, 0, 121, 1, 96, 0, 123, 0, 124, 0, 122, 1, 97, 1, 98, 1, 99, 0, 161, 1, 100, 0, 125, 1, 101, 1, 102, 1, 103, 1, 104, 0, 229, 0, 252, 1, 105, 1, 106, 1, 107, 0, 126, 1, 108, 0, 128, 0, 129, 0, 127, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 118, 0, 236, 1, 119, 0, 186, 1, 120, 1, 121, 0, 231, 1, 122, 0, 67, 0, 141, 0, 216, 0, 217, 0, 218, 0, 219, 0, 220, 0, 142, 0, 221, 0, 223, 0, 225, 1, 123, 0, 222, 0, 224, 1, 124, 0, 2, 0, 169, 0, 151, 0, 170, 0, 215, 1, 125, 1, 126, 1, 127, 1, 128, 1, 129, 1, 130, 1, 131, 1, 132, 1, 133, 1, 134, 1, 135, 1, 136, 1, 137, 1, 138, 0, 168, 1, 139, 1, 140, 1, 141, 1, 142, 1, 143, 1, 144, 1, 145, 0, 159, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 1, 151, 1, 152, 1, 153, 1, 154, 1, 155, 1, 156, 0, 155, 1, 157, 1, 158, 1, 159, 1, 160, 1, 161, 1, 162, 1, 163, 1, 164, 1, 165, 1, 166, 1, 167, 1, 168, 1, 169, 1, 170, 1, 171, 1, 172, 1, 173, 1, 174, 1, 175, 1, 176, 1, 177, 1, 178, 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 1, 184, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, 1, 193, 1, 194, 1, 195, 1, 196, 1, 197, 1, 198, 1, 199, 1, 200, 1, 201, 1, 202, 1, 203, 1, 204, 1, 205, 1, 206, 1, 207, 1, 208, 1, 209, 1, 210, 1, 211, 1, 212, 1, 213, 1, 214, 1, 215, 1, 216, 1, 217, 1, 218, 1, 219, 1, 220, 1, 221, 1, 222, 1, 223, 1, 224, 1, 225, 1, 226, 1, 227, 1, 228, 1, 229, 1, 230, 1, 231, 1, 232, 1, 233, 1, 234, 1, 235, 1, 236, 1, 237, 1, 238, 1, 239, 1, 240, 1, 241, 1, 242, 1, 243, 1, 244, 1, 245, 1, 246, 1, 247, 1, 248, 1, 249, 1, 250, 1, 251, 1, 252, 1, 253, 1, 254, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, 2, 28, 2, 29, 2, 30, 2, 31, 2, 32, 2, 33, 2, 34, 2, 35, 2, 36, 2, 37, 2, 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43, 2, 44, 2, 45, 2, 46, 2, 47, 2, 48, 2, 49, 2, 50, 2, 51, 2, 52, 2, 53, 2, 54, 2, 55, 2, 56, 2, 57, 2, 58, 2, 59, 2, 60, 2, 61, 2, 62, 2, 63, 2, 64, 2, 65, 2, 66, 2, 67, 2, 68, 2, 69, 2, 70, 2, 71, 2, 72, 2, 73, 2, 74, 0, 152, 0, 154, 0, 153, 0, 165, 0, 146, 0, 156, 0, 185, 2, 75, 2, 76, 2, 77, 2, 78, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 104, 2, 105, 2, 106, 2, 107, 2, 108, 2, 109, 2, 110, 2, 111, 2, 112, 2, 113, 2, 114, 2, 115, 2, 116, 2, 117, 2, 118, 2, 119, 0, 172, 2, 120, 2, 121, 2, 122, 2, 123, 2, 124, 2, 125, 2, 126, 2, 127, 2, 128, 2, 129, 2, 130, 2, 131, 2, 132, 2, 133, 2, 134, 2, 135, 2, 136, 2, 137, 2, 138, 2, 139, 2, 140, 2, 141, 2, 142, 2, 143, 2, 144, 2, 145, 2, 146, 2, 147, 2, 148, 2, 149, 2, 150, 2, 151, 2, 152, 2, 153, 2, 154, 2, 155, 2, 156, 2, 157, 2, 158, 2, 159, 2, 160, 2, 161, 2, 162, 2, 163, 2, 164, 2, 165, 2, 166, 2, 167, 2, 168, 2, 169, 2, 170, 2, 171, 2, 172, 2, 173, 2, 174, 2, 175, 2, 176, 2, 177, 2, 178, 2, 179, 2, 180, 2, 181, 2, 182, 2, 183, 2, 184, 2, 185, 2, 186, 2, 187, 2, 188, 2, 189, 2, 190, 2, 191, 2, 192, 2, 193, 2, 194, 2, 195, 2, 196, 2, 197, 2, 198, 2, 199, 2, 200, 2, 201, 2, 202, 2, 203, 2, 204, 2, 205, 2, 206, 2, 207, 2, 208, 2, 209, 2, 210, 2, 211, 2, 212, 2, 213, 2, 214, 2, 215, 2, 216, 2, 217, 2, 218, 2, 219, 2, 220, 2, 221, 2, 222, 2, 223, 2, 224, 2, 225, 2, 226, 2, 227, 2, 228, 2, 229, 2, 230, 2, 231, 2, 232, 2, 233, 2, 234, 2, 235, 2, 236, 2, 237, 2, 238, 2, 239, 2, 240, 2, 241, 2, 242, 2, 243, 2, 244, 2, 245, 2, 246, 2, 247, 2, 248, 2, 249, 2, 250, 2, 251, 2, 252, 2, 253, 2, 254, 2, 255, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, 3, 22, 3, 23, 3, 24, 3, 25, 3, 26, 3, 27, 3, 28, 3, 29, 3, 30, 3, 31, 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3, 39, 3, 40, 3, 41, 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 3, 53, 3, 54, 3, 55, 3, 56, 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, 3, 62, 3, 63, 3, 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 3, 75, 3, 76, 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88, 3, 89, 3, 90, 3, 91, 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 3, 100, 3, 101, 3, 102, 3, 103, 3, 104, 3, 105, 3, 106, 3, 107, 3, 108, 3, 109, 3, 110, 3, 111, 3, 112, 3, 113, 3, 114, 3, 115, 3, 116, 3, 117, 3, 118, 3, 119, 3, 120, 3, 121, 3, 122, 3, 123, 3, 124, 3, 125, 3, 126, 3, 127, 3, 128, 3, 129, 3, 130, 3, 131, 3, 132, 3, 133, 3, 134, 3, 135, 3, 136, 3, 137, 3, 138, 3, 139, 3, 140, 3, 141, 3, 142, 3, 143, 3, 144, 3, 145, 3, 146, 3, 147, 3, 148, 3, 149, 3, 150, 3, 151, 3, 152, 3, 153, 3, 154, 3, 155, 3, 156, 3, 157, 3, 158, 3, 159, 3, 160, 3, 161, 3, 162, 3, 163, 3, 164, 3, 165, 3, 166, 3, 167, 3, 168, 3, 169, 3, 170, 3, 171, 3, 172, 3, 173, 3, 174, 3, 175, 3, 176, 3, 177, 3, 178, 3, 179, 3, 180, 3, 181, 3, 182, 3, 183, 3, 184, 3, 185, 3, 186, 3, 187, 3, 188, 3, 189, 3, 190, 3, 191, 3, 192, 3, 193, 3, 194, 3, 195, 3, 196, 3, 197, 3, 198, 3, 199, 3, 200, 3, 201, 3, 202, 3, 203, 3, 204, 3, 205, 3, 206, 3, 207, 3, 208, 3, 209, 3, 210, 3, 211, 3, 212, 3, 213, 3, 214, 3, 215, 3, 216, 3, 217, 3, 218, 3, 219, 3, 220, 3, 221, 3, 222, 3, 223, 3, 224, 3, 225, 3, 226, 3, 227, 3, 228, 3, 229, 3, 230, 3, 231, 3, 232, 3, 233, 3, 234, 12, 107, 103, 114, 101, 101, 110, 108, 97, 110, 100, 105, 99, 5, 115, 99, 104, 119, 97, 4, 108, 105, 114, 97, 6, 112, 101, 115, 101, 116, 97, 6, 109, 105, 110, 117, 116, 101, 6, 115, 101, 99, 111, 110, 100, 6, 65, 98, 114, 101, 118, 101, 7, 65, 109, 97, 99, 114, 111, 110, 7, 65, 111, 103, 111, 110, 101, 107, 10, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 7, 65, 69, 97, 99, 117, 116, 101, 11, 67, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 68, 99, 97, 114, 111, 110, 6, 68, 99, 114, 111, 97, 116, 6, 69, 98, 114, 101, 118, 101, 6, 69, 99, 97, 114, 111, 110, 10, 69, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 69, 109, 97, 99, 114, 111, 110, 3, 69, 110, 103, 7, 69, 111, 103, 111, 110, 101, 107, 11, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 71, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 72, 98, 97, 114, 11, 72, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 73, 98, 114, 101, 118, 101, 7, 73, 109, 97, 99, 114, 111, 110, 7, 73, 111, 103, 111, 110, 101, 107, 6, 73, 116, 105, 108, 100, 101, 11, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 76, 97, 99, 117, 116, 101, 6, 76, 99, 97, 114, 111, 110, 12, 76, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 76, 100, 111, 116, 6, 78, 97, 99, 117, 116, 101, 6, 78, 99, 97, 114, 111, 110, 12, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 79, 98, 114, 101, 118, 101, 5, 79, 104, 111, 114, 110, 13, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 79, 109, 97, 99, 114, 111, 110, 11, 79, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 6, 82, 97, 99, 117, 116, 101, 6, 82, 99, 97, 114, 111, 110, 12, 82, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 83, 97, 99, 117, 116, 101, 11, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 84, 98, 97, 114, 6, 84, 99, 97, 114, 111, 110, 6, 85, 98, 114, 101, 118, 101, 5, 85, 104, 111, 114, 110, 13, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 85, 109, 97, 99, 114, 111, 110, 7, 85, 111, 103, 111, 110, 101, 107, 5, 85, 114, 105, 110, 103, 6, 85, 116, 105, 108, 100, 101, 6, 87, 97, 99, 117, 116, 101, 11, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 9, 87, 100, 105, 101, 114, 101, 115, 105, 115, 6, 87, 103, 114, 97, 118, 101, 11, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 89, 103, 114, 97, 118, 101, 6, 90, 97, 99, 117, 116, 101, 10, 90, 100, 111, 116, 97, 99, 99, 101, 110, 116, 6, 97, 98, 114, 101, 118, 101, 7, 97, 109, 97, 99, 114, 111, 110, 7, 97, 111, 103, 111, 110, 101, 107, 10, 97, 114, 105, 110, 103, 97, 99, 117, 116, 101, 7, 97, 101, 97, 99, 117, 116, 101, 11, 99, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 100, 99, 97, 114, 111, 110, 6, 101, 98, 114, 101, 118, 101, 6, 101, 99, 97, 114, 111, 110, 10, 101, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 101, 109, 97, 99, 114, 111, 110, 3, 101, 110, 103, 7, 101, 111, 103, 111, 110, 101, 107, 11, 103, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 103, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 104, 98, 97, 114, 11, 104, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 105, 98, 114, 101, 118, 101, 7, 105, 109, 97, 99, 114, 111, 110, 7, 105, 111, 103, 111, 110, 101, 107, 6, 105, 116, 105, 108, 100, 101, 11, 106, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 12, 107, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 108, 97, 99, 117, 116, 101, 6, 108, 99, 97, 114, 111, 110, 12, 108, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 4, 108, 100, 111, 116, 6, 110, 97, 99, 117, 116, 101, 6, 110, 99, 97, 114, 111, 110, 12, 110, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 111, 98, 114, 101, 118, 101, 5, 111, 104, 111, 114, 110, 13, 111, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 111, 109, 97, 99, 114, 111, 110, 11, 111, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 6, 114, 97, 99, 117, 116, 101, 6, 114, 99, 97, 114, 111, 110, 12, 114, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 115, 97, 99, 117, 116, 101, 11, 115, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 116, 98, 97, 114, 6, 116, 99, 97, 114, 111, 110, 6, 117, 98, 114, 101, 118, 101, 5, 117, 104, 111, 114, 110, 13, 117, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 117, 109, 97, 99, 114, 111, 110, 7, 117, 111, 103, 111, 110, 101, 107, 5, 117, 114, 105, 110, 103, 6, 117, 116, 105, 108, 100, 101, 6, 119, 97, 99, 117, 116, 101, 11, 119, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 9, 119, 100, 105, 101, 114, 101, 115, 105, 115, 6, 119, 103, 114, 97, 118, 101, 11, 121, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 121, 103, 114, 97, 118, 101, 6, 122, 97, 99, 117, 116, 101, 10, 122, 100, 111, 116, 97, 99, 99, 101, 110, 116, 8, 100, 111, 116, 98, 101, 108, 111, 119, 11, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 2, 73, 74, 2, 105, 106, 5, 108, 111, 110, 103, 115, 7, 117, 110, 105, 48, 50, 51, 55, 7, 117, 110, 105, 48, 50, 70, 51, 9, 103, 114, 97, 118, 101, 99, 111, 109, 98, 9, 97, 99, 117, 116, 101, 99, 111, 109, 98, 9, 116, 105, 108, 100, 101, 99, 111, 109, 98, 4, 104, 111, 111, 107, 7, 117, 110, 105, 48, 51, 48, 70, 5, 116, 111, 110, 111, 115, 13, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 9, 97, 110, 111, 116, 101, 108, 101, 105, 97, 5, 71, 97, 109, 109, 97, 5, 84, 104, 101, 116, 97, 6, 76, 97, 109, 98, 100, 97, 2, 88, 105, 2, 80, 105, 5, 83, 105, 103, 109, 97, 3, 80, 104, 105, 3, 80, 115, 105, 5, 97, 108, 112, 104, 97, 4, 98, 101, 116, 97, 5, 103, 97, 109, 109, 97, 5, 100, 101, 108, 116, 97, 7, 101, 112, 115, 105, 108, 111, 110, 4, 122, 101, 116, 97, 3, 101, 116, 97, 5, 116, 104, 101, 116, 97, 4, 105, 111, 116, 97, 6, 108, 97, 109, 98, 100, 97, 2, 120, 105, 3, 114, 104, 111, 6, 115, 105, 103, 109, 97, 49, 5, 115, 105, 103, 109, 97, 3, 116, 97, 117, 7, 117, 112, 115, 105, 108, 111, 110, 3, 112, 104, 105, 3, 112, 115, 105, 5, 111, 109, 101, 103, 97, 7, 117, 110, 105, 48, 51, 68, 49, 7, 117, 110, 105, 48, 51, 68, 50, 7, 117, 110, 105, 48, 51, 68, 54, 7, 117, 110, 105, 48, 52, 48, 50, 7, 117, 110, 105, 48, 52, 48, 52, 7, 117, 110, 105, 48, 52, 48, 57, 7, 117, 110, 105, 48, 52, 48, 65, 7, 117, 110, 105, 48, 52, 48, 66, 7, 117, 110, 105, 48, 52, 48, 70, 7, 117, 110, 105, 48, 52, 49, 49, 7, 117, 110, 105, 48, 52, 49, 52, 7, 117, 110, 105, 48, 52, 49, 54, 7, 117, 110, 105, 48, 52, 49, 55, 7, 117, 110, 105, 48, 52, 49, 56, 7, 117, 110, 105, 48, 52, 49, 66, 7, 117, 110, 105, 48, 52, 50, 51, 7, 117, 110, 105, 48, 52, 50, 54, 7, 117, 110, 105, 48, 52, 50, 55, 7, 117, 110, 105, 48, 52, 50, 56, 7, 117, 110, 105, 48, 52, 50, 57, 7, 117, 110, 105, 48, 52, 50, 65, 7, 117, 110, 105, 48, 52, 50, 66, 7, 117, 110, 105, 48, 52, 50, 67, 7, 117, 110, 105, 48, 52, 50, 68, 7, 117, 110, 105, 48, 52, 50, 69, 7, 117, 110, 105, 48, 52, 50, 70, 7, 117, 110, 105, 48, 52, 51, 49, 7, 117, 110, 105, 48, 52, 51, 50, 7, 117, 110, 105, 48, 52, 51, 51, 7, 117, 110, 105, 48, 52, 51, 52, 7, 117, 110, 105, 48, 52, 51, 54, 7, 117, 110, 105, 48, 52, 51, 55, 7, 117, 110, 105, 48, 52, 51, 56, 7, 117, 110, 105, 48, 52, 51, 65, 7, 117, 110, 105, 48, 52, 51, 66, 7, 117, 110, 105, 48, 52, 51, 67, 7, 117, 110, 105, 48, 52, 51, 68, 7, 117, 110, 105, 48, 52, 51, 70, 7, 117, 110, 105, 48, 52, 52, 50, 7, 117, 110, 105, 48, 52, 52, 52, 7, 117, 110, 105, 48, 52, 52, 54, 7, 117, 110, 105, 48, 52, 52, 55, 7, 117, 110, 105, 48, 52, 52, 56, 7, 117, 110, 105, 48, 52, 52, 57, 7, 117, 110, 105, 48, 52, 52, 65, 7, 117, 110, 105, 48, 52, 52, 66, 7, 117, 110, 105, 48, 52, 52, 67, 7, 117, 110, 105, 48, 52, 52, 68, 7, 117, 110, 105, 48, 52, 52, 69, 7, 117, 110, 105, 48, 52, 52, 70, 7, 117, 110, 105, 48, 52, 53, 50, 7, 117, 110, 105, 48, 52, 53, 52, 7, 117, 110, 105, 48, 52, 53, 57, 7, 117, 110, 105, 48, 52, 53, 65, 7, 117, 110, 105, 48, 52, 53, 66, 7, 117, 110, 105, 48, 52, 53, 70, 7, 117, 110, 105, 48, 52, 54, 48, 7, 117, 110, 105, 48, 52, 54, 49, 7, 117, 110, 105, 48, 52, 54, 51, 7, 117, 110, 105, 48, 52, 54, 52, 7, 117, 110, 105, 48, 52, 54, 53, 7, 117, 110, 105, 48, 52, 54, 54, 7, 117, 110, 105, 48, 52, 54, 55, 7, 117, 110, 105, 48, 52, 54, 56, 7, 117, 110, 105, 48, 52, 54, 57, 7, 117, 110, 105, 48, 52, 54, 65, 7, 117, 110, 105, 48, 52, 54, 66, 7, 117, 110, 105, 48, 52, 54, 67, 7, 117, 110, 105, 48, 52, 54, 68, 7, 117, 110, 105, 48, 52, 54, 69, 7, 117, 110, 105, 48, 52, 54, 70, 7, 117, 110, 105, 48, 52, 55, 50, 7, 117, 110, 105, 48, 52, 55, 51, 7, 117, 110, 105, 48, 52, 55, 52, 7, 117, 110, 105, 48, 52, 55, 53, 7, 117, 110, 105, 48, 52, 55, 56, 7, 117, 110, 105, 48, 52, 55, 57, 7, 117, 110, 105, 48, 52, 55, 65, 7, 117, 110, 105, 48, 52, 55, 66, 7, 117, 110, 105, 48, 52, 55, 67, 7, 117, 110, 105, 48, 52, 55, 68, 7, 117, 110, 105, 48, 52, 55, 69, 7, 117, 110, 105, 48, 52, 55, 70, 7, 117, 110, 105, 48, 52, 56, 48, 7, 117, 110, 105, 48, 52, 56, 49, 7, 117, 110, 105, 48, 52, 56, 50, 7, 117, 110, 105, 48, 52, 56, 51, 7, 117, 110, 105, 48, 52, 56, 52, 7, 117, 110, 105, 48, 52, 56, 53, 7, 117, 110, 105, 48, 52, 56, 54, 7, 117, 110, 105, 48, 52, 56, 56, 7, 117, 110, 105, 48, 52, 56, 57, 7, 117, 110, 105, 48, 52, 56, 69, 7, 117, 110, 105, 48, 52, 56, 70, 7, 117, 110, 105, 48, 52, 57, 48, 7, 117, 110, 105, 48, 52, 57, 49, 7, 117, 110, 105, 48, 52, 57, 52, 7, 117, 110, 105, 48, 52, 57, 53, 7, 117, 110, 105, 48, 52, 57, 67, 7, 117, 110, 105, 48, 52, 57, 68, 7, 117, 110, 105, 48, 52, 65, 48, 7, 117, 110, 105, 48, 52, 65, 49, 7, 117, 110, 105, 48, 52, 65, 52, 7, 117, 110, 105, 48, 52, 65, 53, 7, 117, 110, 105, 48, 52, 65, 54, 7, 117, 110, 105, 48, 52, 65, 55, 7, 117, 110, 105, 48, 52, 65, 56, 7, 117, 110, 105, 48, 52, 65, 57, 7, 117, 110, 105, 48, 52, 66, 52, 7, 117, 110, 105, 48, 52, 66, 53, 7, 117, 110, 105, 48, 52, 66, 56, 7, 117, 110, 105, 48, 52, 66, 57, 7, 117, 110, 105, 48, 52, 66, 65, 7, 117, 110, 105, 48, 52, 66, 67, 7, 117, 110, 105, 48, 52, 66, 68, 7, 117, 110, 105, 48, 52, 67, 51, 7, 117, 110, 105, 48, 52, 67, 52, 7, 117, 110, 105, 48, 52, 67, 55, 7, 117, 110, 105, 48, 52, 67, 56, 7, 117, 110, 105, 48, 52, 68, 56, 7, 117, 110, 105, 48, 52, 69, 48, 7, 117, 110, 105, 48, 52, 69, 49, 7, 117, 110, 105, 48, 52, 70, 65, 7, 117, 110, 105, 48, 52, 70, 66, 7, 117, 110, 105, 48, 53, 48, 48, 7, 117, 110, 105, 48, 53, 48, 50, 7, 117, 110, 105, 48, 53, 48, 51, 7, 117, 110, 105, 48, 53, 48, 52, 7, 117, 110, 105, 48, 53, 48, 53, 7, 117, 110, 105, 48, 53, 48, 54, 7, 117, 110, 105, 48, 53, 48, 55, 7, 117, 110, 105, 48, 53, 48, 56, 7, 117, 110, 105, 48, 53, 48, 57, 7, 117, 110, 105, 48, 53, 48, 65, 7, 117, 110, 105, 48, 53, 48, 66, 7, 117, 110, 105, 48, 53, 48, 67, 7, 117, 110, 105, 48, 53, 48, 68, 7, 117, 110, 105, 48, 53, 48, 69, 7, 117, 110, 105, 48, 53, 48, 70, 7, 117, 110, 105, 48, 53, 49, 48, 7, 117, 110, 105, 50, 48, 48, 48, 7, 117, 110, 105, 50, 48, 48, 49, 7, 117, 110, 105, 50, 48, 48, 50, 7, 117, 110, 105, 50, 48, 48, 51, 7, 117, 110, 105, 50, 48, 48, 52, 7, 117, 110, 105, 50, 48, 48, 53, 7, 117, 110, 105, 50, 48, 48, 54, 7, 117, 110, 105, 50, 48, 48, 55, 7, 117, 110, 105, 50, 48, 48, 56, 7, 117, 110, 105, 50, 48, 48, 57, 7, 117, 110, 105, 50, 48, 48, 65, 7, 117, 110, 105, 50, 48, 48, 66, 13, 117, 110, 100, 101, 114, 115, 99, 111, 114, 101, 100, 98, 108, 13, 113, 117, 111, 116, 101, 114, 101, 118, 101, 114, 115, 101, 100, 7, 117, 110, 105, 50, 48, 50, 53, 7, 117, 110, 105, 50, 48, 55, 52, 9, 110, 115, 117, 112, 101, 114, 105, 111, 114, 4, 69, 117, 114, 111, 7, 117, 110, 105, 50, 49, 48, 53, 7, 117, 110, 105, 50, 49, 49, 51, 7, 117, 110, 105, 50, 49, 49, 54, 9, 101, 115, 116, 105, 109, 97, 116, 101, 100, 9, 111, 110, 101, 101, 105, 103, 104, 116, 104, 12, 116, 104, 114, 101, 101, 101, 105, 103, 104, 116, 104, 115, 11, 102, 105, 118, 101, 101, 105, 103, 104, 116, 104, 115, 12, 115, 101, 118, 101, 110, 101, 105, 103, 104, 116, 104, 115, 7, 117, 110, 105, 70, 69, 70, 70, 7, 117, 110, 105, 70, 70, 70, 67, 7, 117, 110, 105, 70, 70, 70, 68, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 99, 111, 109, 98, 18, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104, 111, 111, 107, 99, 111, 109, 98, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 99, 111, 109, 98, 19, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 97, 99, 117, 116, 101, 99, 111, 109, 98, 14, 98, 114, 101, 118, 101, 103, 114, 97, 118, 101, 99, 111, 109, 98, 17, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 114, 111, 116, 97, 116, 101, 6, 65, 46, 115, 109, 99, 112, 6, 66, 46, 115, 109, 99, 112, 6, 67, 46, 115, 109, 99, 112, 6, 68, 46, 115, 109, 99, 112, 6, 69, 46, 115, 109, 99, 112, 6, 70, 46, 115, 109, 99, 112, 6, 71, 46, 115, 109, 99, 112, 6, 72, 46, 115, 109, 99, 112, 6, 73, 46, 115, 109, 99, 112, 6, 74, 46, 115, 109, 99, 112, 6, 75, 46, 115, 109, 99, 112, 6, 76, 46, 115, 109, 99, 112, 6, 77, 46, 115, 109, 99, 112, 6, 78, 46, 115, 109, 99, 112, 6, 79, 46, 115, 109, 99, 112, 6, 81, 46, 115, 109, 99, 112, 6, 82, 46, 115, 109, 99, 112, 6, 83, 46, 115, 109, 99, 112, 6, 84, 46, 115, 109, 99, 112, 6, 85, 46, 115, 109, 99, 112, 6, 86, 46, 115, 109, 99, 112, 6, 87, 46, 115, 109, 99, 112, 6, 88, 46, 115, 109, 99, 112, 6, 89, 46, 115, 109, 99, 112, 6, 90, 46, 115, 109, 99, 112, 13, 98, 114, 101, 118, 101, 104, 111, 111, 107, 99, 111, 109, 98, 14, 98, 114, 101, 118, 101, 97, 99, 117, 116, 101, 99, 111, 109, 98, 8, 99, 114, 111, 115, 115, 98, 97, 114, 9, 114, 105, 110, 103, 97, 99, 117, 116, 101, 9, 100, 97, 115, 105, 97, 111, 120, 105, 97, 14, 98, 114, 101, 118, 101, 116, 105, 108, 100, 101, 99, 111, 109, 98, 11, 99, 121, 114, 105, 108, 108, 105, 99, 116, 105, 99, 12, 99, 121, 114, 105, 108, 108, 105, 99, 104, 111, 111, 107, 6, 80, 46, 115, 109, 99, 112, 5, 75, 46, 97, 108, 116, 15, 71, 101, 114, 109, 97, 110, 100, 98, 108, 115, 46, 115, 109, 99, 112, 7, 117, 110, 105, 48, 48, 65, 68, 7, 117, 110, 105, 48, 49, 48, 65, 7, 117, 110, 105, 48, 49, 48, 66, 7, 117, 110, 105, 48, 49, 50, 48, 7, 117, 110, 105, 48, 49, 50, 49, 11, 110, 97, 112, 111, 115, 116, 114, 111, 112, 104, 101, 7, 117, 110, 105, 48, 50, 49, 56, 7, 117, 110, 105, 48, 50, 49, 57, 7, 117, 110, 105, 48, 50, 49, 65, 7, 117, 110, 105, 48, 50, 49, 66, 7, 117, 110, 105, 48, 49, 54, 50, 12, 117, 110, 105, 48, 49, 54, 50, 46, 115, 109, 99, 112, 7, 117, 110, 105, 48, 49, 54, 51, 11, 68, 99, 114, 111, 97, 116, 46, 115, 109, 99, 112, 8, 69, 116, 104, 46, 115, 109, 99, 112, 9, 84, 98, 97, 114, 46, 115, 109, 99, 112, 11, 65, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 65, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 65, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 65, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 14, 65, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 10, 65, 114, 105, 110, 103, 46, 115, 109, 99, 112, 15, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 13, 67, 99, 101, 100, 105, 108, 108, 97, 46, 115, 109, 99, 112, 11, 69, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 69, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 69, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 69, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 73, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 73, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 73, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 73, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 78, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 11, 79, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 79, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 79, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 79, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 14, 79, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 85, 103, 114, 97, 118, 101, 46, 115, 109, 99, 112, 11, 85, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 85, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 85, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 89, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 12, 65, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 65, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 12, 65, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 11, 67, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 67, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 67, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 68, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 12, 69, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 69, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 15, 69, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 12, 69, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 11, 69, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 16, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 71, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 17, 71, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 16, 72, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 11, 73, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 12, 73, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 73, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 12, 73, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 15, 73, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 16, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 17, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 76, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 76, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 76, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 9, 76, 100, 111, 116, 46, 115, 109, 99, 112, 11, 78, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 78, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 12, 79, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 79, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 18, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 46, 115, 109, 99, 112, 11, 82, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 17, 82, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 82, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 83, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 16, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 13, 83, 99, 101, 100, 105, 108, 108, 97, 46, 115, 109, 99, 112, 11, 83, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 84, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 11, 85, 116, 105, 108, 100, 101, 46, 115, 109, 99, 112, 12, 85, 109, 97, 99, 114, 111, 110, 46, 115, 109, 99, 112, 11, 85, 98, 114, 101, 118, 101, 46, 115, 109, 99, 112, 10, 85, 114, 105, 110, 103, 46, 115, 109, 99, 112, 18, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 46, 115, 109, 99, 112, 12, 85, 111, 103, 111, 110, 101, 107, 46, 115, 109, 99, 112, 16, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 16, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 46, 115, 109, 99, 112, 14, 89, 100, 105, 101, 114, 101, 115, 105, 115, 46, 115, 109, 99, 112, 11, 90, 97, 99, 117, 116, 101, 46, 115, 109, 99, 112, 15, 90, 100, 111, 116, 97, 99, 99, 101, 110, 116, 46, 115, 109, 99, 112, 11, 90, 99, 97, 114, 111, 110, 46, 115, 109, 99, 112, 10, 65, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 69, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 69, 116, 97, 116, 111, 110, 111, 115, 9, 73, 111, 116, 97, 116, 111, 110, 111, 115, 12, 79, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 85, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 10, 79, 109, 101, 103, 97, 116, 111, 110, 111, 115, 17, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 65, 108, 112, 104, 97, 4, 66, 101, 116, 97, 7, 69, 112, 115, 105, 108, 111, 110, 4, 90, 101, 116, 97, 3, 69, 116, 97, 4, 73, 111, 116, 97, 5, 75, 97, 112, 112, 97, 2, 77, 117, 2, 78, 117, 7, 79, 109, 105, 99, 114, 111, 110, 3, 82, 104, 111, 3, 84, 97, 117, 7, 85, 112, 115, 105, 108, 111, 110, 3, 67, 104, 105, 12, 73, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15, 85, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 10, 97, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 101, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 101, 116, 97, 116, 111, 110, 111, 115, 9, 105, 111, 116, 97, 116, 111, 110, 111, 115, 20, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 107, 97, 112, 112, 97, 7, 111, 109, 105, 99, 114, 111, 110, 7, 117, 110, 105, 48, 51, 66, 67, 2, 110, 117, 3, 99, 104, 105, 12, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 12, 111, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 117, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 10, 111, 109, 101, 103, 97, 116, 111, 110, 111, 115, 7, 117, 110, 105, 48, 52, 48, 49, 7, 117, 110, 105, 48, 52, 48, 51, 7, 117, 110, 105, 48, 52, 48, 53, 7, 117, 110, 105, 48, 52, 48, 54, 7, 117, 110, 105, 48, 52, 48, 55, 7, 117, 110, 105, 48, 52, 48, 56, 7, 117, 110, 105, 48, 52, 49, 65, 7, 117, 110, 105, 48, 52, 48, 67, 7, 117, 110, 105, 48, 52, 48, 69, 7, 117, 110, 105, 48, 52, 49, 48, 7, 117, 110, 105, 48, 52, 49, 50, 7, 117, 110, 105, 48, 52, 49, 51, 7, 117, 110, 105, 48, 52, 49, 53, 7, 117, 110, 105, 48, 52, 49, 57, 7, 117, 110, 105, 48, 52, 49, 67, 7, 117, 110, 105, 48, 52, 49, 68, 7, 117, 110, 105, 48, 52, 49, 69, 7, 117, 110, 105, 48, 52, 49, 70, 7, 117, 110, 105, 48, 52, 50, 48, 7, 117, 110, 105, 48, 52, 50, 49, 7, 117, 110, 105, 48, 52, 50, 50, 7, 117, 110, 105, 48, 52, 50, 52, 7, 117, 110, 105, 48, 52, 50, 53, 7, 117, 110, 105, 48, 52, 51, 48, 7, 117, 110, 105, 48, 52, 51, 53, 7, 117, 110, 105, 48, 52, 51, 57, 7, 117, 110, 105, 48, 52, 51, 69, 7, 117, 110, 105, 48, 52, 52, 48, 7, 117, 110, 105, 48, 52, 52, 49, 7, 117, 110, 105, 48, 52, 52, 51, 7, 117, 110, 105, 48, 52, 52, 53, 7, 117, 110, 105, 48, 52, 53, 49, 7, 117, 110, 105, 48, 52, 53, 51, 7, 117, 110, 105, 48, 52, 53, 53, 7, 117, 110, 105, 48, 52, 53, 54, 7, 117, 110, 105, 48, 52, 53, 55, 7, 117, 110, 105, 48, 52, 53, 56, 7, 117, 110, 105, 48, 52, 53, 67, 7, 117, 110, 105, 48, 52, 53, 69, 9, 101, 120, 99, 108, 97, 109, 100, 98, 108, 7, 117, 110, 105, 48, 49, 70, 48, 7, 117, 110, 105, 48, 50, 66, 67, 7, 117, 110, 105, 49, 69, 51, 69, 7, 117, 110, 105, 49, 69, 51, 70, 7, 117, 110, 105, 49, 69, 48, 48, 7, 117, 110, 105, 49, 69, 48, 49, 7, 117, 110, 105, 49, 70, 52, 68, 7, 117, 110, 105, 48, 52, 48, 48, 7, 117, 110, 105, 48, 52, 48, 68, 7, 117, 110, 105, 48, 52, 53, 48, 7, 117, 110, 105, 48, 52, 53, 68, 7, 117, 110, 105, 48, 52, 55, 48, 7, 117, 110, 105, 48, 52, 55, 49, 7, 117, 110, 105, 48, 52, 55, 54, 7, 117, 110, 105, 48, 52, 55, 55, 7, 117, 110, 105, 48, 52, 57, 56, 7, 117, 110, 105, 48, 52, 57, 57, 7, 117, 110, 105, 48, 52, 65, 65, 7, 117, 110, 105, 48, 52, 65, 66, 7, 117, 110, 105, 48, 52, 65, 69, 7, 117, 110, 105, 48, 52, 65, 70, 7, 117, 110, 105, 48, 52, 67, 48, 7, 117, 110, 105, 48, 52, 67, 49, 7, 117, 110, 105, 48, 52, 67, 50, 7, 117, 110, 105, 48, 52, 67, 70, 7, 117, 110, 105, 48, 52, 68, 48, 7, 117, 110, 105, 48, 52, 68, 49, 7, 117, 110, 105, 48, 52, 68, 50, 7, 117, 110, 105, 48, 52, 68, 51, 7, 117, 110, 105, 48, 52, 68, 52, 7, 117, 110, 105, 48, 52, 68, 53, 7, 117, 110, 105, 48, 52, 68, 54, 7, 117, 110, 105, 48, 52, 68, 55, 7, 117, 110, 105, 48, 52, 68, 65, 7, 117, 110, 105, 48, 52, 68, 57, 7, 117, 110, 105, 48, 52, 68, 66, 7, 117, 110, 105, 48, 52, 68, 67, 7, 117, 110, 105, 48, 52, 68, 68, 7, 117, 110, 105, 48, 52, 68, 69, 7, 117, 110, 105, 48, 52, 68, 70, 7, 117, 110, 105, 48, 52, 69, 50, 7, 117, 110, 105, 48, 52, 69, 51, 7, 117, 110, 105, 48, 52, 69, 52, 7, 117, 110, 105, 48, 52, 69, 53, 7, 117, 110, 105, 48, 52, 69, 54, 7, 117, 110, 105, 48, 52, 69, 55, 7, 117, 110, 105, 48, 52, 69, 56, 7, 117, 110, 105, 48, 52, 69, 57, 7, 117, 110, 105, 48, 52, 69, 65, 7, 117, 110, 105, 48, 52, 69, 66, 7, 117, 110, 105, 48, 52, 69, 67, 7, 117, 110, 105, 48, 52, 69, 68, 7, 117, 110, 105, 48, 52, 69, 69, 7, 117, 110, 105, 48, 52, 69, 70, 7, 117, 110, 105, 48, 52, 70, 48, 7, 117, 110, 105, 48, 52, 70, 49, 7, 117, 110, 105, 48, 52, 70, 50, 7, 117, 110, 105, 48, 52, 70, 51, 7, 117, 110, 105, 48, 52, 70, 52, 7, 117, 110, 105, 48, 52, 70, 53, 7, 117, 110, 105, 48, 52, 70, 56, 7, 117, 110, 105, 48, 52, 70, 57, 7, 117, 110, 105, 48, 52, 70, 67, 7, 117, 110, 105, 48, 52, 70, 68, 7, 117, 110, 105, 48, 53, 48, 49, 7, 117, 110, 105, 48, 53, 49, 50, 7, 117, 110, 105, 48, 53, 49, 51, 7, 117, 110, 105, 49, 69, 65, 48, 7, 117, 110, 105, 49, 69, 65, 49, 7, 117, 110, 105, 49, 69, 65, 50, 7, 117, 110, 105, 49, 69, 65, 51, 7, 117, 110, 105, 49, 69, 65, 52, 7, 117, 110, 105, 49, 69, 65, 53, 7, 117, 110, 105, 49, 69, 65, 54, 7, 117, 110, 105, 49, 69, 65, 55, 7, 117, 110, 105, 49, 69, 65, 56, 7, 117, 110, 105, 49, 69, 65, 57, 7, 117, 110, 105, 49, 69, 65, 65, 7, 117, 110, 105, 49, 69, 65, 66, 7, 117, 110, 105, 49, 69, 65, 67, 7, 117, 110, 105, 49, 69, 65, 68, 7, 117, 110, 105, 49, 69, 65, 69, 7, 117, 110, 105, 49, 69, 65, 70, 7, 117, 110, 105, 49, 69, 66, 48, 7, 117, 110, 105, 49, 69, 66, 49, 7, 117, 110, 105, 49, 69, 66, 50, 7, 117, 110, 105, 49, 69, 66, 51, 7, 117, 110, 105, 49, 69, 66, 52, 7, 117, 110, 105, 49, 69, 66, 53, 7, 117, 110, 105, 49, 69, 66, 54, 7, 117, 110, 105, 49, 69, 66, 55, 7, 117, 110, 105, 49, 69, 66, 56, 7, 117, 110, 105, 49, 69, 66, 57, 7, 117, 110, 105, 49, 69, 66, 65, 7, 117, 110, 105, 49, 69, 66, 66, 7, 117, 110, 105, 49, 69, 66, 67, 7, 117, 110, 105, 49, 69, 66, 68, 7, 117, 110, 105, 49, 69, 66, 69, 7, 117, 110, 105, 49, 69, 66, 70, 7, 117, 110, 105, 49, 69, 67, 48, 7, 117, 110, 105, 49, 69, 67, 49, 7, 117, 110, 105, 49, 69, 67, 50, 7, 117, 110, 105, 49, 69, 67, 51, 7, 117, 110, 105, 49, 69, 67, 52, 7, 117, 110, 105, 49, 69, 67, 53, 7, 117, 110, 105, 49, 69, 67, 54, 7, 117, 110, 105, 49, 69, 67, 55, 7, 117, 110, 105, 49, 69, 67, 56, 7, 117, 110, 105, 49, 69, 67, 57, 7, 117, 110, 105, 49, 69, 67, 65, 7, 117, 110, 105, 49, 69, 67, 66, 7, 117, 110, 105, 49, 69, 67, 67, 7, 117, 110, 105, 49, 69, 67, 68, 7, 117, 110, 105, 49, 69, 67, 69, 7, 117, 110, 105, 49, 69, 67, 70, 7, 117, 110, 105, 49, 69, 68, 48, 7, 117, 110, 105, 49, 69, 68, 49, 7, 117, 110, 105, 49, 69, 68, 50, 7, 117, 110, 105, 49, 69, 68, 51, 7, 117, 110, 105, 49, 69, 68, 52, 7, 117, 110, 105, 49, 69, 68, 53, 7, 117, 110, 105, 49, 69, 68, 54, 7, 117, 110, 105, 49, 69, 68, 55, 7, 117, 110, 105, 49, 69, 68, 56, 7, 117, 110, 105, 49, 69, 68, 57, 7, 117, 110, 105, 49, 69, 68, 65, 7, 117, 110, 105, 49, 69, 68, 66, 7, 117, 110, 105, 49, 69, 68, 67, 7, 117, 110, 105, 49, 69, 68, 68, 7, 117, 110, 105, 49, 69, 68, 69, 7, 117, 110, 105, 49, 69, 68, 70, 7, 117, 110, 105, 49, 69, 69, 48, 7, 117, 110, 105, 49, 69, 69, 49, 7, 117, 110, 105, 49, 69, 69, 50, 7, 117, 110, 105, 49, 69, 69, 51, 7, 117, 110, 105, 49, 69, 69, 52, 7, 117, 110, 105, 49, 69, 69, 53, 7, 117, 110, 105, 49, 69, 69, 54, 7, 117, 110, 105, 49, 69, 69, 55, 7, 117, 110, 105, 49, 69, 69, 56, 7, 117, 110, 105, 49, 69, 69, 57, 7, 117, 110, 105, 49, 69, 69, 65, 7, 117, 110, 105, 49, 69, 69, 66, 7, 117, 110, 105, 49, 69, 69, 67, 7, 117, 110, 105, 49, 69, 69, 68, 7, 117, 110, 105, 49, 69, 69, 69, 7, 117, 110, 105, 49, 69, 69, 70, 7, 117, 110, 105, 49, 69, 70, 48, 7, 117, 110, 105, 49, 69, 70, 49, 7, 117, 110, 105, 49, 69, 70, 52, 7, 117, 110, 105, 49, 69, 70, 53, 7, 117, 110, 105, 49, 69, 70, 54, 7, 117, 110, 105, 49, 69, 70, 55, 7, 117, 110, 105, 49, 69, 70, 56, 7, 117, 110, 105, 49, 69, 70, 57, 7, 117, 110, 105, 50, 48, 65, 66, 7, 117, 110, 105, 48, 52, 57, 65, 7, 117, 110, 105, 48, 52, 57, 66, 7, 117, 110, 105, 48, 52, 65, 50, 7, 117, 110, 105, 48, 52, 65, 51, 7, 117, 110, 105, 48, 52, 65, 67, 7, 117, 110, 105, 48, 52, 65, 68, 7, 117, 110, 105, 48, 52, 66, 50, 7, 117, 110, 105, 48, 52, 66, 51, 7, 117, 110, 105, 48, 52, 66, 54, 7, 117, 110, 105, 48, 52, 66, 55, 7, 117, 110, 105, 48, 52, 67, 66, 7, 117, 110, 105, 48, 52, 67, 67, 7, 117, 110, 105, 48, 52, 70, 54, 7, 117, 110, 105, 48, 52, 70, 55, 7, 117, 110, 105, 48, 52, 57, 54, 7, 117, 110, 105, 48, 52, 57, 55, 7, 117, 110, 105, 48, 52, 66, 69, 7, 117, 110, 105, 48, 52, 66, 70, 7, 117, 110, 105, 48, 52, 66, 66, 7, 117, 110, 105, 48, 52, 56, 68, 7, 117, 110, 105, 48, 52, 56, 67, 7, 117, 110, 105, 48, 52, 54, 50, 7, 117, 110, 105, 48, 52, 57, 50, 7, 117, 110, 105, 48, 52, 57, 51, 7, 117, 110, 105, 48, 52, 57, 69, 7, 117, 110, 105, 48, 52, 57, 70, 7, 117, 110, 105, 48, 52, 56, 65, 7, 117, 110, 105, 48, 52, 56, 66, 7, 117, 110, 105, 48, 52, 67, 57, 7, 117, 110, 105, 48, 52, 67, 65, 7, 117, 110, 105, 48, 52, 67, 68, 7, 117, 110, 105, 48, 52, 67, 69, 7, 117, 110, 105, 48, 52, 67, 53, 7, 117, 110, 105, 48, 52, 67, 54, 7, 117, 110, 105, 48, 52, 66, 48, 7, 117, 110, 105, 48, 52, 66, 49, 7, 117, 110, 105, 48, 52, 70, 69, 7, 117, 110, 105, 48, 52, 70, 70, 7, 117, 110, 105, 48, 53, 49, 49, 7, 117, 110, 105, 50, 48, 49, 53, 0, 1, 0, 1, 255, 255, 0, 15, 0, 1, 0, 0, 0, 10, 0, 48, 0, 62, 0, 4, 68, 70, 76, 84, 0, 26, 99, 121, 114, 108, 0, 26, 103, 114, 101, 107, 0, 26, 108, 97, 116, 110, 0, 26, 0, 4, 0, 0, 0, 0, 255, 255, 0, 1, 0, 0, 0, 1, 115, 109, 99, 112, 0, 8, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 1, 190, 0, 220, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 112, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 112, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 130, 2, 114, 2, 133, 2, 160, 2, 134, 2, 136, 2, 132, 2, 159, 2, 161, 2, 137, 2, 138, 2, 135, 2, 162, 2, 164, 2, 139, 2, 163, 2, 165, 2, 129, 2, 141, 2, 167, 2, 170, 2, 142, 2, 143, 2, 168, 2, 140, 2, 166, 2, 169, 2, 130, 2, 172, 2, 171, 2, 173, 2, 174, 2, 145, 2, 177, 2, 146, 2, 147, 2, 179, 2, 144, 2, 176, 2, 178, 2, 175, 2, 180, 2, 181, 2, 182, 2, 184, 2, 183, 2, 185, 2, 186, 2, 188, 2, 187, 2, 148, 2, 150, 2, 190, 2, 151, 2, 153, 2, 149, 2, 191, 2, 189, 2, 152, 2, 192, 2, 194, 2, 193, 2, 195, 2, 198, 2, 197, 2, 196, 2, 131, 2, 199, 2, 155, 2, 202, 2, 156, 2, 157, 2, 154, 2, 204, 2, 201, 2, 205, 2, 203, 2, 200, 2, 206, 2, 158, 2, 207, 2, 208, 2, 209, 2, 211, 2, 210, 2, 133, 2, 160, 2, 134, 2, 136, 2, 132, 2, 159, 2, 161, 2, 137, 2, 138, 2, 135, 2, 162, 2, 164, 2, 139, 2, 163, 2, 165, 2, 129, 2, 141, 2, 167, 2, 170, 2, 142, 2, 143, 2, 168, 2, 140, 2, 166, 2, 169, 2, 172, 2, 171, 2, 173, 2, 174, 2, 145, 2, 177, 2, 146, 2, 147, 2, 144, 2, 176, 2, 178, 2, 175, 2, 180, 2, 181, 2, 182, 2, 184, 2, 183, 2, 185, 2, 186, 2, 188, 2, 187, 2, 148, 2, 150, 2, 190, 2, 151, 2, 153, 2, 149, 2, 191, 2, 189, 2, 152, 2, 192, 2, 194, 2, 193, 2, 195, 2, 198, 2, 197, 2, 196, 2, 131, 2, 199, 2, 155, 2, 202, 2, 156, 2, 157, 2, 154, 2, 204, 2, 201, 2, 205, 2, 203, 2, 200, 2, 206, 2, 158, 2, 207, 2, 208, 2, 209, 2, 211, 2, 210, 2, 127, 2, 127, 0, 2, 0, 26, 0, 2, 0, 53, 0, 0, 0, 76, 0, 76, 0, 52, 0, 80, 0, 80, 0, 53, 0, 158, 0, 167, 0, 54, 0, 169, 0, 182, 0, 64, 0, 184, 0, 188, 0, 78, 0, 190, 0, 205, 0, 83, 0, 207, 0, 215, 0, 99, 0, 217, 0, 218, 0, 108, 0, 221, 0, 235, 0, 110, 0, 237, 0, 241, 0, 125, 0, 243, 0, 243, 0, 130, 0, 246, 0, 248, 0, 131, 0, 250, 1, 6, 0, 134, 1, 8, 1, 21, 0, 147, 1, 23, 1, 26, 0, 161, 1, 28, 1, 42, 0, 165, 1, 44, 1, 52, 0, 180, 1, 54, 1, 55, 0, 189, 1, 58, 1, 72, 0, 191, 1, 74, 1, 78, 0, 206, 1, 80, 1, 80, 0, 211, 1, 83, 1, 85, 0, 212, 1, 87, 1, 89, 0, 215, 2, 126, 2, 126, 0, 218, 2, 128, 2, 128, 0, 219, 0, 1, 0, 1, 0, 8, 0, 2, 0, 0, 0, 20, 0, 2, 0, 0, 0, 36, 0, 2, 119, 103, 104, 116, 1, 0, 0, 0, 105, 116, 97, 108, 1, 11, 0, 1, 0, 4, 0, 16, 0, 1, 0, 0, 0, 0, 1, 16, 2, 188, 0, 0, 0, 1, 0, 1, 0, 0, 1, 17, 0, 1, 0, 0) +font_name = "Roboto Mono" +style_name = "Bold Italic" +font_style = 7 +font_weight = 700 +msdf_pixel_range = 8 +fixed_size = 14 +cache/0/16/0/ascent = 15.0 +cache/0/16/0/descent = 4.0 +cache/0/16/0/underline_position = 1.375 +cache/0/16/0/underline_thickness = 0.6875 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/14/0/ascent = 15.0 +cache/0/14/0/descent = 4.0 +cache/0/14/0/underline_position = 1.375 +cache/0/14/0/underline_thickness = 0.6875 +cache/0/14/0/scale = 1.0 +cache/0/14/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/14/0/kerning_overrides/14/0 = Vector2(0, 0) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hbbq5"] +content_margin_left = 10.0 +content_margin_right = 10.0 +bg_color = Color(0.172549, 0.113725, 0.141176, 1) +border_width_left = 4 +border_width_top = 4 +border_width_right = 4 +border_width_bottom = 4 +border_color = Color(0.87451, 0.0705882, 0.160784, 1) +border_blend = true +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 +shadow_color = Color(0, 0, 0, 0.756863) +shadow_size = 10 +shadow_offset = Vector2(10, 10) + +[node name="Control" type="Window"] +disable_3d = true +gui_embed_subwindows = true +title = "GdUnitSettings" +initial_position = 1 +size = Vector2i(1006, 723) +visible = false +wrap_controls = true +exclusive = true +extend_to_title = true +script = ExtResource("2") + +[node name="property_template" type="Control" parent="."] +visible = false +layout_mode = 3 +anchors_preset = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 224.0 +offset_bottom = 201.0 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="property_template"] +layout_mode = 0 +offset_top = 13.0 +offset_right = 131.0 +offset_bottom = 27.0 + +[node name="btn_reset" type="Button" parent="property_template"] +layout_mode = 0 +offset_right = 12.0 +offset_bottom = 40.0 +tooltip_text = "Reset to default value" +clip_text = true + +[node name="info" type="Label" parent="property_template"] +layout_mode = 0 +offset_left = 390.0 +offset_top = 11.0 +offset_right = 590.0 +offset_bottom = 25.0 +size_flags_horizontal = 3 +text = "Enables/disables the update notification " +clip_text = true +max_lines_visible = 1 + +[node name="sub_category" type="Panel" parent="property_template"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 30.0 +grow_horizontal = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="property_template/sub_category"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0.196078, 0.631373, 0.639216, 1) + +[node name="GdUnitUpdateClient" type="Node" parent="."] +script = ExtResource("8_2ggr0") + +[node name="Panel" type="Panel" parent="."] +use_parent_material = true +clip_contents = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer" type="PanelContainer" parent="Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="v" type="VBoxContainer" parent="Panel/PanelContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MarginContainer" type="MarginContainer" parent="Panel/PanelContainer/v"] +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 + +[node name="GridContainer" type="HBoxContainer" parent="Panel/PanelContainer/v/MarginContainer"] +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer" type="MarginContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer"] +use_parent_material = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Panel" type="VBoxContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer"] +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="CenterContainer" type="CenterContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/Panel"] +use_parent_material = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="logo" type="TextureRect" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/Panel/CenterContainer"] +custom_minimum_size = Vector2(120, 120) +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 4 +texture = ExtResource("3_isfyl") +expand_mode = 1 +stretch_mode = 5 + +[node name="CenterContainer2" type="MarginContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/Panel"] +use_parent_material = true +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="version" type="RichTextLabel" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/Panel/CenterContainer2"] +unique_name_in_owner = true +use_parent_material = true +clip_contents = false +layout_mode = 2 +size_flags_horizontal = 3 +auto_translate = false +localize_numeral_system = false +theme_override_fonts/normal_font = SubResource("FontFile_ulks6") +theme_override_fonts/bold_font = SubResource("FontFile_ia6yb") +theme_override_fonts/italics_font = SubResource("FontFile_uy7mm") +theme_override_fonts/bold_italics_font = SubResource("FontFile_xg6bo") +theme_override_fonts/mono_font = SubResource("FontFile_ulks6") +theme_override_font_sizes/normal_font_size = 14 +theme_override_font_sizes/bold_font_size = 14 +theme_override_font_sizes/italics_font_size = 14 +theme_override_font_sizes/bold_italics_font_size = 14 +theme_override_font_sizes/mono_font_size = 14 +bbcode_enabled = true +text = "[center][color=#9887c4]gd[/color][color=#7a57d6]Unit[/color][color=#9887c4]4[/color] [color=#9887c4]4.3.0[/color][/center]" +scroll_active = false +meta_underlined = false + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer"] +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 2 + +[node name="btn_report_bug" type="Button" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Press to create a bug report" +text = "Report Bug" + +[node name="btn_request_feature" type="Button" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Press to create a feature request" +text = "Request Feature" + +[node name="btn_install_examples" type="Button" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Press to install the advanced test examples" +disabled = true +text = "Install Examples" + +[node name="Properties" type="TabContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 11 + +[node name="Common" type="ScrollContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties"] +layout_mode = 2 + +[node name="common-content" type="VBoxContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties/Common"] +unique_name_in_owner = true +clip_contents = true +custom_minimum_size = Vector2(1557, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="UI" type="ScrollContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties"] +visible = false +layout_mode = 2 + +[node name="ui-content" type="VBoxContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties/UI"] +unique_name_in_owner = true +clip_contents = true +custom_minimum_size = Vector2(1361, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Shortcuts" type="ScrollContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties"] +visible = false +layout_mode = 2 + +[node name="shortcut-content" type="VBoxContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties/Shortcuts"] +unique_name_in_owner = true +clip_contents = true +custom_minimum_size = Vector2(983, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="GdUnitInputCapture" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties/Shortcuts/shortcut-content" instance=ExtResource("5_xu3j8")] +unique_name_in_owner = true +visible = false +modulate = Color(1.01063e-08, 1.01063e-08, 1.01063e-08, 0.1) +z_index = 1 +z_as_relative = false +layout_mode = 2 +size_flags_horizontal = 1 +size_flags_vertical = 1 + +[node name="Report" type="ScrollContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties"] +visible = false +layout_mode = 2 + +[node name="report-content" type="VBoxContainer" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties/Report"] +unique_name_in_owner = true +clip_contents = true +custom_minimum_size = Vector2(1249, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Templates" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties" instance=ExtResource("4")] +visible = false +layout_mode = 2 + +[node name="propertyError" type="PopupPanel" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties"] +unique_name_in_owner = true +initial_position = 1 +size = Vector2i(400, 100) +theme_override_styles/panel = SubResource("StyleBoxFlat_hbbq5") + +[node name="Label" type="Label" parent="Panel/PanelContainer/v/MarginContainer/GridContainer/Properties/propertyError"] +offset_left = 10.0 +offset_top = 4.0 +offset_right = 390.0 +offset_bottom = 96.0 +theme_override_colors/font_color = Color(0.858824, 0, 0.109804, 1) +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="MarginContainer2" type="MarginContainer" parent="Panel/PanelContainer/v"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/PanelContainer/v/MarginContainer2"] +layout_mode = 2 +size_flags_horizontal = 3 +alignment = 2 + +[node name="ProgressBar" type="ProgressBar" parent="Panel/PanelContainer/v/MarginContainer2/HBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="progress_lbl" type="Label" parent="Panel/PanelContainer/v/MarginContainer2/HBoxContainer/ProgressBar"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +clip_text = true + +[node name="btn_close" type="Button" parent="Panel/PanelContainer/v/MarginContainer2/HBoxContainer"] +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +text = "Close" + +[connection signal="close_requested" from="." to="." method="_on_btn_close_pressed"] +[connection signal="pressed" from="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/VBoxContainer/btn_report_bug" to="." method="_on_btn_report_bug_pressed"] +[connection signal="pressed" from="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/VBoxContainer/btn_request_feature" to="." method="_on_btn_request_feature_pressed"] +[connection signal="pressed" from="Panel/PanelContainer/v/MarginContainer/GridContainer/PanelContainer/VBoxContainer/btn_install_examples" to="." method="_on_btn_install_examples_pressed"] +[connection signal="pressed" from="Panel/PanelContainer/v/MarginContainer2/HBoxContainer/btn_close" to="." method="_on_btn_close_pressed"] diff --git a/addons/gdUnit4/src/ui/settings/logo.png b/addons/gdUnit4/src/ui/settings/logo.png new file mode 100644 index 0000000..12de79f Binary files /dev/null and b/addons/gdUnit4/src/ui/settings/logo.png differ diff --git a/addons/gdUnit4/src/ui/settings/logo.png.import b/addons/gdUnit4/src/ui/settings/logo.png.import new file mode 100644 index 0000000..c2a071e --- /dev/null +++ b/addons/gdUnit4/src/ui/settings/logo.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bkh022wwqq7s3" +path="res://.godot/imported/logo.png-deda0e4ba02a0b9e4e4a830029a5817f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/ui/settings/logo.png" +dest_files=["res://.godot/imported/logo.png-deda0e4ba02a0b9e4e4a830029a5817f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/src/ui/templates/TestSuiteTemplate.gd b/addons/gdUnit4/src/ui/templates/TestSuiteTemplate.gd new file mode 100644 index 0000000..7230481 --- /dev/null +++ b/addons/gdUnit4/src/ui/templates/TestSuiteTemplate.gd @@ -0,0 +1,121 @@ +@tool +extends MarginContainer + +@onready var _template_editor :CodeEdit = $VBoxContainer/EdiorLayout/Editor +@onready var _tags_editor :CodeEdit = $Tags/MarginContainer/TextEdit +@onready var _title_bar :Panel = $VBoxContainer/sub_category +@onready var _save_button :Button = $VBoxContainer/Panel/HBoxContainer/Save +@onready var _selected_type :OptionButton = $VBoxContainer/EdiorLayout/Editor/MarginContainer/HBoxContainer/SelectType +@onready var _show_tags :PopupPanel = $Tags + + +var gd_key_words :PackedStringArray = ["extends", "class_name", "const", "var", "onready", "func", "void", "pass"] +var gdunit_key_words :PackedStringArray = ["GdUnitTestSuite", "before", "after", "before_test", "after_test"] +var _selected_template :int + + +func _ready() -> void: + setup_editor_colors() + setup_fonts() + setup_supported_types() + load_template(GdUnitTestSuiteTemplate.TEMPLATE_ID_GD) + setup_tags_help() + + +func _notification(what :int) -> void: + if what == EditorSettings.NOTIFICATION_EDITOR_SETTINGS_CHANGED: + setup_fonts() + + +func setup_editor_colors() -> void: + if not Engine.is_editor_hint(): + return + var settings := EditorInterface.get_editor_settings() + var background_color :Color = settings.get_setting("text_editor/theme/highlighting/background_color") + var text_color :Color = settings.get_setting("text_editor/theme/highlighting/text_color") + var selection_color :Color = settings.get_setting("text_editor/theme/highlighting/selection_color") + + for e :CodeEdit in [_template_editor, _tags_editor]: + var editor :CodeEdit = e + editor.add_theme_color_override("background_color", background_color) + editor.add_theme_color_override("font_color", text_color) + editor.add_theme_color_override("font_readonly_color", text_color) + editor.add_theme_color_override("font_selected_color", selection_color) + setup_highlighter(editor, settings) + + +func setup_highlighter(editor :CodeEdit, settings :EditorSettings) -> void: + var highlighter := CodeHighlighter.new() + editor.set_syntax_highlighter(highlighter) + var number_color :Color = settings.get_setting("text_editor/theme/highlighting/number_color") + var symbol_color :Color = settings.get_setting("text_editor/theme/highlighting/symbol_color") + var function_color :Color = settings.get_setting("text_editor/theme/highlighting/function_color") + var member_variable_color :Color = settings.get_setting("text_editor/theme/highlighting/member_variable_color") + var comment_color :Color = settings.get_setting("text_editor/theme/highlighting/comment_color") + var keyword_color :Color = settings.get_setting("text_editor/theme/highlighting/keyword_color") + var base_type_color :Color = settings.get_setting("text_editor/theme/highlighting/base_type_color") + var annotation_color :Color = settings.get_setting("text_editor/theme/highlighting/gdscript/annotation_color") + + highlighter.clear_color_regions() + highlighter.clear_keyword_colors() + highlighter.add_color_region("#", "", comment_color, true) + highlighter.add_color_region("${", "}", Color.YELLOW) + highlighter.add_color_region("'", "'", Color.YELLOW) + highlighter.add_color_region("\"", "\"", Color.YELLOW) + highlighter.number_color = number_color + highlighter.symbol_color = symbol_color + highlighter.function_color = function_color + highlighter.member_variable_color = member_variable_color + highlighter.add_keyword_color("@", annotation_color) + highlighter.add_keyword_color("warning_ignore", annotation_color) + for word in gd_key_words: + highlighter.add_keyword_color(word, keyword_color) + for word in gdunit_key_words: + highlighter.add_keyword_color(word, base_type_color) + + +func setup_fonts() -> void: + if _template_editor: + GdUnitFonts.init_fonts(_template_editor) + var font_size := GdUnitFonts.init_fonts(_tags_editor) + _title_bar.size.y = font_size + 16 + _title_bar.custom_minimum_size.y = font_size + 16 + + +func setup_supported_types() -> void: + _selected_type.clear() + _selected_type.add_item("GD - GDScript", GdUnitTestSuiteTemplate.TEMPLATE_ID_GD) + _selected_type.add_item("C# - CSharpScript", GdUnitTestSuiteTemplate.TEMPLATE_ID_CS) + + +func setup_tags_help() -> void: + _tags_editor.set_text(GdUnitTestSuiteTemplate.load_tags(_selected_template)) + + +func load_template(template_id :int) -> void: + _selected_template = template_id + _template_editor.set_text(GdUnitTestSuiteTemplate.load_template(template_id)) + + +func _on_Restore_pressed() -> void: + _template_editor.set_text(GdUnitTestSuiteTemplate.default_template(_selected_template)) + GdUnitTestSuiteTemplate.reset_to_default(_selected_template) + _save_button.disabled = true + + +func _on_Save_pressed() -> void: + GdUnitTestSuiteTemplate.save_template(_selected_template, _template_editor.get_text()) + _save_button.disabled = true + + +func _on_Tags_pressed() -> void: + _show_tags.popup_centered_ratio(.5) + + +func _on_Editor_text_changed() -> void: + _save_button.disabled = false + + +func _on_SelectType_item_selected(index :int) -> void: + load_template(_selected_type.get_item_id(index)) + setup_tags_help() diff --git a/addons/gdUnit4/src/ui/templates/TestSuiteTemplate.tscn b/addons/gdUnit4/src/ui/templates/TestSuiteTemplate.tscn new file mode 100644 index 0000000..5ccc443 --- /dev/null +++ b/addons/gdUnit4/src/ui/templates/TestSuiteTemplate.tscn @@ -0,0 +1,127 @@ +[gd_scene load_steps=2 format=3 uid="uid://dte0m2endcgtu"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/ui/templates/TestSuiteTemplate.gd" id="1"] + +[node name="TestSuiteTemplate" type="MarginContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="sub_category" type="Panel" parent="VBoxContainer"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="VBoxContainer/sub_category"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_right = 4.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Test Suite Template +" + +[node name="EdiorLayout" type="VBoxContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Editor" type="CodeEdit" parent="VBoxContainer/EdiorLayout"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/EdiorLayout/Editor"] +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -31.0 +grow_horizontal = 2 +grow_vertical = 0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/EdiorLayout/Editor/MarginContainer"] +layout_mode = 2 +size_flags_vertical = 8 +alignment = 2 + +[node name="Tags" type="Button" parent="VBoxContainer/EdiorLayout/Editor/MarginContainer/HBoxContainer"] +layout_mode = 2 +tooltip_text = "Shows supported tags." +text = "Supported Tags" + +[node name="SelectType" type="OptionButton" parent="VBoxContainer/EdiorLayout/Editor/MarginContainer/HBoxContainer"] +layout_mode = 2 +tooltip_text = "Select the script type specific template." +item_count = 2 +selected = 0 +popup/item_0/text = "GD - GDScript" +popup/item_0/id = 1000 +popup/item_1/text = "C# - CSharpScript" +popup/item_1/id = 2000 + +[node name="Panel" type="MarginContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/Panel"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 2 + +[node name="Restore" type="Button" parent="VBoxContainer/Panel/HBoxContainer"] +layout_mode = 2 +text = "Restore" + +[node name="Save" type="Button" parent="VBoxContainer/Panel/HBoxContainer"] +layout_mode = 2 +disabled = true +text = "Save" + +[node name="Tags" type="PopupPanel" parent="."] +size = Vector2i(300, 100) +unresizable = false +content_scale_aspect = 4 + +[node name="MarginContainer" type="MarginContainer" parent="Tags"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = -856.0 +offset_bottom = -552.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TextEdit" type="CodeEdit" parent="Tags/MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +editable = false +context_menu_enabled = false +shortcut_keys_enabled = false +virtual_keyboard_enabled = false + +[connection signal="text_changed" from="VBoxContainer/EdiorLayout/Editor" to="." method="_on_Editor_text_changed"] +[connection signal="pressed" from="VBoxContainer/EdiorLayout/Editor/MarginContainer/HBoxContainer/Tags" to="." method="_on_Tags_pressed"] +[connection signal="item_selected" from="VBoxContainer/EdiorLayout/Editor/MarginContainer/HBoxContainer/SelectType" to="." method="_on_SelectType_item_selected"] +[connection signal="pressed" from="VBoxContainer/Panel/HBoxContainer/Restore" to="." method="_on_Restore_pressed"] +[connection signal="pressed" from="VBoxContainer/Panel/HBoxContainer/Save" to="." method="_on_Save_pressed"] diff --git a/addons/gdUnit4/src/update/GdMarkDownReader.gd b/addons/gdUnit4/src/update/GdMarkDownReader.gd new file mode 100644 index 0000000..6a6594b --- /dev/null +++ b/addons/gdUnit4/src/update/GdMarkDownReader.gd @@ -0,0 +1,339 @@ +extends RefCounted + +const GdUnitUpdateClient = preload("res://addons/gdUnit4/src/update/GdUnitUpdateClient.gd") + +const FONT_H1 := 32 +const FONT_H2 := 28 +const FONT_H3 := 24 +const FONT_H4 := 20 +const FONT_H5 := 16 +const FONT_H6 := 12 + +const HORIZONTAL_RULE := "[img=4000x2]res://addons/gdUnit4/src/update/assets/horizontal-line2.png[/img]\n" +const HEADER_RULE := "[font_size=%d]$1[/font_size]\n" +const HEADER_CENTERED_RULE := "[font_size=%d][center]$1[/center][/font_size]\n" + +const image_download_folder := "res://addons/gdUnit4/tmp-update/" + +const exclude_font_size := "\b(?!(?:(font_size))\b)" + +var md_replace_patterns := [ + # horizontal rules + [regex("(?m)^[ ]{0,3}---$"), HORIZONTAL_RULE], + [regex("(?m)^[ ]{0,3}___$"), HORIZONTAL_RULE], + [regex("(?m)^[ ]{0,3}\\*\\*\\*$"), HORIZONTAL_RULE], + + # headers + [regex("(?m)^###### (.*)"), HEADER_RULE % FONT_H6], + [regex("(?m)^##### (.*)"), HEADER_RULE % FONT_H5], + [regex("(?m)^#### (.*)"), HEADER_RULE % FONT_H4], + [regex("(?m)^### (.*)"), HEADER_RULE % FONT_H3], + [regex("(?m)^## (.*)"), (HEADER_RULE + HORIZONTAL_RULE) % FONT_H2], + [regex("(?m)^# (.*)"), (HEADER_RULE + HORIZONTAL_RULE) % FONT_H1], + [regex("(?m)^(.+)=={2,}$"), HEADER_RULE % FONT_H1], + [regex("(?m)^(.+)--{2,}$"), HEADER_RULE % FONT_H2], + # html headers + [regex("

((.*?\\R?)+)<\\/h1>"), (HEADER_RULE + HORIZONTAL_RULE) % FONT_H1], + [regex("((.*?\\R?)+)<\\/h1>"), (HEADER_CENTERED_RULE + HORIZONTAL_RULE) % FONT_H1], + [regex("

((.*?\\R?)+)<\\/h2>"), (HEADER_RULE + HORIZONTAL_RULE) % FONT_H2], + [regex("((.*?\\R?)+)<\\/h2>"), (HEADER_CENTERED_RULE + HORIZONTAL_RULE) % FONT_H1], + [regex("

((.*?\\R?)+)<\\/h3>"), HEADER_RULE % FONT_H3], + [regex("((.*?\\R?)+)<\\/h3>"), HEADER_CENTERED_RULE % FONT_H3], + [regex("

((.*?\\R?)+)<\\/h4>"), HEADER_RULE % FONT_H4], + [regex("((.*?\\R?)+)<\\/h4>"), HEADER_CENTERED_RULE % FONT_H4], + [regex("
((.*?\\R?)+)<\\/h5>"), HEADER_RULE % FONT_H5], + [regex("((.*?\\R?)+)<\\/h5>"), HEADER_CENTERED_RULE % FONT_H5], + [regex("
((.*?\\R?)+)<\\/h6>"), HEADER_RULE % FONT_H6], + [regex("((.*?\\R?)+)<\\/h6>"), HEADER_CENTERED_RULE % FONT_H6], + + # asterics + #[regex("(\\*)"), "xxx$1xxx"], + + # extract/compile image references + [regex("!\\[(.*?)\\]\\[(.*?)\\]"), Callable(self, "process_image_references")], + # extract images with path and optional tool tip + [regex("!\\[(.*?)\\]\\((.*?)(( )+(.*?))?\\)"), Callable(self, "process_image")], + + # links + [regex("([!]|)\\[(.+)\\]\\(([^ ]+?)\\)"), "[url={\"url\":\"$3\"}]$2[/url]"], + # links with tool tip + [regex("([!]|)\\[(.+)\\]\\(([^ ]+?)( \"(.+)\")?\\)"), "[url={\"url\":\"$3\", \"tool_tip\":\"$5\"}]$2[/url]"], + + # embeded text + [regex("(?m)^[ ]{0,3}>(.*?)$"), "[img=50x14]res://addons/gdUnit4/src/update/assets/embedded.png[/img][i]$1[/i]"], + + # italic + bold font + [regex("[_]{3}(.*?)[_]{3}"), "[i][b]$1[/b][/i]"], + [regex("[\\*]{3}(.*?)[\\*]{3}"), "[i][b]$1[/b][/i]"], + # bold font + [regex("(.*?)<\\/b>"), "[b]$1[/b]"], + [regex("[_]{2}(.*?)[_]{2}"), "[b]$1[/b]"], + [regex("[\\*]{2}(.*?)[\\*]{2}"), "[b]$1[/b]"], + # italic font + [regex("(.*?)<\\/i>"), "[i]$1[/i]"], + [regex(exclude_font_size+"_(.*?)_"), "[i]$1[/i]"], + [regex("\\*(.*?)\\*"), "[i]$1[/i]"], + + # strikethrough font + [regex("(.*?)"), "[s]$1[/s]"], + [regex("~~(.*?)~~"), "[s]$1[/s]"], + [regex("~(.*?)~"), "[s]$1[/s]"], + + # handling lists + # using an image for dots as workaroud because list is not supported checked Godot 3.x + [regex("(?m)^[ ]{0,1}[*\\-+] (.*)$"), list_replace(0)], + [regex("(?m)^[ ]{2,3}[*\\-+] (.*)$"), list_replace(1)], + [regex("(?m)^[ ]{4,5}[*\\-+] (.*)$"), list_replace(2)], + [regex("(?m)^[ ]{6,7}[*\\-+] (.*)$"), list_replace(3)], + [regex("(?m)^[ ]{8,9}[*\\-+] (.*)$"), list_replace(4)], + + # code blocks, code blocks looks not like code blocks in richtext + [regex("```(javascript|python|shell|gdscript)([\\s\\S]*?\n)```"), code_block("$2", true)], + [regex("``([\\s\\S]*?)``"), code_block("$1")], + [regex("`([\\s\\S]*?)`{1,2}"), code_block("$1")], +] + +var _img_replace_regex := RegEx.new() +var _image_urls := PackedStringArray() +var _on_table_tag := false +var _client :GdUnitUpdateClient + + +func regex(pattern :String) -> RegEx: + var regex_ := RegEx.new() + var err := regex_.compile(pattern) + if err != OK: + push_error("error '%s' checked pattern '%s'" % [err, pattern]) + return null + return regex_ + + +func _init() -> void: + _img_replace_regex.compile("\\[img\\]((.*?))\\[/img\\]") + + +func set_http_client(client :GdUnitUpdateClient) -> void: + _client = client + + +func _notification(what :int) -> void: + if what == NOTIFICATION_PREDELETE: + # finally remove_at the downloaded images + for image in _image_urls: + DirAccess.remove_absolute(image) + DirAccess.remove_absolute(image + ".import") + + +func list_replace(indent :int) -> String: + var replace_pattern := "[img=12x12]res://addons/gdUnit4/src/update/assets/dot2.png[/img]" if indent %2 else "[img=12x12]res://addons/gdUnit4/src/update/assets/dot1.png[/img]" + replace_pattern += " $1" + + for index in indent: + replace_pattern = replace_pattern.insert(0, " ") + return replace_pattern + + +func code_block(replace :String, border :bool = false) -> String: + var cb := "[code][color=aqua][font_size=16]%s[/font_size][/color][/code]" % replace + if border: + return "[img=1400x14]res://addons/gdUnit4/src/update/assets/border_top.png[/img]"\ + + "[indent]" + cb + "[/indent]"\ + + "[img=1400x14]res://addons/gdUnit4/src/update/assets/border_bottom.png[/img]\n" + return cb + + +func to_bbcode(input :String) -> String: + input = process_tables(input) + + for pattern :Array in md_replace_patterns: + var regex_ :RegEx = pattern[0] + var bb_replace :Variant = pattern[1] + if bb_replace is Callable: + input = await bb_replace.call(regex_, input) + else: + input = regex_.sub(input, bb_replace, true) + return input + "\n" + + +func process_tables(input :String) -> String: + var bbcode := Array() + var lines := Array(input.split("\n")) + while not lines.is_empty(): + if is_table(lines[0]): + bbcode.append_array(parse_table(lines)) + continue + bbcode.append(lines.pop_front()) + return "\n".join(PackedStringArray(bbcode)) + + +class Table: + var _columns :int + var _rows := Array() + + class Row: + var _cells := PackedStringArray() + + func _init(cells :PackedStringArray, columns :int) -> void: + _cells = cells + for i in range(_cells.size(), columns): + _cells.append("") + + func to_bbcode(cell_sizes :PackedInt32Array, bold :bool) -> String: + var cells := PackedStringArray() + for cell_index in _cells.size(): + var cell :String = _cells[cell_index] + if cell.strip_edges() == "--": + cell = create_line(cell_sizes[cell_index]) + if bold: + cell = "[b]%s[/b]" % cell + cells.append("[cell]%s[/cell]" % cell) + return "|".join(cells) + + func create_line(length :int) -> String: + var line := "" + for i in length: + line += "-" + return line + + func _init(columns :int) -> void: + _columns = columns + + func parse_row(line :String) -> bool: + # is line containing cells? + if line.find("|") == -1: + return false + _rows.append(Row.new(line.split("|"), _columns)) + return true + + func calculate_max_cell_sizes() -> PackedInt32Array: + var cells_size := PackedInt32Array() + for column in _columns: + cells_size.append(0) + + for row_index in _rows.size(): + var row :Row = _rows[row_index] + for cell_index in row._cells.size(): + var cell_size :int = cells_size[cell_index] + var size := row._cells[cell_index].length() + if size > cell_size: + cells_size[cell_index] = size + return cells_size + + func to_bbcode() -> PackedStringArray: + var cell_sizes := calculate_max_cell_sizes() + var bb_code := PackedStringArray() + + bb_code.append("[table=%d]" % _columns) + for row_index in _rows.size(): + bb_code.append(_rows[row_index].to_bbcode(cell_sizes, row_index==0)) + bb_code.append("[/table]\n") + return bb_code + + +func parse_table(lines :Array) -> PackedStringArray: + var line :String = lines[0] + var table := Table.new(line.count("|") + 1) + while not lines.is_empty(): + line = lines.pop_front() + if not table.parse_row(line): + break + return table.to_bbcode() + + +func is_table(line :String) -> bool: + return line.find("|") != -1 + + +func open_table(line :String) -> String: + _on_table_tag = true + return "[table=%d]" % (line.count("|") + 1) + + +func close_table() -> String: + _on_table_tag = false + return "[/table]" + + +func extract_cells(line :String, bold := false) -> String: + var cells := "" + for cell in line.split("|"): + if bold: + cell = "[b]%s[/b]" % cell + cells += "[cell]%s[/cell]" % cell + return cells + + +func process_image_references(p_regex :RegEx, p_input :String) -> String: + # exists references? + var matches := p_regex.search_all(p_input) + if matches.is_empty(): + return p_input + # collect image references and remove_at it + var references := Dictionary() + var link_regex := regex("\\[(\\S+)\\]:(\\S+)([ ]\"(.*)\")?") + # create copy of original source to replace checked it + var input := p_input.replace("\r", "") + var extracted_references := p_input.replace("\r", "") + for reg_match in link_regex.search_all(input): + var line := reg_match.get_string(0) + "\n" + var ref := reg_match.get_string(1) + #var topl_tip = reg_match.get_string(4) + # collect reference and url + references[ref] = reg_match.get_string(2) + extracted_references = extracted_references.replace(line, "") + + # replace image references by collected url's + for reference_key :String in references.keys(): + var regex_key := regex("\\](\\[%s\\])" % reference_key) + for reg_match in regex_key.search_all(extracted_references): + var ref :String = reg_match.get_string(0) + var image_url :String = "](%s)" % references.get(reference_key) + extracted_references = extracted_references.replace(ref, image_url) + return extracted_references + + +func process_image(p_regex :RegEx, p_input :String) -> String: + var to_replace := PackedStringArray() + var tool_tips := PackedStringArray() + # find all matches + var matches := p_regex.search_all(p_input) + if matches.is_empty(): + return p_input + for reg_match in matches: + # grap the parts to replace and store temporay because a direct replace will distort the offsets + to_replace.append(p_input.substr(reg_match.get_start(0), reg_match.get_end(0))) + # grap optional tool tips + tool_tips.append(reg_match.get_string(5)) + # finally replace all findings + for replace in to_replace: + var re := p_regex.sub(replace, "[img]$2[/img]") + p_input = p_input.replace(replace, re) + return await _process_external_image_resources(p_input) + + +func _process_external_image_resources(input :String) -> String: + DirAccess.make_dir_recursive_absolute(image_download_folder) + # scan all img for external resources and download it + for value in _img_replace_regex.search_all(input): + if value.get_group_count() >= 1: + var image_url :String = value.get_string(1) + # if not a local resource we need to download it + if image_url.begins_with("http"): + if OS.is_stdout_verbose(): + prints("download image:", image_url) + var response := await _client.request_image(image_url) + if response.code() == 200: + var image := Image.new() + var error := image.load_png_from_buffer(response.body()) + if error != OK: + prints("Error creating image from response", error) + # replace characters where format characters + var new_url := image_download_folder + image_url.get_file().replace("_", "-") + if new_url.get_extension() != 'png': + new_url = new_url + '.png' + var err := image.save_png(new_url) + if err: + push_error("Can't save image to '%s'. Error: %s" % [new_url, error_string(err)]) + _image_urls.append(new_url) + input = input.replace(image_url, new_url) + return input diff --git a/addons/gdUnit4/src/update/GdUnitPatch.gd b/addons/gdUnit4/src/update/GdUnitPatch.gd new file mode 100644 index 0000000..daa20f7 --- /dev/null +++ b/addons/gdUnit4/src/update/GdUnitPatch.gd @@ -0,0 +1,20 @@ +class_name GdUnitPatch +extends RefCounted + +const PATCH_VERSION = "patch_version" + +var _version :GdUnit4Version + + +func _init(version_ :GdUnit4Version) -> void: + _version = version_ + + +func version() -> GdUnit4Version: + return _version + + +# this function needs to be implement +func execute() -> bool: + push_error("The function 'execute()' is not implemented at %s" % self) + return false diff --git a/addons/gdUnit4/src/update/GdUnitPatcher.gd b/addons/gdUnit4/src/update/GdUnitPatcher.gd new file mode 100644 index 0000000..d6d5048 --- /dev/null +++ b/addons/gdUnit4/src/update/GdUnitPatcher.gd @@ -0,0 +1,71 @@ +class_name GdUnitPatcher +extends RefCounted + + +const _base_dir := "res://addons/gdUnit4/src/update/patches/" + +var _patches := Dictionary() + + +func scan(current :GdUnit4Version) -> void: + _scan(_base_dir, current) + + +func _scan(scan_path :String, current :GdUnit4Version) -> void: + _patches = Dictionary() + var patch_paths := _collect_patch_versions(scan_path, current) + for path in patch_paths: + prints("scan for patches checked '%s'" % path) + _patches[path] = _scan_patches(path) + + +func patch_count() -> int: + var count := 0 + for key :String in _patches.keys(): + count += _patches[key].size() + return count + + +func execute() -> void: + for key :String in _patches.keys(): + for path :String in _patches[key]: + var patch :GdUnitPatch = load(key + "/" + path).new() + if patch: + prints("execute patch", patch.version(), patch.get_script().resource_path) + if not patch.execute(): + prints("error checked execution patch %s" % key + "/" + path) + + +func _collect_patch_versions(scan_path :String, current :GdUnit4Version) -> PackedStringArray: + if not DirAccess.dir_exists_absolute(scan_path): + return PackedStringArray() + var patches := Array() + var dir := DirAccess.open(scan_path) + if dir != null: + dir.list_dir_begin() # TODO GODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547 + var next := "." + while next != "": + next = dir.get_next() + if next.is_empty() or next == "." or next == "..": + continue + var version := GdUnit4Version.parse(next) + if version.is_greater(current): + patches.append(scan_path + next) + patches.sort() + return PackedStringArray(patches) + + +func _scan_patches(path :String) -> PackedStringArray: + var patches := Array() + var dir := DirAccess.open(path) + if dir != null: + dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547 + var next := "." + while next != "": + next = dir.get_next() + if next.is_empty() or next == "." or next == "..": + continue + patches.append(next) + # make sorted from lowest to high version + patches.sort() + return PackedStringArray(patches) diff --git a/addons/gdUnit4/src/update/GdUnitUpdate.gd b/addons/gdUnit4/src/update/GdUnitUpdate.gd new file mode 100644 index 0000000..7b7206c --- /dev/null +++ b/addons/gdUnit4/src/update/GdUnitUpdate.gd @@ -0,0 +1,223 @@ +@tool +extends ConfirmationDialog + +const GdUnitTools := preload("res://addons/gdUnit4/src/core/GdUnitTools.gd") +const GdUnitUpdateClient := preload("res://addons/gdUnit4/src/update/GdUnitUpdateClient.gd") + +@onready var _progress_content :RichTextLabel = %message +@onready var _progress_bar :TextureProgressBar = %progress + + +var _debug_mode := false +var _update_client :GdUnitUpdateClient +var _download_url :String + + +func _ready() -> void: + message_h4("Press 'Update' to start!", Color.GREEN) + init_progress(5) + + +func _process(_delta :float) -> void: + if _progress_content != null and _progress_content.is_visible_in_tree(): + _progress_content.queue_redraw() + + +func init_progress(max_value : int) -> void: + _progress_bar.max_value = max_value + _progress_bar.value = 1 + + +func setup(update_client :GdUnitUpdateClient, download_url :String) -> void: + _update_client = update_client + _download_url = download_url + + +func update_progress(message :String) -> void: + message_h4(message, Color.GREEN) + _progress_bar.value += 1 + if _debug_mode: + await get_tree().create_timer(3).timeout + await get_tree().create_timer(.2).timeout + + +func _colored(message :String, color :Color) -> String: + return "[color=#%s]%s[/color]" % [color.to_html(), message] + + +func message_h4(message :String, color :Color) -> void: + _progress_content.clear() + _progress_content.append_text("[font_size=16]%s[/font_size]" % _colored(message, color)) + + +func run_update() -> void: + get_cancel_button().disabled = true + get_ok_button().disabled = true + + await update_progress("Download Release ... [img=24x24]%s[/img]" % GdUnitUiTools.get_spinner()) + await download_release() + await update_progress("Extract update ... [img=24x24]%s[/img]" % GdUnitUiTools.get_spinner()) + var zip_file := temp_dir() + "/update.zip" + var tmp_path := create_temp_dir("update") + var result :Variant = extract_zip(zip_file, tmp_path) + if result == null: + await update_progress("Update failed!") + await get_tree().create_timer(3).timeout + queue_free() + return + + await update_progress("Uninstall GdUnit4 ... [img=24x24]%s[/img]" % GdUnitUiTools.get_spinner()) + disable_gdUnit() + if not _debug_mode: + delete_directory("res://addons/gdUnit4/") + # give editor time to react on deleted files + await get_tree().create_timer(1).timeout + + await update_progress("Install new GdUnit4 version ...") + if _debug_mode: + copy_directory(tmp_path, "res://debug") + else: + copy_directory(tmp_path, "res://") + + await update_progress("New GdUnit version successfully installed, Restarting Godot ...") + await get_tree().create_timer(3).timeout + enable_gdUnit() + hide() + delete_directory("res://addons/.gdunit_update") + restart_godot() + + +func restart_godot() -> void: + prints("Force restart Godot") + EditorInterface.restart_editor(true) + + +func enable_gdUnit() -> void: + var enabled_plugins := PackedStringArray() + if ProjectSettings.has_setting("editor_plugins/enabled"): + enabled_plugins = ProjectSettings.get_setting("editor_plugins/enabled") + if not enabled_plugins.has("res://addons/gdUnit4/plugin.cfg"): + enabled_plugins.append("res://addons/gdUnit4/plugin.cfg") + ProjectSettings.set_setting("editor_plugins/enabled", enabled_plugins) + ProjectSettings.save() + + +func disable_gdUnit() -> void: + EditorInterface.set_plugin_enabled("gdUnit4", false) + + +const GDUNIT_TEMP := "user://tmp" + +func temp_dir() -> String: + if not DirAccess.dir_exists_absolute(GDUNIT_TEMP): + DirAccess.make_dir_recursive_absolute(GDUNIT_TEMP) + return GDUNIT_TEMP + + +func create_temp_dir(folder_name :String) -> String: + var new_folder := temp_dir() + "/" + folder_name + delete_directory(new_folder) + if not DirAccess.dir_exists_absolute(new_folder): + DirAccess.make_dir_recursive_absolute(new_folder) + return new_folder + + +func delete_directory(path :String, only_content := false) -> void: + var dir := DirAccess.open(path) + if dir != null: + dir.list_dir_begin() + var file_name := "." + while file_name != "": + file_name = dir.get_next() + if file_name.is_empty() or file_name == "." or file_name == "..": + continue + var next := path + "/" +file_name + if dir.current_is_dir(): + delete_directory(next) + else: + # delete file + var err := dir.remove(next) + if err: + push_error("Delete %s failed: %s" % [next, error_string(err)]) + if not only_content: + var err := dir.remove(path) + if err: + push_error("Delete %s failed: %s" % [path, error_string(err)]) + + +func copy_directory(from_dir :String, to_dir :String) -> bool: + if not DirAccess.dir_exists_absolute(from_dir): + push_error("Source directory not found '%s'" % from_dir) + return false + # check if destination exists + if not DirAccess.dir_exists_absolute(to_dir): + # create it + var err := DirAccess.make_dir_recursive_absolute(to_dir) + if err != OK: + push_error("Can't create directory '%s'. Error: %s" % [to_dir, error_string(err)]) + return false + var source_dir := DirAccess.open(from_dir) + var dest_dir := DirAccess.open(to_dir) + if source_dir != null: + source_dir.list_dir_begin() + var next := "." + + while next != "": + next = source_dir.get_next() + if next == "" or next == "." or next == "..": + continue + var source := source_dir.get_current_dir() + "/" + next + var dest := dest_dir.get_current_dir() + "/" + next + if source_dir.current_is_dir(): + copy_directory(source + "/", dest) + continue + var err := source_dir.copy(source, dest) + if err != OK: + push_error("Error checked copy file '%s' to '%s'" % [source, dest]) + return false + return true + else: + push_error("Directory not found: " + from_dir) + return false + + +func extract_zip(zip_package :String, dest_path :String) -> Variant: + var zip: ZIPReader = ZIPReader.new() + var err := zip.open(zip_package) + if err != OK: + push_error("Extracting `%s` failed! Please collect the error log and report this. Error Code: %s" % [zip_package, err]) + return null + var zip_entries: PackedStringArray = zip.get_files() + # Get base path and step over archive folder + var archive_path := zip_entries[0] + zip_entries.remove_at(0) + + for zip_entry in zip_entries: + var new_file_path: String = dest_path + "/" + zip_entry.replace(archive_path, "") + if zip_entry.ends_with("/"): + DirAccess.make_dir_recursive_absolute(new_file_path) + continue + var file: FileAccess = FileAccess.open(new_file_path, FileAccess.WRITE) + file.store_buffer(zip.read_file(zip_entry)) + zip.close() + return dest_path + + +func download_release() -> void: + var zip_file := GdUnitFileAccess.temp_dir() + "/update.zip" + var response :GdUnitUpdateClient.HttpResponse + if _debug_mode: + response = GdUnitUpdateClient.HttpResponse.new(200, PackedByteArray()) + zip_file = "res://update.zip" + else: + response = await _update_client.request_zip_package(_download_url, zip_file) + _update_client.queue_free() + if response.code() != 200: + push_warning("Update information cannot be retrieved from GitHub! \n Error code: %d : %s" % [response.code(), response.response()]) + message_h4("Update failed! Try it later again.", Color.RED) + await get_tree().create_timer(3).timeout + return + + +func _on_confirmed() -> void: + await run_update() diff --git a/addons/gdUnit4/src/update/GdUnitUpdate.tscn b/addons/gdUnit4/src/update/GdUnitUpdate.tscn new file mode 100644 index 0000000..81fff38 --- /dev/null +++ b/addons/gdUnit4/src/update/GdUnitUpdate.tscn @@ -0,0 +1,74 @@ +[gd_scene load_steps=3 format=3 uid="uid://2eahgaw88y6q"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/update/GdUnitUpdate.gd" id="1"] +[ext_resource type="Texture2D" uid="uid://cwxuep3lbnu3p" path="res://addons/gdUnit4/src/update/assets/progress-background.png" id="2_q6rkd"] + +[node name="GdUnitUpdate" type="ConfirmationDialog"] +disable_3d = true +title = "Update GdUnit4 to new version" +size = Vector2i(1000, 141) +visible = true +extend_to_title = true +min_size = Vector2i(1000, 140) +ok_button_text = "Update" +dialog_hide_on_ok = false +script = ExtResource("1") + +[node name="UpdateProgress" type="PanelContainer" parent="."] +custom_minimum_size = Vector2(0, 80) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 8.0 +offset_top = 8.0 +offset_right = -8.0 +offset_bottom = -49.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="UpdateProgress"] +layout_mode = 2 + +[node name="Panel" type="Panel" parent="UpdateProgress/VBoxContainer"] +custom_minimum_size = Vector2(0, 40) +layout_mode = 2 + +[node name="message" type="RichTextLabel" parent="UpdateProgress/VBoxContainer/Panel"] +unique_name_in_owner = true +custom_minimum_size = Vector2(400, 40) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +bbcode_enabled = true +fit_content = true +scroll_active = false +shortcut_keys_enabled = false + +[node name="Panel2" type="Panel" parent="UpdateProgress/VBoxContainer"] +custom_minimum_size = Vector2(0, 40) +layout_mode = 2 + +[node name="progress" type="TextureProgressBar" parent="UpdateProgress/VBoxContainer/Panel2"] +unique_name_in_owner = true +clip_contents = true +custom_minimum_size = Vector2(980, 30) +layout_mode = 0 +offset_left = 2.0 +offset_right = 982.0 +offset_bottom = 36.0 +auto_translate = false +localize_numeral_system = false +min_value = 1.0 +max_value = 5.0 +value = 1.0 +rounded = true +nine_patch_stretch = true +texture_progress = ExtResource("2_q6rkd") +texture_progress_offset = Vector2(0, 2) + +[connection signal="confirmed" from="." to="." method="_on_confirmed"] diff --git a/addons/gdUnit4/src/update/GdUnitUpdateClient.gd b/addons/gdUnit4/src/update/GdUnitUpdateClient.gd new file mode 100644 index 0000000..a3f56ce --- /dev/null +++ b/addons/gdUnit4/src/update/GdUnitUpdateClient.gd @@ -0,0 +1,83 @@ +@tool +extends Node + +signal request_completed(response :HttpResponse) + +class HttpResponse: + var _code :int + var _body :PackedByteArray + + + func _init(code_ :int, body_ :PackedByteArray) -> void: + _code = code_ + _body = body_ + + func code() -> int: + return _code + + func response() -> Variant: + var test_json_conv := JSON.new() + test_json_conv.parse(_body.get_string_from_utf8()) + return test_json_conv.get_data() + + func body() -> PackedByteArray: + return _body + +var _http_request :HTTPRequest = HTTPRequest.new() + + +func _ready() -> void: + add_child(_http_request) + _http_request.request_completed.connect(_on_request_completed) + + +func _notification(what :int) -> void: + if what == NOTIFICATION_PREDELETE: + if is_instance_valid(_http_request): + _http_request.queue_free() + + +#func list_tags() -> void: +# _http_request.connect("request_completed",Callable(self,"_response_request_tags")) +# var error = _http_request.request("https://api.github.com/repos/MikeSchulze/gdUnit4/tags") +# if error != OK: +# push_error("An error occurred in the HTTP request.") + + +func request_latest_version() -> HttpResponse: + var error := _http_request.request("https://api.github.com/repos/MikeSchulze/gdUnit4/tags") + if error != OK: + var message := "request_latest_version failed: %d" % error + return HttpResponse.new(error, message.to_utf8_buffer()) + return await self.request_completed + + +func request_releases() -> HttpResponse: + var error := _http_request.request("https://api.github.com/repos/MikeSchulze/gdUnit4/releases") + if error != OK: + var message := "request_releases failed: %d" % error + return HttpResponse.new(error, message.to_utf8_buffer()) + return await self.request_completed + + +func request_image(url :String) -> HttpResponse: + var error := _http_request.request(url) + if error != OK: + var message := "request_image failed: %d" % error + return HttpResponse.new(error, message.to_utf8_buffer()) + return await self.request_completed + + +func request_zip_package(url :String, file :String) -> HttpResponse: + _http_request.set_download_file(file) + var error := _http_request.request(url) + if error != OK: + var message := "request_zip_package failed: %d" % error + return HttpResponse.new(error, message.to_utf8_buffer()) + return await self.request_completed + + +func _on_request_completed(_result :int, response_code :int, _headers :PackedStringArray, body :PackedByteArray) -> void: + if _http_request.get_http_client_status() != HTTPClient.STATUS_DISCONNECTED: + _http_request.set_download_file("") + request_completed.emit(HttpResponse.new(response_code, body)) diff --git a/addons/gdUnit4/src/update/GdUnitUpdateNotify.gd b/addons/gdUnit4/src/update/GdUnitUpdateNotify.gd new file mode 100644 index 0000000..67acabb --- /dev/null +++ b/addons/gdUnit4/src/update/GdUnitUpdateNotify.gd @@ -0,0 +1,177 @@ +@tool +extends Window + +#signal request_completed(response) + +const GdMarkDownReader = preload("res://addons/gdUnit4/src/update/GdMarkDownReader.gd") +const GdUnitUpdateClient = preload("res://addons/gdUnit4/src/update/GdUnitUpdateClient.gd") + +@onready var _md_reader :GdMarkDownReader = GdMarkDownReader.new() +@onready var _update_client :GdUnitUpdateClient = $GdUnitUpdateClient +@onready var _header :Label = $Panel/GridContainer/PanelContainer/header +@onready var _update_button :Button = $Panel/GridContainer/Panel/HBoxContainer/update +@onready var _content :RichTextLabel = $Panel/GridContainer/PanelContainer2/ScrollContainer/MarginContainer/content + +var _debug_mode := false +var _patcher :GdUnitPatcher = GdUnitPatcher.new() +var _current_version := GdUnit4Version.current() +var _download_zip_url :String + + +func _ready() -> void: + _update_button.disabled = true + _md_reader.set_http_client(_update_client) + GdUnitFonts.init_fonts(_content) + await request_releases() + + +func request_releases() -> void: + if _debug_mode: + _header.text = "A new version 'v4.1.0_debug' is available" + await show_update() + return + + # wait 20s to allow the editor to initialize itself + await get_tree().create_timer(20).timeout + var response :GdUnitUpdateClient.HttpResponse = await _update_client.request_latest_version() + if response.code() != 200: + push_warning("Update information cannot be retrieved from GitHub! \n %s" % response.response()) + return + var latest_version := extract_latest_version(response) + # if same version exit here no update need + if latest_version.is_greater(_current_version): + _patcher.scan(_current_version) + _header.text = "A new version '%s' is available" % latest_version + _download_zip_url = extract_zip_url(response) + await show_update() + + +func _colored(message_ :String, color :Color) -> String: + return "[color=#%s]%s[/color]" % [color.to_html(), message_] + + +func message_h4(message_ :String, color :Color, clear := true) -> void: + if clear: + _content.clear() + _content.append_text("[font_size=16]%s[/font_size]" % _colored(message_, color)) + + +func message(message_ :String, color :Color) -> void: + _content.clear() + _content.append_text(_colored(message_, color)) + + +func _process(_delta :float) -> void: + if _content != null and _content.is_visible_in_tree(): + _content.queue_redraw() + + +func show_update() -> void: + message_h4("\n\n\nRequest release infos ... [img=24x24]%s[/img]" % GdUnitUiTools.get_spinner(), Color.SNOW) + popup_centered_ratio(.5) + prints("Scan for GdUnit4 Update ...") + var content :String + if _debug_mode: + var template := FileAccess.open("res://addons/gdUnit4/test/update/resources/markdown.txt", FileAccess.READ).get_as_text() + content = await _md_reader.to_bbcode(template) + else: + var response :GdUnitUpdateClient.HttpResponse = await _update_client.request_releases() + if response.code() == 200: + content = await extract_releases(response, _current_version) + else: + message_h4("\n\n\nError checked request available releases!", Color.RED) + return + + # finally force rescan to import images as textures + if Engine.is_editor_hint(): + await rescan() + message(content, Color.DODGER_BLUE) + _update_button.set_disabled(false) + + +func extract_latest_version(response :GdUnitUpdateClient.HttpResponse) -> GdUnit4Version: + var body :Array = response.response() + return GdUnit4Version.parse(body[0]["name"]) + + +func extract_zip_url(response :GdUnitUpdateClient.HttpResponse) -> String: + var body :Array = response.response() + return body[0]["zipball_url"] + + +func extract_releases(response :GdUnitUpdateClient.HttpResponse, current_version :GdUnit4Version) -> String: + await get_tree().process_frame + var result := "" + for release :Dictionary in response.response(): + if GdUnit4Version.parse(release["tag_name"]).equals(current_version): + break + var release_description :String = release["body"] + result += await _md_reader.to_bbcode(release_description) + return result + + +func rescan() -> void: + if Engine.is_editor_hint(): + if OS.is_stdout_verbose(): + prints(".. reimport release resources") + var fs := EditorInterface.get_resource_filesystem() + fs.scan() + while fs.is_scanning(): + if OS.is_stdout_verbose(): + progressBar(fs.get_scanning_progress() * 100 as int) + await Engine.get_main_loop().process_frame + await Engine.get_main_loop().process_frame + await get_tree().create_timer(1).timeout + + +func progressBar(p_progress :int) -> void: + if p_progress < 0: + p_progress = 0 + if p_progress > 100: + p_progress = 100 + printraw("scan [%-50s] %-3d%%\r" % ["".lpad(int(p_progress/2.0), "#").rpad(50, "-"), p_progress]) + + +func _on_update_pressed() -> void: + _update_button.set_disabled(true) + # close all opend scripts before start the update + if not _debug_mode: + ScriptEditorControls.close_open_editor_scripts() + # copy update source to a temp because the update is deleting the whole gdUnit folder + DirAccess.make_dir_absolute("res://addons/.gdunit_update") + DirAccess.copy_absolute("res://addons/gdUnit4/src/update/GdUnitUpdate.tscn", "res://addons/.gdunit_update/GdUnitUpdate.tscn") + DirAccess.copy_absolute("res://addons/gdUnit4/src/update/GdUnitUpdate.gd", "res://addons/.gdunit_update/GdUnitUpdate.gd") + var source := FileAccess.open("res://addons/gdUnit4/src/update/GdUnitUpdate.tscn", FileAccess.READ) + var content := source.get_as_text().replace("res://addons/gdUnit4/src/update/GdUnitUpdate.gd", "res://addons/.gdunit_update/GdUnitUpdate.gd") + var dest := FileAccess.open("res://addons/.gdunit_update/GdUnitUpdate.tscn", FileAccess.WRITE) + dest.store_string(content) + hide() + var update :Variant = load("res://addons/.gdunit_update/GdUnitUpdate.tscn").instantiate() + update.setup(_update_client, _download_zip_url) + Engine.get_main_loop().root.add_child(update) + update.popup_centered() + + +func _on_show_next_toggled(enabled :bool) -> void: + GdUnitSettings.set_update_notification(enabled) + + +func _on_cancel_pressed() -> void: + hide() + + +func _on_content_meta_clicked(meta :String) -> void: + var properties :Variant = str_to_var(meta) + if properties.has("url"): + OS.shell_open(properties.get("url")) + + +func _on_content_meta_hover_started(meta :String) -> void: + var properties :Variant = str_to_var(meta) + if properties.has("tool_tip"): + _content.set_tooltip_text(properties.get("tool_tip")) + + +@warning_ignore("unused_parameter") +func _on_content_meta_hover_ended(meta :String) -> void: + _content.set_tooltip_text("") diff --git a/addons/gdUnit4/src/update/GdUnitUpdateNotify.tscn b/addons/gdUnit4/src/update/GdUnitUpdateNotify.tscn new file mode 100644 index 0000000..11993eb --- /dev/null +++ b/addons/gdUnit4/src/update/GdUnitUpdateNotify.tscn @@ -0,0 +1,114 @@ +[gd_scene load_steps=3 format=3 uid="uid://0xyeci1tqebj"] + +[ext_resource type="Script" path="res://addons/gdUnit4/src/update/GdUnitUpdateNotify.gd" id="1_112wo"] +[ext_resource type="Script" path="res://addons/gdUnit4/src/update/GdUnitUpdateClient.gd" id="2_18asx"] + +[node name="Control" type="Window"] +disable_3d = true +gui_embed_subwindows = true +initial_position = 1 +title = "GdUnit Update Notification" +size = Vector2i(800, 400) +visible = false +wrap_controls = true +transient = true +exclusive = true +min_size = Vector2i(800, 400) +script = ExtResource("1_112wo") + +[node name="GdUnitUpdateClient" type="Node" parent="."] +script = ExtResource("2_18asx") + +[node name="Panel" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="GridContainer" type="VBoxContainer" parent="Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="PanelContainer" type="MarginContainer" parent="Panel/GridContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="header" type="Label" parent="Panel/GridContainer/PanelContainer"] +layout_mode = 2 +size_flags_horizontal = 9 + +[node name="PanelContainer2" type="PanelContainer" parent="Panel/GridContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/GridContainer/PanelContainer2"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MarginContainer" type="MarginContainer" parent="Panel/GridContainer/PanelContainer2/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="content" type="RichTextLabel" parent="Panel/GridContainer/PanelContainer2/ScrollContainer/MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +bbcode_enabled = true + +[node name="Panel" type="MarginContainer" parent="Panel/GridContainer"] +layout_mode = 2 +size_flags_vertical = 4 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/GridContainer/Panel"] +use_parent_material = true +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="show_next" type="CheckBox" parent="Panel/GridContainer/Panel/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +text = "show next time" + +[node name="update" type="Button" parent="Panel/GridContainer/Panel/HBoxContainer"] +custom_minimum_size = Vector2(100, 40) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +disabled = true +text = "Update" + +[node name="close" type="Button" parent="Panel/GridContainer/Panel/HBoxContainer"] +custom_minimum_size = Vector2(100, 40) +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 4 +text = "Close" + +[connection signal="meta_clicked" from="Panel/GridContainer/PanelContainer2/ScrollContainer/MarginContainer/content" to="." method="_on_content_meta_clicked"] +[connection signal="meta_hover_ended" from="Panel/GridContainer/PanelContainer2/ScrollContainer/MarginContainer/content" to="." method="_on_content_meta_hover_ended"] +[connection signal="meta_hover_started" from="Panel/GridContainer/PanelContainer2/ScrollContainer/MarginContainer/content" to="." method="_on_content_meta_hover_started"] +[connection signal="toggled" from="Panel/GridContainer/Panel/HBoxContainer/show_next" to="." method="_on_show_next_toggled"] +[connection signal="pressed" from="Panel/GridContainer/Panel/HBoxContainer/update" to="." method="_on_update_pressed"] +[connection signal="pressed" from="Panel/GridContainer/Panel/HBoxContainer/close" to="." method="_on_cancel_pressed"] diff --git a/addons/gdUnit4/src/update/assets/border_bottom.png b/addons/gdUnit4/src/update/assets/border_bottom.png new file mode 100644 index 0000000..aa16bb7 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/border_bottom.png differ diff --git a/addons/gdUnit4/src/update/assets/border_bottom.png.import b/addons/gdUnit4/src/update/assets/border_bottom.png.import new file mode 100644 index 0000000..70e9a02 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/border_bottom.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmv3ld2otx1e2" +path="res://.godot/imported/border_bottom.png-30d66a4c67e3a03ad191e37cdf16549d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/border_bottom.png" +dest_files=["res://.godot/imported/border_bottom.png-30d66a4c67e3a03ad191e37cdf16549d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/src/update/assets/border_top.png b/addons/gdUnit4/src/update/assets/border_top.png new file mode 100644 index 0000000..b1b1039 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/border_top.png differ diff --git a/addons/gdUnit4/src/update/assets/border_top.png.import b/addons/gdUnit4/src/update/assets/border_top.png.import new file mode 100644 index 0000000..814882a --- /dev/null +++ b/addons/gdUnit4/src/update/assets/border_top.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4sio0j5om50s" +path="res://.godot/imported/border_top.png-c47cbebdb755144731c6ae309e18bbaa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/border_top.png" +dest_files=["res://.godot/imported/border_top.png-c47cbebdb755144731c6ae309e18bbaa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/src/update/assets/dot1.png b/addons/gdUnit4/src/update/assets/dot1.png new file mode 100644 index 0000000..d5ea77b Binary files /dev/null and b/addons/gdUnit4/src/update/assets/dot1.png differ diff --git a/addons/gdUnit4/src/update/assets/dot1.png.import b/addons/gdUnit4/src/update/assets/dot1.png.import new file mode 100644 index 0000000..f01f709 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/dot1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ce2eojg0pwpov" +path="res://.godot/imported/dot1.png-380baf1b5247addda93bce3c799aa4e7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/dot1.png" +dest_files=["res://.godot/imported/dot1.png-380baf1b5247addda93bce3c799aa4e7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/src/update/assets/dot2.png b/addons/gdUnit4/src/update/assets/dot2.png new file mode 100644 index 0000000..4a74498 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/dot2.png differ diff --git a/addons/gdUnit4/src/update/assets/dot2.png.import b/addons/gdUnit4/src/update/assets/dot2.png.import new file mode 100644 index 0000000..f1e1017 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/dot2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvwa5lg3qj0e2" +path="res://.godot/imported/dot2.png-86a9db80ef4413e353c4339ad8f68a5f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/dot2.png" +dest_files=["res://.godot/imported/dot2.png-86a9db80ef4413e353c4339ad8f68a5f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/src/update/assets/embedded.png b/addons/gdUnit4/src/update/assets/embedded.png new file mode 100644 index 0000000..15cb9ab Binary files /dev/null and b/addons/gdUnit4/src/update/assets/embedded.png differ diff --git a/addons/gdUnit4/src/update/assets/embedded.png.import b/addons/gdUnit4/src/update/assets/embedded.png.import new file mode 100644 index 0000000..26f3726 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/embedded.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://63wk5nib3r7q" +path="res://.godot/imported/embedded.png-29390948772209a603567d24f8766495.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/embedded.png" +dest_files=["res://.godot/imported/embedded.png-29390948772209a603567d24f8766495.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/src/update/assets/fonts/LICENSE.txt b/addons/gdUnit4/src/update/assets/fonts/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/addons/gdUnit4/src/update/assets/fonts/README.txt b/addons/gdUnit4/src/update/assets/fonts/README.txt new file mode 100644 index 0000000..b34e21b --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/README.txt @@ -0,0 +1,77 @@ +Roboto Mono Variable Font +========================= + +This download contains Roboto Mono as both variable fonts and static fonts. + +Roboto Mono is a variable font with this axis: + wght + +This means all the styles are contained in these files: + RobotoMono-VariableFont_wght.ttf + RobotoMono-Italic-VariableFont_wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Roboto Mono: + static/RobotoMono-Thin.ttf + static/RobotoMono-ExtraLight.ttf + static/RobotoMono-Light.ttf + static/RobotoMono-Regular.ttf + static/RobotoMono-Medium.ttf + static/RobotoMono-SemiBold.ttf + static/RobotoMono-Bold.ttf + static/RobotoMono-ThinItalic.ttf + static/RobotoMono-ExtraLightItalic.ttf + static/RobotoMono-LightItalic.ttf + static/RobotoMono-Italic.ttf + static/RobotoMono-MediumItalic.ttf + static/RobotoMono-SemiBoldItalic.ttf + static/RobotoMono-BoldItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (LICENSE.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them freely in your products & projects - print or digital, +commercial or otherwise. However, you can't sell the fonts on their own. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Bold.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Bold.ttf new file mode 100644 index 0000000..900fce6 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Bold.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Bold.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Bold.ttf.import new file mode 100644 index 0000000..13b5eac --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Bold.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dgpj1y3a73vc" +path="res://.godot/imported/RobotoMono-Bold.ttf-ea008af97d359b7630bd271235703cae.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Bold.ttf" +dest_files=["res://.godot/imported/RobotoMono-Bold.ttf-ea008af97d359b7630bd271235703cae.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-BoldItalic.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-BoldItalic.ttf new file mode 100644 index 0000000..4bfe29a Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-BoldItalic.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-BoldItalic.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-BoldItalic.ttf.import new file mode 100644 index 0000000..361617a --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-BoldItalic.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cnrsmyjdnlikm" +path="res://.godot/imported/RobotoMono-BoldItalic.ttf-6e10905211cda810d470782293480777.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-BoldItalic.ttf" +dest_files=["res://.godot/imported/RobotoMono-BoldItalic.ttf-6e10905211cda810d470782293480777.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLight.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLight.ttf new file mode 100644 index 0000000..d535884 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLight.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLight.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLight.ttf.import new file mode 100644 index 0000000..161de55 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLight.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://c8ey5njg4eh6d" +path="res://.godot/imported/RobotoMono-ExtraLight.ttf-c8ac954f2ab584e7652e58ccd95cc705.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLight.ttf" +dest_files=["res://.godot/imported/RobotoMono-ExtraLight.ttf-c8ac954f2ab584e7652e58ccd95cc705.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLightItalic.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLightItalic.ttf new file mode 100644 index 0000000..b28960a Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLightItalic.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLightItalic.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLightItalic.ttf.import new file mode 100644 index 0000000..7a2ef06 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLightItalic.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://pghouxn0ujr7" +path="res://.godot/imported/RobotoMono-ExtraLightItalic.ttf-06133dd8b521ead6203b317979387344.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ExtraLightItalic.ttf" +dest_files=["res://.godot/imported/RobotoMono-ExtraLightItalic.ttf-06133dd8b521ead6203b317979387344.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Italic.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Italic.ttf new file mode 100644 index 0000000..4ee4dc4 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Italic.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Italic.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Italic.ttf.import new file mode 100644 index 0000000..4da9f15 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Italic.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://hp3750m8e3nq" +path="res://.godot/imported/RobotoMono-Italic.ttf-328fe6d9b2ac5d629c43c335b916d307.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Italic.ttf" +dest_files=["res://.godot/imported/RobotoMono-Italic.ttf-328fe6d9b2ac5d629c43c335b916d307.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Light.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Light.ttf new file mode 100644 index 0000000..276af4c Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Light.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Light.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Light.ttf.import new file mode 100644 index 0000000..eb2eaaf --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Light.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dm1xiq8pmd6xk" +path="res://.godot/imported/RobotoMono-Light.ttf-638f745780c834176c3bf9969f0e408e.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Light.ttf" +dest_files=["res://.godot/imported/RobotoMono-Light.ttf-638f745780c834176c3bf9969f0e408e.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-LightItalic.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-LightItalic.ttf new file mode 100644 index 0000000..a2801c2 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-LightItalic.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-LightItalic.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-LightItalic.ttf.import new file mode 100644 index 0000000..64afc1e --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-LightItalic.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://crphq80yxhgic" +path="res://.godot/imported/RobotoMono-LightItalic.ttf-473f0d613e289d058b8c392d0c5242bc.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-LightItalic.ttf" +dest_files=["res://.godot/imported/RobotoMono-LightItalic.ttf-473f0d613e289d058b8c392d0c5242bc.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Medium.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Medium.ttf new file mode 100644 index 0000000..8461be7 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Medium.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Medium.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Medium.ttf.import new file mode 100644 index 0000000..26c6d94 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Medium.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://csdprnrpwr3xp" +path="res://.godot/imported/RobotoMono-Medium.ttf-f165ecef77d89557a95acac0927f13c4.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Medium.ttf" +dest_files=["res://.godot/imported/RobotoMono-Medium.ttf-f165ecef77d89557a95acac0927f13c4.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-MediumItalic.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-MediumItalic.ttf new file mode 100644 index 0000000..a3bfaa1 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-MediumItalic.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-MediumItalic.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-MediumItalic.ttf.import new file mode 100644 index 0000000..bb7e6b3 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-MediumItalic.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cdxcb7jq16o5k" +path="res://.godot/imported/RobotoMono-MediumItalic.ttf-40c40d791914284c8092585e839f0cd1.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-MediumItalic.ttf" +dest_files=["res://.godot/imported/RobotoMono-MediumItalic.ttf-40c40d791914284c8092585e839f0cd1.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Regular.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Regular.ttf new file mode 100644 index 0000000..7c4ce36 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Regular.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Regular.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Regular.ttf.import new file mode 100644 index 0000000..4fce311 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Regular.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://ck2sp0iypcks" +path="res://.godot/imported/RobotoMono-Regular.ttf-f5a7315540116b55ba9e010120cbfb0c.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Regular.ttf" +dest_files=["res://.godot/imported/RobotoMono-Regular.ttf-f5a7315540116b55ba9e010120cbfb0c.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBold.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBold.ttf new file mode 100644 index 0000000..15ee6c6 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBold.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBold.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBold.ttf.import new file mode 100644 index 0000000..2bd53b8 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBold.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://bexpf232jnjbc" +path="res://.godot/imported/RobotoMono-SemiBold.ttf-6012d0b71d40b9767a7b6a480fe0d4b7.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBold.ttf" +dest_files=["res://.godot/imported/RobotoMono-SemiBold.ttf-6012d0b71d40b9767a7b6a480fe0d4b7.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBoldItalic.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBoldItalic.ttf new file mode 100644 index 0000000..8e21497 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBoldItalic.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBoldItalic.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBoldItalic.ttf.import new file mode 100644 index 0000000..831001f --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBoldItalic.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://xuc8ovbe0rku" +path="res://.godot/imported/RobotoMono-SemiBoldItalic.ttf-12b525223c8f2dfb78bca4e7ecaf3ca5.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-SemiBoldItalic.ttf" +dest_files=["res://.godot/imported/RobotoMono-SemiBoldItalic.ttf-12b525223c8f2dfb78bca4e7ecaf3ca5.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Thin.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Thin.ttf new file mode 100644 index 0000000..ee8a3fd Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Thin.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Thin.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Thin.ttf.import new file mode 100644 index 0000000..90e7b87 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Thin.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cnc1pdajlxyxp" +path="res://.godot/imported/RobotoMono-Thin.ttf-a3a6620deea1a01e153a2a60c778e675.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-Thin.ttf" +dest_files=["res://.godot/imported/RobotoMono-Thin.ttf-a3a6620deea1a01e153a2a60c778e675.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ThinItalic.ttf b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ThinItalic.ttf new file mode 100644 index 0000000..40b01e4 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ThinItalic.ttf differ diff --git a/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ThinItalic.ttf.import b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ThinItalic.ttf.import new file mode 100644 index 0000000..3b10577 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ThinItalic.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cvh21iixbcfww" +path="res://.godot/imported/RobotoMono-ThinItalic.ttf-e9ceff3e4cdfbfedd19dbb3d3bba724a.fontdata" + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/fonts/static/RobotoMono-ThinItalic.ttf" +dest_files=["res://.godot/imported/RobotoMono-ThinItalic.ttf-e9ceff3e4cdfbfedd19dbb3d3bba724a.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/gdUnit4/src/update/assets/horizontal-line2.png b/addons/gdUnit4/src/update/assets/horizontal-line2.png new file mode 100644 index 0000000..66aa098 Binary files /dev/null and b/addons/gdUnit4/src/update/assets/horizontal-line2.png differ diff --git a/addons/gdUnit4/src/update/assets/horizontal-line2.png.import b/addons/gdUnit4/src/update/assets/horizontal-line2.png.import new file mode 100644 index 0000000..949745c --- /dev/null +++ b/addons/gdUnit4/src/update/assets/horizontal-line2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgaa5faajesgv" +path="res://.godot/imported/horizontal-line2.png-92618e6ee5cc9002847547a8c9deadbc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/horizontal-line2.png" +dest_files=["res://.godot/imported/horizontal-line2.png-92618e6ee5cc9002847547a8c9deadbc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/src/update/assets/progress-background.png b/addons/gdUnit4/src/update/assets/progress-background.png new file mode 100644 index 0000000..670013a Binary files /dev/null and b/addons/gdUnit4/src/update/assets/progress-background.png differ diff --git a/addons/gdUnit4/src/update/assets/progress-background.png.import b/addons/gdUnit4/src/update/assets/progress-background.png.import new file mode 100644 index 0000000..3f105e8 --- /dev/null +++ b/addons/gdUnit4/src/update/assets/progress-background.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwxuep3lbnu3p" +path="res://.godot/imported/progress-background.png-20022b3af2be583c006365edbc69d914.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/src/update/assets/progress-background.png" +dest_files=["res://.godot/imported/progress-background.png-20022b3af2be583c006365edbc69d914.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/tmp-update/141b5527-168a-4745-91ce-2c8d9112cda1.png b/addons/gdUnit4/tmp-update/141b5527-168a-4745-91ce-2c8d9112cda1.png new file mode 100644 index 0000000..fa4ea3a Binary files /dev/null and b/addons/gdUnit4/tmp-update/141b5527-168a-4745-91ce-2c8d9112cda1.png differ diff --git a/addons/gdUnit4/tmp-update/141b5527-168a-4745-91ce-2c8d9112cda1.png.import b/addons/gdUnit4/tmp-update/141b5527-168a-4745-91ce-2c8d9112cda1.png.import new file mode 100644 index 0000000..ec76c84 --- /dev/null +++ b/addons/gdUnit4/tmp-update/141b5527-168a-4745-91ce-2c8d9112cda1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bggi0yppobxd0" +path="res://.godot/imported/141b5527-168a-4745-91ce-2c8d9112cda1.png-958ae610a7021f1f337f6621dfee15f2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/tmp-update/141b5527-168a-4745-91ce-2c8d9112cda1.png" +dest_files=["res://.godot/imported/141b5527-168a-4745-91ce-2c8d9112cda1.png-958ae610a7021f1f337f6621dfee15f2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/gdUnit4/tmp-update/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png b/addons/gdUnit4/tmp-update/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png new file mode 100644 index 0000000..66e7d76 Binary files /dev/null and b/addons/gdUnit4/tmp-update/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png differ diff --git a/addons/gdUnit4/tmp-update/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png.import b/addons/gdUnit4/tmp-update/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png.import new file mode 100644 index 0000000..3649358 --- /dev/null +++ b/addons/gdUnit4/tmp-update/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtxivymkccxwr" +path="res://.godot/imported/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png-34d47094b083028668d6aafe5b68cef2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gdUnit4/tmp-update/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png" +dest_files=["res://.godot/imported/fe90f750-e9c6-4ff9-b892-2885f00fd71c.png-34d47094b083028668d6aafe5b68cef2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index 603e31b..aa86e7c 100644 --- a/project.godot +++ b/project.godot @@ -8,6 +8,10 @@ config_version=5 +[animation] + +warnings/check_invalid_track_paths=false + [application] config/name="TinyBuildAdventure" @@ -30,7 +34,11 @@ project/assembly_name="UIAndInteractionTests" [editor_plugins] -enabled=PackedStringArray("res://addons/dialogue_manager/plugin.cfg") +enabled=PackedStringArray("res://addons/dialogue_manager/plugin.cfg", "res://addons/gdUnit4/plugin.cfg") + +[gdunit4] + +settings/test/test_lookup_folder="tests" [global_group]